Подтвердить что ты не робот

Журналы отладки Android действительно удалены во время выполнения?

Документация для Android (http://developer.android.com/reference/android/util/Log.html):

Verbose никогда не следует компилировать в приложение, кроме как во время разработки. Журналы отладки компилируются, но удаляются во время выполнения. Журналы ошибок, предупреждений и информации всегда сохраняются

Я просто сделал тест. В своей деятельности я писал:

private static String test(String what) {
    Log.e("test", "I am called with argument: " + what);
    return what;
}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.v("test", "log level: " + test("v"));
    Log.d("test", "log level: " + test("d"));
    Log.i("test", "log level: " + test("i"));
    Log.w("test", "log level: " + test("w"));
    Log.e("test", "log level: " + test("e"));
}

Я экспортировал свой проект как файл apk, затем я установил этот apk на свой телефон. Я запускаю это приложение на своем телефоне, затем смотрел журналы. Там я увидел, что тест функции был вызван все пять раз, и все пять вызовов функций Log.something привели к тому, что его текст был записан в журналы.

Итак, вызовы Log.d действительно удалены во время выполнения?

4b9b3361

Ответ 1

Этот вопрос был отправлен здесь и решение было предоставлено в ADT 17.0.0 в марте 2012 года.

Добавлена ​​функция, позволяющая запускать некоторый код только в режиме отладки. Builds теперь генерирует класс BuildConfig, содержащий константу DEBUG, которая автоматически устанавливается в соответствии с вашим типом сборки. Вы можете проверить константу (BuildConfig.DEBUG) в своем коде, чтобы запускать только функции отладки.

Ответ 2

Нет. Вы должны сделать это сами. Вы можете сделать свою собственную обертку Log.d следующим образом:

public static void debug(String tag, String msg) {
    if (BuildConfig.DEBUG) {
        Log.d(tag, msg);
    }
}