studio programacion para libros libro edición desarrollo desarrollar aprende aplicaciones java android

java - programacion - ¿Cómo verificar programáticamente si la aplicación se está ejecutando en modo de depuración o no?



manual de programacion android pdf (4)

Debo identificar en algún lugar de mi aplicación si mi aplicación se está ejecutando en modo de depuración o en modo directo. ¿Hay alguna función o código disponible para verificarlo? que devuelve verdadero / falso en cualquier caso encendido / apagado. si es así, ayúdenme. Gracias por adelantado.


En el caso de que el "modo en vivo" signifique firmado para su uso en Play Store, puede diferenciar entre los 2 estados al verificar el valor de BuildConfig.DEBUG. Google ha mostrado un video sobre esto here


La respuesta que @ ImOrtality proporciona es la correcta:

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

(de esta publicación del blog de Google )

( ACTUALIZACIÓN : probablemente el &= debe ser justo & en la expresión anterior, aunque &= es lo que Google tiene en su publicación de blog)

gracias por la cooperación, pero no está funcionando en mi caso

Siento escuchar eso. Por supuesto, desde que explicaste que "no trabajar en mi caso" es algo que elegiste omitir, no puedo ayudarte más.


No queda claro a partir de la pregunta si el modo de depuración se refiere a:

  1. Si la aplicación es depurable o no
  2. Si la aplicación se está depurando actualmente (por ejemplo, sobre ADB)

El primero está cubierto por la respuesta de CommonsWare :

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

El segundo es:

boolean isBeingDebugged = android.os.Debug.isDebuggerConnected()

https://developer.android.com/reference/android/os/Debug.html#isDebuggerConnected()


if (BuildConfig.DEBUG) { // here be thine debug statement }

Funciona muy bien en eclipse y Android Studio.

Los otros mencionados aquí a menudo arrojan excepciones de tiempo de ejecución para mí