В последней версии ADT (r17) была добавлена сгенерированная константа, BuildConfig.DEBUG
которая устанавливается в соответствии с типом сборки. У меня проблема в том, что для него никогда не устанавливается значение false, я ожидал, что это изменится при выполнении «Android Tools -> Export Signed Application Package», но это не для меня.
Итак, как мне изменить тип сборки?
Добавлена функция, позволяющая запускать некоторый код только в режиме отладки. Сборки теперь создают класс с именем BuildConfig, содержащий константу DEBUG, которая автоматически устанавливается в соответствии с типом сборки. Вы можете проверить константу (BuildConfig.DEBUG) в своем коде, чтобы запускать функции только для отладки
Ответы:
В настоящее время вы можете добиться правильного поведения, отключив «Автоматическая сборка», очистив проект и затем экспортируя его через «Инструменты Android -> Экспорт подписанного пакета приложения». При запуске приложение
BuildConfig.DEBUG
должно быть ложным.источник
В Eclipse я всегда отключаю параметр «Создавать автоматически» перед экспортом приложения в выпуске. Потом чищу проект и экспортирую. В противном случае он начинает компиляцию в режиме отладки, и тогда значение BuildConfig.DEBUG может быть неправильным.
В Android Studio я просто добавляю свою собственную переменную в build.gradle:
Когда я создаю проект, BuildConfig.java создается следующим образом:
Затем в моем коде я могу использовать:
Я рекомендую очистить после переключения сборки отладки / выпуска.
источник
Не работает должным образом:
Проблема 27940 : BuildConfig.DEBUG имеет значение "true" для экспортированного пакета приложения.
Жаль, что они иногда выпускают глючные функции.
источник
Это работает, но обратите внимание, что файл кода никогда не изменяется, даже при экспорте подписанного файла. В процессе экспорта значение этой переменной изменяется на false, что может создать ложное впечатление, что она не работает. Я тестировал это с помощью таких операторов регистрации, как
При тестировании мои операторы журнала больше не производят никакого вывода.
источник
Проверьте
imports
, иногда BuildConfig случайно импортируется из любого класса библиотеки. Например:В этом случае BuildConfig.DEBUG всегда будет возвращать false ;
В этом случае BuildConfig.DEBUG вернет ваш реальный вариант сборки .
ps Я просто копирую это из своего ответа здесь: BuildConfig.DEBUG всегда ложно при создании проектов библиотеки с помощью gradle
источник
android.support.compat
. Я думаю, это еще одна причина просто определить свое собственное поле с другим именем.Из раздела "Подготовка к выпуску" :
Больше информации по ссылке.
источник
Решение для меня:
Это работа в r20
источник
Я хотел бы предложить простой обходной путь, если вы используете proguard во время экспорта APK.
Proguard предоставляет способ удалить вызовы определенных функций в режиме выпуска. Любые вызовы журналов отладки можно удалить с помощью следующих настроек в
proguard-project.txt
.И настройка оптимизации
project.properties
.При этом вам не нужно беспокоиться о каких-либо ненужных вычислениях String, передаваемых в журнал отладки, на который указал @Jeremyfa. Вычисления просто удаляются в сборке релиза.
Таким образом, обходной путь для BuildConfig.DEBUG использует ту же функцию proguard, как показано ниже.
И после установки в
proguard-project.txt
.Я бы предпочел использовать это, чтобы отключить эту
Build Automatically
опцию, потому что это не зависит от индивидуальных настроек IDE конструктора, а сохраняется как зафиксированный файл, который совместно используется разработчиками.источник
Не работает, насколько я понял ( проблема Android 22241 )
У меня были проблемы с проектом (при работе с Eclipse), эта константа не была установлена в значение true при экспорте подписанного APK моего проекта :(
Хотел бы услышать, что это работает, хотя
источник
хороший способ - создать свой собственный класс:
источник
Я видел странное поведение, связанное с тем, что значения в BuildConfig установлены на их окончательные значения. Возможно, это связано с вашей проблемой.
Простое объяснение состоит в том, что значения по умолчанию устанавливаются изначально до запуска Proguard, а затем после запуска Proguard файл BuildConfig восстанавливается с правильными значениями. Однако Proguard к этому моменту уже оптимизировал ваш код, и у вас есть проблемы.
Вот ошибка, которую я создал против Gradle. https://code.google.com/p/android/issues/detail?id=182449
источник