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.
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 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?
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:
Neste artigo, analisaremos uma dessas soluções: hospedar seus relatórios ACRA em um Cloudant back-end e visualizando os dados com acralisador .
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:
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:
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:
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
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:
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:
Conforme mencionado anteriormente neste tutorial, a implementação do ACRA é muito fácil e requer apenas algumas etapas rápidas.
Primeiro, precisamos incluir a biblioteca como uma dependência de uma das seguintes maneiras:
Como uma dependência maven:
ch.acra acra X.Y.Z
Como uma dependência do Gradle:
compile 'ch.acra:acra:X.Y.Z'
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.
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:
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.
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.
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.
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