studio programacion oxygen móviles instalar desarrollo curso aplicaciones java android debugging buildconfig

java - programacion - La mejor forma de incluir el código de depuración?



windowbuilder eclipse oxygen (7)

Estoy programando aplicaciones de Android, y la mejor manera aquí puede ser o no la misma que Java en general.

Simplemente quiero establecer un indicador de depuración que solo ejecutará ciertas partes del código cuando esté configurado en verdadero, equiv a C ++ configurando un preprocesador #define DEBUG y usando #ifdef DEBUG.

¿Hay alguna forma aceptada o mejor para lograr esto en Java?

En este momento solo voy a establecer una variable en mi objeto Aplicación, pero no me imagino que esta es la mejor manera.


Creo que escribir pruebas es una alternativa mejor que agregar el código DEBUG.

Mi punto es que cuando escribes la prueba para algún componente / método / clase no contaminas tu código fuente original con algún código de depuración redundante.


En lugar de usar su propia bandera, puede usar la bandera establecida automáticamente por ADT, como esta:

final static int appFlags = context.getApplicationInfo().flags; final static boolean isDebug = (appFlags & ApplicationInfo.FLAG_DEBUGGABLE) != 0

El bit FLAG_DEBUGGABLE se establece automáticamente en verdadero o falso, según el atributo "depurable" de la aplicación (establecido en AndroidManifest.xml). La última versión de ADT (versión 8) establece automáticamente este atributo para usted cuando no exporta un paquete firmado.

Por lo tanto, no tiene que recordar configurar / restablecer su propio marcador personalizado.

Puedes leer más en este hilo .


Esa es la forma en que lo hago:

// in some.class.with.Constants public static final boolean DEV_MODE = true; // in some other class import static some.class.with.Constants.DEV_MODE; if(DEV_MODE){ Log.d(''sometag'', ''somemessage''); }


Esto funciona para mí con el código if (BuildConfig.DEBUG) , usando la clase BuildConfig . Este es un código seguro y fácil de hacer. Tenga cuidado al usar este estilo de código. No lo use de modo que haya 2 diferentes ramas distintas de código, entre las versiones Release y Debug . Si lo hace, podría invalidar la prueba de la aplicación para la versión de lanzamiento. Para mí, lo he usado solo para omitir la llamada de mensajes de Log .

Más detalles sobre esta clase BuildConfig @ Build System Concepts .


La revisión 17 de las herramientas de SDK (marzo de 2012) introdujo una forma de imitar el #ifdef DEBUG de C

De las notas generales :

Se agregó una función que le permite ejecutar algunos códigos solo en modo de depuración. Las compilaciones ahora generan una clase llamada BuildConfig que contiene una constante DEBUG que se establece automáticamente de acuerdo con su tipo de compilación. Puede verificar la constante (BuildConfig.DEBUG) en su código para ejecutar funciones de solo depuración.


Sugiero usar la API incorporada de Android BuildConfig

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


if ( Debug.isDebuggerConnected() ) { // debug stuff }