Как я могу получить данные о сбоях (по крайней мере, следы стека) из моего приложения для Android? По крайней мере, при работе с моим собственным устройством, полученным по кабелю, но в идеале из любого экземпляра моего приложения, работающего на дикой природе, чтобы я мог улучшить его и сделать его более надежным.
android
crash
stack-trace
Х. Пабло Фернандес
источник
источник
Ответы:
Вы можете попробовать библиотеку ACRA (Application Crash Report для Android) :
Его легко установить в приложении, он легко настраивается и не требует размещения серверного скрипта где-либо ... отчеты отправляются в электронную таблицу Google Doc!
источник
Для примеров приложений и в целях отладки я использую простое решение, которое позволяет мне записать трассировку стека на SD-карту устройства и / или загрузить ее на сервер. Это решение было вдохновлено Project android-remote-stacktrace (в частности, частями сохранения на устройство и загрузки на сервер), и я думаю, что оно решает проблему, упомянутую Soonil. Это не оптимально, но работает, и вы можете улучшить его, если хотите использовать его в производственном приложении. Если вы решили загрузить трассировки стека на сервер, вы можете использовать php script (
index.php
) для их просмотра. Если вам интересно, вы можете найти все источники ниже - один java-класс для вашего приложения и два дополнительных php-скрипта для сервера, на котором размещены загруженные стековые трассировки.В контексте (например, основной вид деятельности), позвоните
CustomExceptionHandler
upload.php
index.php
источник
HttpPost httpPost = new HttpPost(url);
теперь вы должны быть в асинхронной задаче (или обработчике ... в отдельном потоке), если вы нацелены на Honeycomb или более позднююВы также можете попробовать
[BugSense]Причина: перенаправление спама на другой URL . BugSense собирает и анализирует все отчеты о сбоях и дает вам значимые и наглядные отчеты. Это бесплатно и это только 1 строка кода для интеграции.Отказ от ответственности: я соучредитель
источник
В Android 2.2 теперь можно автоматически получать отчеты о сбоях из приложений Android Market:
http://developer.android.com/sdk/android-2.2-highlights.html
источник
С этими исключениями можно справиться
Thread.setDefaultUncaughtExceptionHandler()
, однако, похоже, это мешает Android-методу обработки исключений. Я попытался использовать обработчик такой природы:Тем не менее, даже с перебрасыванием исключений, я не мог получить желаемое поведение, то есть регистрировать исключение, все еще позволяя Android завершить работу компонента, в котором это произошло, поэтому я через некоторое время отказался от него.
источник
Constants.TAG
частью платформы Android? Впервые увидев это. Не могу найти это.Я вижу, что вопрос слишком старый, и надеюсь, что мой ответ будет полезен для других, имеющих такую же проблему ...
Дайте Crashlytics попробовать. Он позволит лучше понять все сбои на всех устройствах, на которых установлено ваше приложение, и отправит вам уведомление по электронной почте. И самое приятное, что он полностью бесплатен в использовании.
источник
Хорошо, я посмотрел предоставленные образцы от Rrainn и Soonil и нашел решение, которое не мешает обработке ошибок.
Я изменил CustomExceptionHandler, чтобы он сохранял исходный UncaughtExceptionHandler из потока, с которым мы связываем новый. В конце нового «uncaughtException» - метода я просто вызываю старую функцию, используя сохраненный UncaughtExceptionHandler.
В классе DefaultExceptionHandler вам нужен sth. нравится:
С этой модификацией кода на http://code.google.com/p/android-remote-stacktrace у вас будет хорошая рабочая база для входа в поле на ваш веб-сервер или на SD-карту.
источник
Консоль разработчиков Google Play фактически дает вам трассировку стека от тех приложений, которые потерпели крах и отправили отчеты, а также имеет очень хорошие диаграммы, чтобы помочь вам увидеть информацию, см. Пример ниже:
источник
Я использую Crittercism для своих приложений для Android и iOS - слышал о них на techcrunch. Очень доволен ими до сих пор!
источник
Я сделал свою собственную версию здесь: http://androidblogger.blogspot.com/2009/12/how-to-improve-your-application-crash.html
Это в основном то же самое, но я использую почту, а не http-соединение для отправки отчета, и, что более важно, я добавил в свой отчет некоторую информацию, такую как версия приложения, версия ОС, модель телефона или доступная память. ,
источник
используйте это, чтобы поймать детали исключения:
сохранить это в базе данных и вести журнал.
источник
Вы также можете использовать для этого целый (простой) сервис, а не только библиотеку. Наша компания только что выпустила сервис для этого: http://apphance.com .
Он имеет простую библиотеку .jar (для Android), которую вы добавляете и интегрируете за 5 минут, а затем библиотека собирает не только информацию о сбоях, но и журналы из запущенного приложения, а также позволяет вашим тестировщикам сообщать о проблемах прямо с устройства, включая весь контекст (ротация устройства, подключено ли оно к вайфай или нет и многое другое). Вы можете просматривать журналы с помощью очень удобной и полезной веб-панели, где вы можете отслеживать сессии с вашим приложением, сбои, журналы, статистику и многое другое. Сервис находится в стадии закрытого бета-тестирования, но вы можете запросить доступ, и мы предоставим его вам очень быстро.
Отказ от ответственности: я технический директор Polidea и один из создателей сервиса.
источник
Спасибо за ресурсы,
Stackoverflow
помогающие мне найти этот ответ.Вы можете найти свои удаленные отчеты о сбоях Android прямо в вашей электронной почте . помните, что вы должны поместить свою электронную почту в класс CustomExceptionHandler .
Необходимые шаги:
1) в onCreate вашей деятельности используйте этот раздел вашего кода.
2) использовать эту переопределенную версию класса CustomExceptionHandler (rrainn), согласно моему phpscript.
источник
В наши дни отчеты Firebase Crash очень популярны и их легче использовать. Пожалуйста, обратитесь по следующей ссылке для получения дополнительной информации: Firebase Crash Reporting
Надеюсь, это поможет вам.
источник
Это очень грубо, но можно запускать logcat где угодно, поэтому быстрый и грязный хак можно добавить в любой блок catch
getRuntime().exec("logcat >> /sdcard/logcat.log");
источник
Существует инструмент, который называется Fabric, это инструмент анализа сбоев, который позволит вам получать отчеты о сбоях, когда приложение развернуто в реальном времени и в процессе разработки. Добавление этого инструмента в ваше приложение также было простым. Когда происходит сбой приложения, отчет о сбое можно просмотреть на панели инструментов fabric.io. Отчет был пойман автоматически. Он не будет запрашивать у пользователя разрешения. Хочет ли он / она отправить отчет об ошибке / сбое. И это совершенно бесплатно ... https://get.fabric.io/
источник
Google Firebase - это новейший (2016) способ Google предоставить вам данные о сбоях / ошибках на вашем телефоне. Включите его в файл build.gradle:
Фатальные сбои регистрируются автоматически, не требуя ввода данных пользователем, и вы можете также регистрировать нефатальные сбои или другие события, например, так:
источник
Есть эта андроид библиотека под названием Шерлок . Это дает вам полный отчет о сбое вместе с информацией об устройстве и приложении. Всякий раз, когда происходит сбой, он отображает уведомление в панели уведомлений и при щелчке уведомления открывает подробности сбоя. Вы также можете поделиться информацией о сбое с другими по электронной почте или с помощью других опций.
Установка
демонстрация
источник
Хотя многие ответы на этой странице полезны, им легко устареть. Веб-сайт AppBrain собирает статистику, которая позволяет вам найти самое популярное на сегодняшний день решение для отчетов о сбоях:
Библиотеки отчетов об ошибках Android
Вы можете видеть, что на момент публикации этой картинки Crashlytics используется в 5,24% приложений и 12,38% установок.
источник
Мы используем нашу доморощенную систему внутри компании, и она нам очень помогает. Это библиотека Android, которая отправляет отчеты о сбоях на сервер и сервер, который получает отчеты и выполняет аналитику. Сервер группирует исключения по имени исключения, трассировке стека, сообщению. Это помогает определить наиболее важные проблемы, которые необходимо исправить. Наш сервис находится в публичной бета-версии, так что каждый может попробовать его. Вы можете создать учетную запись на http://watchcat.co или просто посмотреть, как она работает, используя демонстрационный доступ http://watchcat.co/reports/index.php?demo .
источник
Если вы хотите получить ответы сразу, вы можете использовать logcat
$adb shell logcat -f /sdcard/logoutput.txt *:E
Если в вашем журнале слишком много мусора, попробуйте сначала очистить его.
$adb shell logcat -c
Затем попробуйте запустить приложение и снова войти в систему.
источник
Я нашел еще одно отличное веб-приложение для отслеживания сообщений об ошибках.
https://mint.splunk.com/
Небольшое количество шагов для настройки.
Вот и все. Вы авторизуетесь и заходите на панель приложения, вы получите все отчеты об ошибках.
Надеюсь, это кому-нибудь поможет.
источник
Чтобы узнать об альтернативных отчетах о сбоях / отслеживании исключений, просмотрите Raygun.io - у него есть куча приятной логики для обработки сбоев Android, включая приличный пользовательский интерфейс при подключении его к вашему приложению (две строки кода в основной активности и несколько строки XML, вставленные в AndroidManifest).
Когда ваше приложение аварийно завершает работу, оно автоматически извлекает трассировку стека, данные о среде для аппаратного / программного обеспечения, информацию об отслеживании пользователя, любые пользовательские данные, которые вы указываете и т. Д. Оно отправляет их в API асинхронно, поэтому не блокирует поток пользовательского интерфейса, и кэширует его на диск, если нет доступной сети.
Отказ от ответственности: я построил Android-провайдер :)
источник
Просто начали использовать ACRA https://github.com/ACRA/acra, используя Google Forms в качестве бэкэнда, и его очень легко настроить и использовать, это по умолчанию.
НО отправка отчетов в формы Google устареет (затем будет удалена): https://plus.google.com/118444843928759726538/posts/GTTgsrEQdN6 https://github.com/ACRA/acra/wiki/Notice-on-Google -форма-Spreadsheet-использование
В любом случае можно определить своего собственного отправителя https://github.com/ACRA/acra/wiki/AdvancedUsage#wiki-Implementing_your_own_sender, который вы можете попробовать отправить по электронной почте отправителю, например.
С минимальными усилиями можно отправлять отчеты на bugsense: http://www.bugsense.com/docs/android#acra
Внимание : бесплатный аккаунт на bugsense ограничен 500 отчетами в месяц
источник
В конце вечеринки я поддерживаю и считаю, что ACRA - лучший вариант среди всех. Его легко установить и настроить. Я создал подробное руководство со входами со всех концов, чтобы получить отчет о сбое с помощью ACRA и отправить его на мой адрес электронной почты с помощью MandrillAp.
Ссылка на пост: https://androidician.wordpress.com/2015/03/29/sending-crash-reports-with-acra-over-email-using-mandrill/
Ссылка на пример проекта на github: https://github.com/ayushhgoyal/AcraSample
источник
Я один из основателей Bugsnag, который мы разработали именно для этой цели. Bugsnag автоматически фиксирует необработанные исключения в приложениях Android и отправляет их на нашу панель инструментов, где вы можете расставить приоритеты по исправлениям и погрузиться в диагностическую информацию.
Вот несколько важных моментов, которые следует учитывать при выборе или создании системы отчетов о сбоях, а также некоторые фрагменты кода:
Если вы хотите ознакомиться с некоторыми лучшими практиками в области обработки аварий / отчетов об ошибках на Android, вы можете проверить полный исходный код библиотеки отчетов о сбоях Bugsnag с полностью открытым исходным кодом, не стесняйтесь разбирать ее на части и использовать в своих собственных приложениях!
источник
Если ваше приложение загружается другими людьми и происходит сбой на удаленных устройствах, вы можете заглянуть в библиотеку отчетов об ошибках Android (упоминается в этом сообщении SO ). Если это только на вашем локальном устройстве, вы можете использовать LogCat. Даже если устройство не было подключено к хост-машине, когда произошел сбой, подключенное устройство и с помощью команды adb logcat загрузит всю историю logcat (по крайней мере, в той степени, в которой оно буферизовано, что обычно представляет собой загрузку данных журнала). просто не бесконечно). Ответят ли какие-либо из этих вариантов на ваш вопрос? Если нет, можете ли вы попытаться уточнить, что вы ищете немного больше?
источник
Аналитика Flurry дает вам информацию о сбоях, модель оборудования, версию Android и статистику использования приложений в реальном времени. В новом SDK они предоставляют более подробную информацию о сбоях http://www.flurry.com/flurry-crash-analytics.html .
источник
Google изменил, сколько отчетов о сбоях вы получаете. Ранее вы получали только ручные отчеты об ошибках.
Со времени последней конференции разработчиков и внедрения Android Vitals вы также получаете отчеты о сбоях от пользователей, которые имеют возможность обмениваться диагностическими данными.
Просмотр сбоев и ошибок приложения (ANR)
источник
Вы можете сделать это прямо в Android Studio. Просто подключите телефон, запустите приложение, дайте ему упасть, и вы сможете просматривать трассировку стека прямо в Android Studio.
источник