Как получить журналы сбоев Android?

У меня есть приложение, которое не находится на рынке (подписанное с сертификатом отладки), но хотел бы получить данные журнала сбоев, когда мое приложение вылетает из строя. Где я могу найти журнал, почему мое приложение разбилось?

Solutions Collecting From Web of "Как получить журналы сбоев Android?"

Если ваше приложение загружается другими людьми и сбой на удаленных устройствах, вы можете захотеть заглянуть в библиотеку отчетов об ошибках Android (ссылка на это сообщение SO ). Если это только на вашем собственном локальном устройстве, вы можете использовать LogCat. Даже если устройство не было подключено к главной машине, когда произошел сбой, подключение устройства и выдача команды adb logcat будет загружать всю историю журнала (по крайней мере, в той степени, в которой она буферизована, что обычно является loooot данных журнала , Это просто не бесконечно). Вы можете ответить на любой из этих вариантов? Если вы не можете попытаться выяснить, что вы ищете немного больше?

Способ сделать это – реализовать интерфейс Thread.UncaughtExceptionHandler и передать его в Thread.setDefaultUncaughtExceptionHandler() в начале onCreate() вашей активности. Вот класс реализации TopExceptionHandler .

 public class TopExceptionHandler implements Thread.UncaughtExceptionHandler { private Thread.UncaughtExceptionHandler defaultUEH; private Activity app = null; public TopExceptionHandler(Activity app) { this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler(); this.app = app; } public void uncaughtException(Thread t, Throwable e) { StackTraceElement[] arr = e.getStackTrace(); String report = e.toString()+"\n\n"; report += "--------- Stack trace ---------\n\n"; for (int i=0; i<arr.length; i++) { report += " "+arr[i].toString()+"\n"; } report += "-------------------------------\n\n"; // If the exception was thrown in a background thread inside // AsyncTask, then the actual exception can be found with getCause report += "--------- Cause ---------\n\n"; Throwable cause = e.getCause(); if(cause != null) { report += cause.toString() + "\n\n"; arr = cause.getStackTrace(); for (int i=0; i<arr.length; i++) { report += " "+arr[i].toString()+"\n"; } } report += "-------------------------------\n\n"; try { FileOutputStream trace = app.openFileOutput("stack.trace", Context.MODE_PRIVATE); trace.write(report.getBytes()); trace.close(); } catch(IOException ioe) { // ... } defaultUEH.uncaughtException(t, e); } } 

Примечание. Мы разрешаем платформе Android defaultHUE обрабатывать ее.

В верхней части вашего регистра активности зарегистрируйте экземпляр класса выше:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Thread.setDefaultUncaughtExceptionHandler(new TopExceptionHandler(this)); ... 

Этот обработчик сохраняет трассировку в файле. Когда ReaderScope перезапустится в следующий раз, он обнаруживает файл и запрашивает пользователя, хочет ли он отправить его разработчику.

Чтобы отправить по электронной почте трассировку стека, выполните следующий код, чтобы упаковать его по электронной почте.

 try { BufferedReader reader = new BufferedReader( new InputStreamReader(ReaderScopeActivity.this.openFileInput("stack.trace"))); while((line = reader.readLine()) != null) { trace += line+"\n"; } } catch(FileNotFoundException fnfe) { // ... } catch(IOException ioe) { // ... } Intent sendIntent = new Intent(Intent.ACTION_SEND); String subject = "Error report"; String body = "Mail this to appdeveloper@gmail.com: " + "\n" + trace + "\n"; sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"readerscope@altcanvas.com"}); sendIntent.putExtra(Intent.EXTRA_TEXT, body); sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject); sendIntent.setType("message/rfc822"); ReaderScopeActivity.this.startActivity(Intent.createChooser(sendIntent, "Title:")); ReaderScopeActivity.this.deleteFile("stack.trace"); 

Или вы также можете использовать ACRA Error Reporting System.Just Включить ACRA.jar в свои проекты и использовать приведенный ниже фрагмент кода перед объявлением класса активности запуска

 @ReportsCrashes(formKey = "", mailTo = "abc@gmail.com;def@yahoo.com", mode = ReportingInteractionMode.SILENT) 

Вы можете использовать Apphance. Это кросс-платформенный сервис (теперь в основном Android, iOS с другими платформами на своем пути), который позволяет отлаживать удаленно любое мобильное устройство (Android, iOS сейчас – другие в разработке). Это намного больше, чем просто краш-лог, на самом деле это гораздо больше: протоколирование, отчетность о проблемах с помощью тестеров, краш-логов. Для интеграции требуется около 5 минут. В настоящее время вы можете запросить доступ к закрытой бета-версии.

Отказ от ответственности: я технический директор Polidea, компании, стоящей за Apphance и ее создателем.

Обновление: Apphance больше не закрывается бета-версией! Обновление 2: Apphance доступен как часть предложения http://applause.com

Это от http://www.herongyang.com/Android/Debug-adb-logcat-Command-Debugging.html

Вы можете использовать adb:

 adb logcat AndroidRuntime:E *:S 

Если вы используете Eclipse, убедитесь, что вы используете debug и не запускаете. Убедитесь, что вы находитесь в режиме отладки (вверху справа). Вам может потребоваться несколько раз нажать «Возобновить» (F8) для печати журнала. Журнал сбоев будет находиться в окне Logcat внизу – двойной щелчок для полноэкранного режима и убедитесь, что вы прокрутите страницу вниз. Вы увидите красный текст для ошибок, трассировка аварии будет чем-то вроде

 09-04 21:35:15.228: ERROR/AndroidRuntime(778): Uncaught handler: thread main exiting due to uncaught exception 09-04 21:35:15.397: ERROR/AndroidRuntime(778): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dazlious.android.helloworld/com.dazlious.android.helloworld.main}: java.lang.ArrayIndexOutOfBoundsException 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.ActivityThread.access$1800(ActivityThread.java:112) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.os.Handler.dispatchMessage(Handler.java:99) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.os.Looper.loop(Looper.java:123) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.ActivityThread.main(ActivityThread.java:3948) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at java.lang.reflect.Method.invokeNative(Native Method) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at java.lang.reflect.Method.invoke(Method.java:521) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at dalvik.system.NativeStart.main(Native Method) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): Caused by: java.lang.ArrayIndexOutOfBoundsException 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at com.example.android.helloworld.main.onCreate(main.java:13) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): ... 11 more 

Важными частями этого

 09-04 21:35:15.397: ERROR/AndroidRuntime(778): Caused by: java.lang.ArrayIndexOutOfBoundsException 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at com.example.android.helloworld.main.onCreate(main.java:13) 

Те говорят нам, что это исключение из диапазона исключений в строке 13 main.java в методе onCrate.

Вот еще одно решение для Crash Log.

На рынке Android есть инструмент под названием «Crash Collector»

Проверьте следующую ссылку для получения дополнительной информации

http://kpbird.blogspot.com/2011/08/android-application-crash-logs.html

Вы можете использовать ACRA. Включая эту библиотеку в свои проекты и настраивая ее, вы можете получать (в свой адрес электронной почты или gdocs) свои отчеты о сбоях. Извините за мой плохой английский.

Если вы ищете базовый инструмент отчетов о сбоях , попробуйте использовать crashlytics .

Если вам нужен более продвинутый инструмент отчетности, Checkout Gryphonet . Он регистрирует все произошедшие сбои вместе с точной строкой кода, которая вызвала крах вместе с автоматическими маркерами, которые показывают вам шаги, которые пользователь предпринял перед сбоем и многое другое.

Удачи!

Используйте acra crash reporter для приложения для Android. Acra lib

Вы также можете использовать библиотеку crashcatcher

Если вы просто ищете журнал сбоев, когда ваш телефон подключен к компьютеру, используйте представление DDMS в Eclipse, и отчет находится прямо в LogCat в DDMS, когда приложение отключается во время отладки.

Я создал эту библиотеку для решения всех ваших проблем. Crash Reporter – удобный инструмент для захвата всех ваших аварий и регистрации их на локальном устройстве

Просто добавьте эту зависимость, и вам хорошо идти.

 compile 'com.balsikandar.android:crashreporter:1.0.1' 

Найдите все свои сбои на устройстве локально и исправьте их в удобное для вас время. Сбои сохраняются с использованием формата даты и времени, который легко отслеживать. Кроме того, он также предоставляет API для регистрации «Записанные исключения», используя метод ниже.

 CrashRepoter.logException(Exception e) 

Попробуйте приложение для журнала Carsh от android.

Используйте ссылку для загрузки приложения.