Como posso obter dados de falha (rastreios de pilha pelo menos) do meu aplicativo Android? Pelo menos ao trabalhar no meu próprio dispositivo sendo recuperado por cabo, mas idealmente a partir de qualquer instância do meu aplicativo em execução no ambiente, para que eu possa melhorá-lo e torná-lo mais sólido.
android
crash
stack-trace
J. Pablo Fernández
fonte
fonte
Respostas:
Você pode experimentar a biblioteca do ACRA (Application Crash Report for Android) :
É fácil de instalar no seu aplicativo, altamente configurável e não exige que você hospede um script de servidor em qualquer lugar ... os relatórios são enviados para uma planilha do Google Doc!
fonte
Para aplicativos de amostra e propósitos de depuração, uso uma solução simples que permite gravar o rastreamento de pilha no cartão sd do dispositivo e / ou enviá-lo para um servidor. Essa solução foi inspirada no Project android-remote-stacktrace (especificamente, nas partes salvar no dispositivo e fazer upload no servidor) e acho que resolve o problema mencionado por Soonil. Não é o ideal, mas funciona e você pode aprimorá-lo se quiser usá-lo em um aplicativo de produção. Se você decidir fazer upload dos rastreamentos de pilha no servidor, poderá usar um script php (
index.php
) para visualizá-los. Se você estiver interessado, poderá encontrar todas as fontes abaixo - uma classe java para seu aplicativo e dois scripts php opcionais para o servidor que hospeda os stacktraces carregados.Em um contexto (por exemplo, a atividade principal), chame
CustomExceptionHandler
upload.php
index.php
fonte
HttpPost httpPost = new HttpPost(url);
deve estar em uma tarefa assíncrona (ou manipulador ... um segmento separado) agora se você está direcionando Honeycomb ou mais tardeVocê também pode experimentar o
[BugSense]Motivo: redirecionamento de spam para outro URL . O BugSense coleta e analisa todos os relatórios de falhas e fornece relatórios visuais e significativos. É gratuito e possui apenas 1 linha de código para integrar.Disclaimer: Eu sou um co-fundador
fonte
No Android 2.2, agora é possível obter automaticamente os Relatórios de falhas a partir dos aplicativos do Android Market:
http://developer.android.com/sdk/android-2.2-highlights.html
fonte
É possível lidar com essas exceções
Thread.setDefaultUncaughtExceptionHandler()
, mas isso parece mexer com o método do Android de lidar com exceções. Eu tentei usar um manipulador dessa natureza:No entanto, mesmo com o relançamento das exceções, não consegui obter o comportamento desejado, ou seja, registrei a exceção e, ao mesmo tempo, permiti que o Android desligasse o componente que havia acontecido, por isso desisti depois de um tempo.
fonte
Constants.TAG
parte da estrutura do Android? Primeira vez que vi isso. Não consigo encontrar.Vejo que a pergunta é muito antiga e espero que minha resposta seja útil para outras pessoas com o mesmo problema ...
Experimente o Crashlytics . Ele fornecerá informações detalhadas sobre todas as falhas em todos os dispositivos que possuem seu aplicativo e enviará uma notificação por e-mail. E a melhor parte é totalmente gratuito para uso.
fonte
Ok, olhei as amostras fornecidas pela rrainn e Soonil e encontrei uma solução que não atrapalha o tratamento de erros.
Modifiquei o CustomExceptionHandler para que ele armazene o UncaughtExceptionHandler original do Thread que associamos ao novo. No final do novo "uncaughtException" - Método, chamo a função antiga usando o UncaughtExceptionHandler armazenado.
Na classe DefaultExceptionHandler, você precisa de sth. como isso:
Com essa modificação no código em http://code.google.com/p/android-remote-stacktrace, você tem uma boa base de trabalho para fazer logon no campo no servidor da web ou no cartão SD.
fonte
O Google Play Developers Console, na verdade, fornece os rastreamentos de pilha dos aplicativos que falharam e enviaram os relatórios; também possui gráficos muito bons para ajudá-lo a ver as informações, veja o exemplo abaixo:
fonte
Eu uso o Crittercism para meus aplicativos Android e iOS - ouvi falar deles no TechCrunch. Muito feliz com eles até agora!
fonte
Criei minha própria versão aqui: http://androidblogger.blogspot.com/2009/12/how-to-improve-your-application-crash.html
É basicamente a mesma coisa, mas estou usando um email em vez de uma conexão http para enviar o relatório e, mais importante, adicionei algumas informações como versão do aplicativo, versão do SO, modelo do telefone ou memória disponível no meu relatório. .
fonte
use isso para capturar os detalhes da exceção:
armazene isso no banco de dados e mantenha o log.
fonte
Você também pode usar um serviço (simples) completo para ele, em vez de apenas uma biblioteca. Nossa empresa acaba de lançar um serviço exatamente para isso: http://apphance.com .
Possui uma biblioteca .jar simples (para Android) que você adiciona e integra em 5 minutos e, em seguida, a biblioteca reúne não apenas informações de falha, mas também logs do aplicativo em execução, além de permitir que os testadores relatem problemas diretamente do dispositivo - incluindo o contexto inteiro (rotação do dispositivo, esteja ele conectado a um wifi ou não e mais). Você pode ver os logs usando um painel da Web muito agradável e útil, onde pode acompanhar sessões com seu aplicativo, falhas, logs, estatísticas e muito mais. O serviço está em fase de teste beta fechado agora, mas você pode solicitar acesso e nós o fornecemos muito rapidamente.
Isenção de responsabilidade: Sou CTO da Polidea e co-criador do serviço.
fonte
Graças aos recursos presentes,
Stackoverflow
ajudando-me a encontrar esta resposta.Você pode encontrar seus relatórios de falhas remotamente Android diretamente em seu e-mail . Lembre-se de que você deve colocar seu email na classe CustomExceptionHandler .
Etapas necessárias:
1º) no onCreate de sua atividade, use esta seção do seu código.
2) use esta versão substituída da classe CustomExceptionHandler de (rrainn), de acordo com meu phpscript.
fonte
Atualmente, os relatórios do Firebase Crash são muito populares e fáceis de usar. Consulte o link a seguir para obter mais informações: Firebase Crash Reporting
Espero que ajude você.
fonte
Isso é muito bruto, mas é possível executar o logcat em qualquer lugar, portanto, um hack rápido e sujo é adicionado a qualquer bloco de captura
getRuntime().exec("logcat >> /sdcard/logcat.log");
fonte
Existe uma ferramenta chamada fabric, que é uma ferramenta de análise de falhas, que permite obter relatórios de falhas quando o aplicativo é implementado ao vivo e durante o desenvolvimento. A adição desta ferramenta ao seu aplicativo também foi simples. Quando o seu aplicativo falha, o relatório da falha pode ser visualizado no painel fabric.io. o relatório foi capturado automaticamente. não solicitará permissão ao usuário. Se ele / ela deseja enviar o relatório de erro / falha. E isso é totalmente gratuito ... https://get.fabric.io/
fonte
O Google Firebase é a maneira mais recente (2016) do Google de fornecer dados de falha / erro no seu telefone. Inclua-o no arquivo build.gradle:
Falhas fatais são registradas automaticamente sem a necessidade de entrada do usuário e você também pode registrar falhas não fatais ou outros eventos como:
fonte
Existe esta biblioteca Android chamada Sherlock . Ele fornece o relatório completo de falha, além de informações sobre o dispositivo e o aplicativo. Sempre que ocorre uma falha, ele exibe uma notificação na barra de notificação e, ao clicar nela, abre os detalhes da falha. Você também pode compartilhar detalhes da falha com outras pessoas por e-mail ou outras opções de compartilhamento.
Instalação
Demo
fonte
Embora muitas das respostas desta página sejam úteis, é fácil para elas ficarem desatualizadas. O site do AppBrain agrega estatísticas que permitem encontrar a solução de relatório de falhas mais popular atualmente:
Bibliotecas de relatórios de falhas do Android
Você pode ver que, no momento da publicação desta imagem, o Crashlytics é usado em 5,24% dos aplicativos e 12,38% das instalações.
fonte
Utilizamos nosso sistema interno dentro da empresa e isso nos serve muito bem. É uma biblioteca Android que envia relatórios de falhas para o servidor e servidor que recebe relatórios e faz algumas análises. O servidor agrupa exceções por nome da exceção, rastreamento de pilha, mensagem. Ajuda a identificar os problemas mais críticos que precisam ser corrigidos. Nosso serviço está em versão beta pública agora, para que todos possam experimentá-lo. Você pode criar uma conta em http://watchcat.co ou pode simplesmente ver como funciona usando o acesso demo http://watchcat.co/reports/index.php?demo .
fonte
Se você deseja respostas imediatamente, pode usar o logcat
$adb shell logcat -f /sdcard/logoutput.txt *:E
Se houver muito lixo no seu log agora, tente limpá-lo primeiro.
$adb shell logcat -c
Em seguida, tente executar o aplicativo e faça o logcat novamente.
fonte
Encontrei mais um ótimo aplicativo da web para rastrear os relatórios de erros.
https://mint.splunk.com/
Pequeno número de etapas para configurar.
É isso aí. Ao fazer o login e acessar o painel do aplicativo, você receberá todos os relatórios de erros.
Espero que ajude alguém.
fonte
Para um serviço alternativo de relatório de falhas / rastreamento de exceções, confira Raygun.io - ele tem várias lógicas legais para lidar com falhas do Android, incluindo uma experiência decente do usuário ao conectá-las ao seu aplicativo (duas linhas de código na sua Atividade principal e algumas linhas de XML coladas no AndroidManifest).
Quando o aplicativo falha, ele pega automaticamente o rastreamento da pilha, os dados do ambiente para o hardware / software, as informações de rastreamento do usuário, quaisquer dados personalizados que você especificar etc. Ele o envia para a API de forma assíncrona, sem bloqueio do encadeamento da interface do usuário, e o armazena em cache. para o disco se não houver rede disponível.
Isenção de responsabilidade: criei o provedor Android :)
fonte
Apenas começou a usar o ACRA https://github.com/ACRA/acra usando o Google Forms como back-end e é muito fácil de configurar e usar, é o padrão.
MAS O envio de relatórios para o Google Forms será preterido (depois removido): https://plus.google.com/118444843928759726538/posts/GTTgsrEQdN6 https://github.com/ACRA/acra/wiki/Notice-on-Google -Form-Spreadsheet-use
De qualquer forma, é possível definir seu próprio remetente https://github.com/ACRA/acra/wiki/AdvancedUsage#wiki-Implementing_your_own_sender Você pode tentar enviar um e-mail ao remetente, por exemplo.
Com o mínimo esforço, é possível enviar relatórios para o bugsense: http://www.bugsense.com/docs/android#acra
NB A conta gratuita do bugsense é limitada a 500 relatórios / mês
fonte
Tarde para a festa, apoio e acredito que a ACRA é a melhor opção entre todas. É fácil de instalar e configurar. Criei um guia detalhado com entradas de todo o país para buscar o relatório de falha usando o ACRA e enviar o mesmo para o meu endereço de e-mail usando o MandrillAp.
Link para postagem: https://androidician.wordpress.com/2015/03/29/sending-crash-reports-with-acra-over-email-using-mandrill/
Link para amostra de projeto no github: https://github.com/ayushhgoyal/AcraSample
fonte
Eu sou um dos fundadores da Bugsnag que projetamos exatamente para esse fim. O Bugsnag captura automaticamente exceções não tratadas em aplicativos Android e as envia para o nosso painel, onde você pode priorizar correções e mergulhar nas informações de diagnóstico.
Aqui estão algumas coisas importantes a considerar ao selecionar ou criar um sistema de relatório de falhas, junto com alguns trechos de código:
Se você quiser ver algumas práticas recomendadas em relação ao tratamento / relatório de falhas no Android, confira o código-fonte completo da biblioteca de relatórios de falhas do Bugsnag, que é totalmente aberta, sinta-se à vontade para separar isso e usá-lo em seus próprios aplicativos!
fonte
Se o aplicativo estiver sendo baixado por outras pessoas e travando em dispositivos remotos, convém consultar uma biblioteca de relatórios de erros do Android (mencionada nesta postagem do SO ). Se for apenas no seu próprio dispositivo local, você pode usar o LogCat. Mesmo que o dispositivo não tenha sido conectado a uma máquina host quando ocorreu a falha, o dispositivo conectado e a emissão de um comando adb logcat farão o download de todo o histórico do logcat (pelo menos na medida em que estiver em buffer, o que geralmente é uma quantidade imensa de dados de log , simplesmente não é infinito). Alguma dessas opções responde à sua pergunta? Caso contrário, você pode tentar esclarecer um pouco mais o que está procurando?
fonte
A análise de agitação fornece informações sobre falhas, modelo de hardware, versão do Android e estatísticas de uso de aplicativos ao vivo. No novo SDK, eles parecem fornecer informações mais detalhadas sobre falhas http://www.flurry.com/flurry-crash-analytics.html .
fonte
O Google mudou a quantidade de relatórios de falhas que você realmente recebe. Anteriormente, você só recebia relatórios de erros reportados manualmente.
Desde a última conferência do desenvolvedor e a introdução do Android Vitals, você também recebe relatórios de falhas de usuários que ativaram o compartilhamento de dados de diagnóstico.
Ver falhas e erros de aplicação não respondendo (ANR)
fonte
Você pode fazer isso diretamente no Android Studio. Basta conectar seu telefone, executar o aplicativo, deixá-lo travar e você pode visualizar o rastreamento de pilha diretamente no Android Studio.
fonte