portaldacalheta.pt
  • Principal
  • Web Front-End
  • Gestão De Engenharia
  • Ciência De Dados E Bancos De Dados
  • Ascensão Do Remoto
Móvel

Relatórios automatizados de falhas do Android com ACRA e Cloudant



Fazer um aplicativo Android básico é fácil. Fazer um aplicativo Android confiável, escalonável e robusto, por outro lado, pode ser bastante desafiador .

Com milhares de dispositivos disponíveis fornecidos por toneladas de fabricantes diferentes, presumir que um único trecho de código funcionará de forma confiável em telefones é, na melhor das hipóteses, ingênuo.



A segmentação é a maior desvantagem de ter uma plataforma aberta, e pagamos o preço na moeda da manutenção do código, que continua muito depois de um aplicativo passar do estágio de produção.



Por que o relatório de erros do Android é importante

Então, o que acontece quando um aplicativo Android falha ou se torna não responsivo ? Bem, a caixa de diálogo “Forçar fechamento” é exibida, informando ao usuário que algo está errado. Se o aplicativo foi baixado por meio do Google Play, o usuário será solicitado a relatar a falha enviando um relatório detalhado de falha do Android (incluindo hora, modelo do telefone, versão do Android, rastreamento de pilha, etc.) que você (o desenvolvedor) pode visualizar em o console do desenvolvedor, permitindo que você resolva o bug culpado.



Tudo isso parece muito bom - mas há um grande problema com o relatório de erros padrão do Android: os usuários tendem a não usá-lo, deixando os desenvolvedores sem noção do estado de seus aplicativos.

Tudo isso parece muito bom, mas há um grande problema com o uso do relatório de erro padrão do Android: os usuários tendem não para agir quando seus aplicativos travam; na verdade, a maioria escolhe não enviar nos relatórios de erro do Android. Como então, você pode, como um desenvolvedor consciencioso , obter informações confiáveis ​​sobre as falhas e falhas do seu aplicativo?

Um registro de falha confiável do Android é especialmente importante quando os usuários não enviam relatórios de falha.



Apresentando ACRA

ACRA significa “Automated Crash Reporting for Android”. É uma biblioteca gratuita que permite resolver o problema de ‘relatório de erro manual’ com algumas linhas de código. Depois de implementar a biblioteca e tudo ter sido inicializado corretamente, você será capaz de extrair os mesmos logs de erro do Android que o padrão do Google (mais um monte de opções de personalização adicionadas) automaticamente e sem exigir que o usuário execute uma ação.

Além disso, o ACRA permite que você escolha como deseja informar ao usuário sobre uma falha do Android, com o padrão sendo relatórios de plano de fundo silenciosos e alternativas, incluindo diálogos personalizados.



Até recentemente, o ACRA era apoiado pelo Google Spreadsheet, o que significava que você podia receber todos os seus relatórios em um único arquivo, hospedado gratuitamente em sua conta do Google Drive. Infelizmente, Google solicitou que não usássemos esta opção no futuro, ficamos com algumas alternativas para o envio de dados do relatório de falha, algumas das quais abordaremos neste tutorial:

  • Email padrão (ainda requer interação do usuário).
  • Cliente de email / HTTP personalizado (requer configuração extensiva).
  • Back-end personalizado (com opções variando de soluções gratuitas para soluções comerciais).

Neste artigo, analisaremos uma dessas soluções: hospedar seus relatórios ACRA em um Cloudant back-end e visualizando os dados com acralisador .



Configurando um back-end do Cloudant

A primeira coisa que precisamos fazer é registro uma conta Cloudant. Claro, há um problema: os serviços do Cloudant não são totalmente gratuitos, mas de acordo com seus página de preços é muito improvável que você exceda o limite mensal de US $ 5 (a menos que você tenha uma grande base de usuários e uma tonelada de bugs em seu código).

Depois de nos registrar, precisamos entender como as coisas funcionam. Em um alto nível, nosso back-end consistirá em dois componentes:



  1. Um banco de dados de armazenamento ou, para ser mais preciso, um Apache CouchDB . O CouchDB armazena seus dados no formato JSON, o que significa que todos os relatórios enviados do dispositivo Android devem corresponder ao formato para serem inseridos como uma entrada. Uma inserção de banco de dados é uma solicitação HTTP POST ou PUT simples.
  2. Um aplicativo da web (para análise) ou, para ser mais preciso, um CouchApp . Este é um aplicativo JavaScript simples que permite executar consultas e exibir os dados armazenados na instância CouchDB.

Para que nosso back-end funcione corretamente, precisaremos configurar esses dois componentes. Em teoria, poderíamos construir o banco de dados e o aplicativo da fonte e, em seguida, usar uma ferramenta para implantá-los em nosso back-end - mas o bom pessoal da ACRA já fez isso por nós. Portanto, a abordagem mais fácil é replicar um banco de dados remoto e um aplicativo remoto.

Vamos seguir em frente e replicar um ACRA CouchDB vazio:



  • Selecione a seção ‘Replicação’ no painel do Cloudant.
  • Como banco de dados de origem, selecione ‘Banco de dados remoto’ com http://get.acralyzer.com/distrib-acra-storage como o URL.
  • Como banco de dados de destino, selecione ‘Novo banco de dados’ e nomeie como “acra- {meuaplicativo}” (sem as aspas). Observe que o parâmetro {myapp} deve ser exclusivo para o seu aplicativo e que o nome do banco de dados deve começar com “acra-“.
  • Clique em ‘Replicar’.

Isso ilustra como configurar um back-end Cloudant para gerenciar relatórios de falhas do Android.

Assim, replicamos com sucesso o banco de dados para armazenamento de relatórios. Em seguida, precisamos replicar o acralyzer CouchApp para que possamos visualizar os dados:

  • Selecione a seção ‘Replicação’ no painel do Cloudant.
  • Como banco de dados de origem, selecione ‘Banco de dados remoto’ com http://get.acralyzer.com/distrib-acralyzer como o URL.
  • Como banco de dados de destino, selecione ‘Novo banco de dados’ e nomeie como “acralyzer”.
  • Clique em ‘Replicar’.

Esta etapa consiste em replicar o aplicativo acra para visualizar os dados do log de travamento do Android.

Nota : replicar o aplicativo acralyzer é opcional. Você não precisará dele se estiver interessado apenas em armazenar seu relatório de falha do Android, em vez de visualizar os dados (veremos o acralyzer na próxima seção deste tutorial do Android). Se você se sentir confiante o suficiente com suas habilidades em JavaScript, poderá até escrever seu próprio aplicativo de análise! Mas isso está fora do escopo desta postagem do blog.

A última etapa do processo de configuração inicial é adicionar permissões de segurança. O Cloudant fornece sua própria camada de segurança sobre o CouchDB com controle mais preciso sobre os direitos individuais, portanto, para escrever um relatório em nosso banco de dados, precisamos criar uma conta de usuário com permissões de gravação:

quão popular é ruby ​​on rails
  • Selecione a seção ‘Banco de dados’ em seu painel do Cloudant.
  • Clique na seção de permissões (ícone de cadeado) para o banco de dados acra- {myapp}.
  • Clique em ‘Gerar chaves de API’.
  • Anote o nome de usuário e a senha gerados (nós os usaremos mais tarde).
  • Adicione permissões de gravação para o nome de usuário gerado.

Adicione permissões de segurança para que seus registros e relatórios de falhas do Android sejam acessíveis posteriormente.

Visualizando relatórios de falha do Android com um analisador

Depois de replicado, o painel do acralisador pode ser facilmente acessado seguindo https://{myapp}.cloudant.com/acralyzer/_design/acralyzer/index.html#/dashboard. Admito: não é a ferramenta de análise mais bonita que existe, mas atende ao seu propósito.

No menu superior, você pode selecionar qual banco de dados deseja visualizar (é possível hospedar vários bancos de dados para diferentes aplicativos em um único projeto; isso afetará sua cota de uso) e visualizar os dados no painel principal. Por exemplo, você pode:

  • Trace o número de relatórios por unidade de tempo (hora, dia, mês, etc.).
  • Visualize a distribuição de relatórios por métricas específicas do Android (versão do Android, versão do SDK, versão do aplicativo, dispositivo, etc.).
  • Liste todos os relatórios de falhas (com um rastreamento de pilha detalhado) ou visualize todos os bugs (aqui, um “bug” é um grupo de relatórios idênticos originados de diferentes usuários).
  • Visualize os detalhes de um único bug e defina seu status como resolvido (se corrigido).
  • Limpe as entradas antigas ou obsoletas.

Visualizar os dados do log de travamento do Android pode ser muito útil para melhorar seu aplicativo de forma mais estratégica.

Observe que as métricas de travamento do Android disponíveis para visualização dependerão dos relatórios que escolhermos enviar de nosso aplicativo. ACRA oferece uma variedade de campos de relatório , alguns dos quais podem ser muito grandes ou não completamente relevantes para a correção de erros. Para a maioria dos projetos, os campos de relatório obrigatórios serão suficientes. Esses incluem:

  • APP_VERSION_CODE
  • APP_VERSION_NAME
  • ANDROID_VERSION
  • NOME DO PACOTE
  • REPORT_ID
  • CONSTRUIR
  • STACK_TRACE

Implementando ACRA em seu projeto Android

Conforme mencionado anteriormente neste tutorial, a implementação do ACRA é muito fácil e requer apenas algumas etapas rápidas.

Adicionar dependência

Primeiro, precisamos incluir a biblioteca como uma dependência de uma das seguintes maneiras:

  • Como um .jar arquivo em sua pasta / libs.
  • Como uma dependência maven:

    ch.acra acra X.Y.Z
  • Como uma dependência do Gradle:

    compile 'ch.acra:acra:X.Y.Z'

Adicionar classe de aplicativo

Em seguida, precisamos adicionar uma classe de aplicativo Android ao nosso projeto (ou atualizar uma classe existente, pois só pode haver uma instância) e declará-la no AndroidManifest.xml:

...

E configure o ACRA lá:

@ReportsCrashes( formUri = 'https://{myusername}.cloudant.com/acra-{myapp}/_design/acra-storage/_update/report', reportType = HttpSender.Type.JSON, httpMethod = HttpSender.Method.POST, formUriBasicAuthLogin = 'GENERATED_USERNAME_WITH_WRITE_PERMISSIONS', formUriBasicAuthPassword = 'GENERATED_PASSWORD', formKey = '', // This is required for backward compatibility but not used customReportContent = { ReportField.APP_VERSION_CODE, ReportField.APP_VERSION_NAME, ReportField.ANDROID_VERSION, ReportField.PACKAGE_NAME, ReportField.REPORT_ID, ReportField.BUILD, ReportField.STACK_TRACE }, mode = ReportingInteractionMode.TOAST, resToastText = R.string.toast_crash ) public class MainApp extends Application { @Override public void onCreate() { super.onCreate(); // The following line triggers the initialization of ACRA ACRA.init(this); } }

É isso aí! Claro, você precisará substituir todos os marcadores de posição {myapp} por valores reais, bem como por valores para formUriBasicAuthLogin e formUriBasicAuthPassword.

Como você pode ver no snippet de código acima, estamos usando apenas os campos de relatório obrigatórios. Sinta-se à vontade para adicionar quaisquer outros campos que possam ser relevantes para o seu aplicativo.

Você também pode escolher usar PUT em vez de POST. Nesse caso, o REPORT_ID será anexado ao final de former como um parâmetro.

Por fim, você também pode escolher como o usuário é informado sobre a falha do aplicativo Android, sendo o padrão um relatório de fundo silencioso. Em nosso caso, optamos por exibir uma mensagem Toast informando ao usuário que a falha foi relatada e que uma correção de bug deve estar disponível em breve.

Preciso de ajuda? Aqui está um exemplo de projeto

Para ver o ACRA em ação, eu configurei o acra_example repo no GitHub. Ele apresenta um aplicativo simples que inicializa o ACRA na inicialização e permite travá-lo pressionando um botão (que aciona uma exceção de ponteiro nulo). Os dados da falha são enviados para um exemplo de banco de dados Cloudant que pode ser visualizado Aqui .

Para visualizar os dados, faça login com as seguintes credenciais:

  • Nome de usuário: medo
  • Senha: um exemplo

Alternativas para ACRA

ACRA não é a única opção para relatórios automatizados de erros do Android. Uma vez que travamentos estão prestes a acontecer, existe um grande mercado business-to-developer (B2D) tentando monetizar sua resolução.

Criticismo , por exemplo, é uma plataforma muito madura para relatórios de falhas. Parece ótimo, oferece várias opções para análise de dados e é muito fácil de integrar. A única desvantagem: preço , e a avaliação gratuita é bastante limitada em termos de número de usuários ativos, dias de retenção de dados e suporte). BugSense é um serviço semelhante.

Na minha opinião, entretanto, Crashlytics é uma solução superior. Até recentemente, o Crashlytics tinha um modelo freemium (com um nível premium pago); mas agora (depois do aquisição pelo Twitter ), todos os recursos anteriormente premium estão disponíveis para livre . Não há custos de uso, taxas ou limites. Este é o meio preferido de relatório de erros para muitas empresas e desenvolvedores de alto perfil e alta classificação, pois é muito fácil de usar e oferece ferramentas analíticas e de visualização poderosas. Ele ainda se integra com os IDEs mais populares como um plug-in (por exemplo, Eclipse, Android Studio), portanto, adicionar Crashlytics ao seu aplicativo é tão simples quanto selecionar um projeto e pressionar um botão. Esses plug-ins também permitem que você rastreie relatórios de falha de seu IDE sem ter que abrir um navegador.

Então, por que usar o ACRA então quando existem outras alternativas que parecem muito melhores e oferecem mais recursos para o mesmo esforço de implementação? Vou te dar duas razões.

  1. Todas essas outras opções são código fechado, software proprietário . Mesmo com uma cesta cheia de EULAs, você não pode ter certeza exatamente Como seus dados são coletados e tratados. Por outro lado, ACRA e acralyzer são projetos de código aberto hospedados no GitHub que você pode facilmente bifurcar e adaptar às suas necessidades.

  2. Mobilidade de dados . Digamos que você esteja insatisfeito com Cloudant. É muito fácil replicar e migrar seus dados para outro back-end. Você tem a garantia de que os dados permanece seu .

Como acontece com muitas opções, esta se resume à preferência pessoal e familiaridade. Confira este Google+ fio para mais discussão sobre as várias alternativas disponíveis para tornar seu aplicativo mais confiável.

Em conclusão

ACRA é altamente robusto e altamente personalizável biblioteca que pode ser utilizada junto com Cloudant e acralyzer para obter relatórios de falhas automatizados gratuitos e análises básicas para seu aplicativo, tudo com o mínimo de esforço de implementação.

transformar raspberry pi em servidor

Escrever código Android confiável requer muita experiência e visão, mas nenhum de nós é realmente onisciente. Esteja preparado para falhas e erros inesperados e esteja pronto para consertar o inesperado o mais rápido possível. Esse é o tipo de trabalho que envolve ótimos produtos e ótimas experiências do usuário.

Relacionado: Torne seu aplicativo lucrativo - aproveite o Mobile Analytics

As restrições de design não são restrições - elas estimulam a criatividade

Design Ux

As restrições de design não são restrições - elas estimulam a criatividade
Censo da China em 2020 mostra que o crescimento populacional caiu para o menor de todos os tempos

Censo da China em 2020 mostra que o crescimento populacional caiu para o menor de todos os tempos

Mundo

Publicações Populares
Nvidia Shield - Uma visão diferente dos consoles de jogos Android
Nvidia Shield - Uma visão diferente dos consoles de jogos Android
Planejamento de sucessão de private equity: o que fazer e o que não fazer
Planejamento de sucessão de private equity: o que fazer e o que não fazer
Representante do Queen's em Londres diz que a realeza apóia o movimento Black Lives Matter
Representante do Queen's em Londres diz que a realeza apóia o movimento Black Lives Matter
Truques de magia indiana que surpreendeu o mundo
Truques de magia indiana que surpreendeu o mundo
Métricas de sobrevivência: familiarizando-se com a taxa de queima de inicialização
Métricas de sobrevivência: familiarizando-se com a taxa de queima de inicialização
 
PM Modi compara o exército indiano ao de Israel: Aqui está o porquê
PM Modi compara o exército indiano ao de Israel: Aqui está o porquê
Um guia para gerenciar dependências de Webpack
Um guia para gerenciar dependências de Webpack
De Khirki a Fathepur e ‘Sambhaji Nagar’, os muitos nomes de Aurangabad
De Khirki a Fathepur e ‘Sambhaji Nagar’, os muitos nomes de Aurangabad
Como Sequel e Sinatra resolvem o problema da API Ruby
Como Sequel e Sinatra resolvem o problema da API Ruby
Caixa de ferramentas do Forecaster: como realizar simulações de Monte Carlo
Caixa de ferramentas do Forecaster: como realizar simulações de Monte Carlo
Publicações Populares
  • exemplos de fechamento em psicologia
  • como você cria uma linguagem de programação
  • como usar o aplicativo invision
  • escritório de gerenciamento de projetos (pmo)
  • llc s corp ou c corp
Categorias
  • Web Front-End
  • Gestão De Engenharia
  • Ciência De Dados E Bancos De Dados
  • Ascensão Do Remoto
  • © 2022 | Todos Os Direitos Reservados

    portaldacalheta.pt