tutorial studio flavors flavordimensions flavor configurar actualizar android android-build-type

android - studio - ¿Cómo detecto si estoy en modo de liberación o depuración?



flavordimensions android (6)

¿Cómo puedo detectar en mi código que estoy en modo Release o en modo Debug?


Alternativamente, puede diferenciar usando BuildConfig.BUILD_TYPE;

Si está ejecutando la construcción de depuración BuildConfig.BUILD_TYPE.equals("debug"); devuelve verdadero Y para la versión de compilación BuildConfig.BUILD_TYPE.equals("release"); devuelve verdadero


Debido a los comentarios mixtos sobre BuildConfig.DEBUG , usé lo siguiente para deshabilitar crashlytics (y análisis) en el modo de depuración:

actualizar /app/build.gradle

android { compileSdkVersion 25 buildToolsVersion "25.0.1" defaultConfig { applicationId "your.awesome.app" minSdkVersion 16 targetSdkVersion 25 versionCode 100 versionName "1.0.0" buildConfigField ''boolean'', ''ENABLE_CRASHLYTICS'', ''true'' } buildTypes { debug { debuggable true minifyEnabled false buildConfigField ''boolean'', ''ENABLE_CRASHLYTICS'', ''false'' } release { debuggable false minifyEnabled true proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' } } }

luego, en tu código detectas el indicador ENABLE_CRASHLYTICS siguiente manera:

if (BuildConfig.ENABLE_CRASHLYTICS) { // enable crashlytics and answers (Crashlytics by default includes Answers) Fabric.with(this, new Crashlytics()); }

usa el mismo concepto en tu aplicación y cambia el nombre de ENABLE_CRASHLYTICS a lo que quieras. Me gusta este enfoque porque puedo ver la bandera en la configuración y puedo controlar la bandera.


Estoy usando esta solución en caso de que descubra que mi aplicación se está ejecutando en la versión de depuración.

if (BuildConfig.BUILD_TYPE.equals("Debug")){ //Do something }


Intenta lo siguiente:

if (BuildConfig.DEBUG) { //It''s not a release version. }

Se toma de la publicación de Bundells desde here


Sí, no tendrás problemas con el uso de:

boolean isDebuggable = ( 0 != ( getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE ) );

A menos que esté importando la clase BuildConfig incorrecta. Asegúrese de que está haciendo referencia a la clase BuildConfig de su proyecto, no de ninguna de sus bibliotecas de dependencia.


La solución más simple y mejor a largo plazo, es utilizar BuildConfig.DEBUG . Este es un valor boolean que será true para una construcción de depuración, false contrario:

if (BuildConfig.DEBUG) { // do something for a debug build }

Ha habido informes de que este valor no es 100% confiable de las compilaciones basadas en Eclipse, aunque personalmente no he encontrado ningún problema, por lo que no puedo decir qué tan importante es el problema.

Si está utilizando Android Studio, o si está utilizando Gradle desde la línea de comandos, puede agregar sus propias cosas a BuildConfig o, de lo contrario, modificar los tipos de compilación de debug y release para ayudar a distinguir estas situaciones en el tiempo de ejecución.

La solución de Argumento ilegal se basa en el valor de la bandera de android:debuggable en el manifiesto. Si así es como desea distinguir una compilación de "depuración" de una compilación de "lanzamiento", entonces, por definición, esa es la mejor solución. Sin embargo, tenga en cuenta que en el futuro, la debuggable es realmente un concepto independiente de lo que Gradle / Android Studio considera una compilación de "depuración". Cualquier tipo de compilación puede optar por establecer el indicador de debuggable en cualquier valor que tenga sentido para ese desarrollador y para ese tipo de compilación.