Как я могу определить в своем коде, что я нахожусь в режиме выпуска или в режиме отладки?
Как я могу определить в своем коде, что я нахожусь в режиме выпуска или в режиме отладки?
Самое простое и лучшее долгосрочное решение - использовать BuildConfig.DEBUG
. Это boolean
значение true
для отладочной сборки, в false
противном случае:
if (BuildConfig.DEBUG) {
// do something for a debug build
}
Поступали сообщения о том, что это значение не является на 100% надежным в сборках на основе Eclipse, хотя лично я не сталкивался с проблемой, поэтому не могу сказать, насколько серьезной является проблема.
Если вы используете Android Studio или Gradle из командной строки, вы можете добавить свои собственные вещи BuildConfig
или иным образом настроить типы debug
и release
сборки, чтобы помочь различать эти ситуации во время выполнения.
Решение от Illegal Argument основано на значении android:debuggable
флага в манифесте. Если именно так вы хотите отличить «отладочную» сборку от «выпускной», то по определению это лучшее решение. Однако имейте в виду, что в будущем debuggable
флаг действительно будет независимой концепцией от того, что Gradle / Android Studio считает «отладочной» сборкой. Любой тип сборки может установить debuggable
флаг в любое значение, которое имеет смысл для этого разработчика и для этого типа сборки.
BuildConfig
находится в пакете вашего приложения, напримерimport com.mycompany.myapp.BuildConfig;
public static final boolean DEBUG = Boolean.parseBoolean("true");
отладочную сборку. Хотя это странно способ набораDEBUG
кtrue
, он должен работать. Если вы видите это в одном из тестовых выпусков 1.3.0 или если у вас есть воспроизводимый тестовый пример для 1.2.2, пожалуйста, сообщите об этом . Я не вижу каких-либо нерешенных проблем, сообщающих об этой проблеме.Попробуйте следующее:
Котлин:
Это взято из поста Bundells отсюда
источник
getApplicationInfo().flags
работы?Да, у вас не будет проблем с использованием:
Если вы не импортируете неправильный класс BuildConfig. Убедитесь, что вы ссылаетесь на класс BuildConfig вашего проекта, а не на любую из ваших библиотек зависимостей.
источник
Из-за смешанных комментариев о
BuildConfig.DEBUG
, я использовал следующее, чтобы отключить сбои (и аналитику) в режиме отладки:обновить /app/build.gradle
затем в своем коде вы обнаруживаете
ENABLE_CRASHLYTICS
флаг следующим образом:используйте ту же концепцию в своем приложении и переименуйте
ENABLE_CRASHLYTICS
все, что вы хотите. Мне нравится этот подход, потому что я вижу флаг в конфигурации и могу контролировать флаг.источник
В качестве альтернативы, вы можете различить, используя BuildConfig.BUILD_TYPE;
Если вы используете отладочную сборку,
BuildConfig.BUILD_TYPE.equals("debug");
возвращает true. А для релиза buildBuildConfig.BUILD_TYPE.equals("release");
возвращает true.источник
true
.Я использую это решение на случай, если узнаю, что мое приложение работает на отладочной версии.
источник
if (BuildConfig.DEBUG) {}
в зависимом модуле Gradle, который (конечно) не имел ссылки на файл build.gradle приложения - это вызвало неправильное распознавание режима отладки.if (BuildConfig.BUILD_TYPE.equals("Debug")){ }
Исправлена проблема. СпасибоУбедитесь, что вы импортируете правильный класс BuildConfig. И да, у вас не будет проблем с использованием:
источник