Как программно определить, выполняется ли отладка моего приложения? - PullRequest
0 голосов
/ 30 ноября 2018

Я ищу способ узнать, работает ли мое приложение в отладчике или работает "нормально", в Android Studio ..

Эти два случая
1. Запустите приложение с помощьюнажав кнопку «Запустить приложение» (зеленая стрелка)
2. Запустите приложение, нажав кнопку «Отладить приложение» (значок шестеренки)

Я хочу вывести более подробную диагностику (используя журнал. *) во время отладки.
Я попытался проверить BuildConfig.DEBUG, но в обоих случаях это ИСТИНА.Я подозреваю, что это связано с тем, что Android Studio подписывает приложение с сертификатом отладки в обоих случаях.

Кто-нибудь знает, как отличить эти два случая во время выполнения?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

«Запустить приложение»

Это установит приложение на ваше устройство / эмулятор

«Отладка приложения»

Это позволит вам отладить функцию, поместив точки останова в ваш код.Это означает, что вы сможете остановить выполнение кода в этой точке и отладить его построчно.Чтобы узнать больше об отладке в Android см. this

Оба приложения являются приложениями отладки.Чтобы узнать больше о типе сборки, прочтите this

0 голосов
/ 30 ноября 2018

обычно можно проверить BuildConfig.DEBUG (или переменную boolean, содержащую его), а затем записать в журнал:

if(BuildConfig.DEBUG) {Log.d("SomeActivity", "debug message");}

см. Документацию ... наиболее подходящую для отладкиis build-config debuggable true/false.

кнопка run не запускает отладчик;Независимо от конфигурации сборки (она просто пропускает все точки останова).

в многомодульных проектах нужно проверять:

(getContext().getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0 

, чтобы различать их, два типа сборки должныбыть настроенным:

android {
    ...
    buildTypes {
        debug {
            ...
            renderscriptDebuggable true
            jniDebuggable true
            debuggable true
        }
        release {
            ...
            renderscriptDebuggable false
            jniDebuggable false
            debuggable false
        }
    }
}

и, чтобы точно ответить на вопрос, существует даже один метод с именем isDebuggerConnected () , который всегда будет возвращать false при нажатии кнопки run (не имеет значения build-config).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...