Intereting Posts
Как получить объект Google Maps внутри фрагмента Будет ли обработчик PostDelayed не запускаться, когда процессор спит? Android HttpUrlConnection делает POST вместо GET Как добавить событие OnClick для пользовательского вида Android Не удается запустить активность на Android через Unity Пользовательский макет уведомлений не работает на Android 2.3 или ниже Сбой приложений для Android для некоторых пользователей при применении преобразования с Picasso Разница между активностью и фрагментацией GetSupportFragmentManager (). FindFragmentById () возвращает null Java.lang.OutOfMemoryError at android.graphics.BitmapFactory.nativeDecodeAsset (собственный метод) Как написать «во власть» и какой-нибудь текст, как показано на Java или Android? Как получить последнюю измененную дату онлайн-файла? Как изменить цвет кнопки цвета при нажатии на Android? Не удалось преобразовать формат Dalvik: невозможно выполнить SDX-инструменты dex 22.3 Как вызвать функцию * после * onPreferenceChange?

Основы использования logcat в разработке Android

Я только начинаю Android, и я не понимаю, как использовать эту вещь.

Я работаю над эмулятором, но, вероятно, буду работать и на реальном устройстве в будущем. Одна из тестируемых программ ( ПОСМОТРЕТЬ ЗДЕСЬ ) зависает, когда она запускается, и другие пользователи предложили мне посмотреть на логарифм. Но logcat на моем компьютере продолжает показывать новый текст и прокручивается. Я не уверен, как искать что-либо во всем этом беспорядке. Иногда он держит прокрутку, когда я даже не тестирую свою программу.

Он показывает вещи, если я вообще что-то делаю в эмуляторе? Эмулятор уже настолько медленный, что сложно определить, какое событие на эмуляторе вызывает какое сообщение.

Кроме того, для новичка, какого уровня многословия достаточно на логарифме? Переход к утверждению не показывает ничего (что, вероятно, логично, поскольку у меня нет утверждений), и поэтому я предположил, что ошибка была, вероятно, наименее сложным, но даже тогда в журнале слишком много сообщений для обработки.

Каков минимальный уровень детализации, который мне нужно установить, и есть ли там какая-либо программа-образец, которая позволяет мне проверить, какое событие в коде создает какой-либо вид сообщения в логарифме? (Я использую logcat в среде IDE)

— РЕДАКТИРОВАТЬ —

Я вижу, что в logcat есть такие сообщения, как эти

08-12 08:24:26.699: I/Choreographer(528): Skipped 57 frames! The application may be doing too much work on its main thread. 08-12 08:25:02.550: I/Choreographer(528): Skipped 33 frames! The application may be doing too much work on its main thread. 08-12 08:25:07.950: I/Choreographer(528): Skipped 37 frames! The application may be doing too much work on its main thread. 08-12 08:25:08.022: E/SoundPool(287): error loading /system/media/audio/ui/Effect_Tick.ogg 08-12 08:25:08.022: W/AudioService(287): Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg 08-12 08:25:08.022: E/SoundPool(287): error loading /system/media/audio/ui/Effect_Tick.ogg 08-12 08:25:08.022: W/AudioService(287): Soundpool could not load file: /system/media/audio/ui/Effect_Tick.ogg 

Это находится в режиме Info, а в режиме подробной версии есть еще более непонятный текст, поэтому я не включил его. Похоже, что он не может найти файл, содержащий звуковой эффект, который будет воспроизводиться при нажатии кнопки «Назад», которую он отображает в журнале. Как удалить такие ненужные сообщения, связанные с пользовательским интерфейсом ОС телефона, и отображать только сообщения, связанные с программой, которую я тестирую, и что вызывает ее зависание до того, как в коде вызывается даже вызов onCreate ()? Я хочу иметь возможность сделать это из IDE на данный момент.

Log.v () – VERBOSE

Log.d () – DEBUG

Log.i () – INFO

Log.w () – WARN

Log.e () – ОШИБКА


Совет. Хорошим соглашением является объявление константы TAG в вашем классе:

 private static final String TAG = "MyActivity"; 

Совет. Не забывайте, что когда вы звоните, как

 Log.e(TAG, "index=" + i); 

Использовать Log.e(); Потому что он показывает вам красный цвет, вы можете легко идентифицировать ошибку во всех журналах


Вы также можете использовать флаттер-журналы в тесте eclipse ниже.

Введите описание изображения здесь

Введите описание изображения здесь

Для более подробной проверки сайта разработчика .

То, что я делаю при работе с приложением с проблемой, – это переключиться в режим ERROR в logcat, а также добавить фильтр для имени пакета моего приложения, например. com.something.blah . Таким образом, я когда-либо видел сообщения об ошибках, связанные с моим приложением.

Конечно, бывают случаи, когда этого недостаточно информации, но к тому времени, когда вам нужна дополнительная информация, вам должно быть удобно работать с логарифмом 🙂

Для ручного ведения журнала (используя Log.* ) Очень уникальная вкладка (что-то вроде ThisIsAVeryUniqueTag1234 ) может сэкономить много времени. Просто фильтруйте этот тег, и это должны быть единственные сообщения, которые вы видите. См. Журнал для получения полной информации о том, как использовать теги и ручное ведение журнала.

 adb -d logcat <your package name>:<log level> *:S 

-d обозначает фактическое устройство, а -e обозначает эмулятор. Если работает более 1 эмулятора, вы можете использовать -s emulator-<emulator number> (например, -s emulator-5558 )

Пример: adb -d logcat com.example.example:I *:S

Или, если вы используете System.out.print для отправки сообщений в журнал, вы можете использовать adb -d logcat System.out:I *:S чтобы показывать только вызовы System.out .

Вы можете найти все уровни журнала и дополнительную информацию здесь: http://developer.android.com/guide/developing/tools/adb.html#logcat

Вы должны использовать Log.<log level>(TAG, message) в вашем коде, где тег может быть чем угодно, но я всегда использую имя пакета.

Пример: Log.i("com.example.example", "message");