Crash Reporting With Crashlytics

I Android er det stor sannsynlighet for at appen din krasjer, selv etter at du har testet det manuelt og automatisk. Dette kan skyldes faktorer som inkompatibilitet med forskjellige API-nivåer, skjermstørrelser, telefonminne, tilgjengelighet for maskinvaresensor og leverandørens tilpasning for å passe de enkelte enhetene. Crashlytics hjelper deg med å diagnostisere disse problemene.

Krasj gjør brukerne dine trist og sint. De kan til og med ønske å avinstallere appen hvis dette skjer ofte. Gi din app en dårlig anmeldelse, gi negativ tilbakemelding på spillelageret, og sett deretter inn konkurrentens app! I dette allerede overfylte og konkurransedyktige appmarkedet, som gjør at brukerne dine er glade, er viktig for appens suksess.

Det er helt umulig for appen din ikke å krasje, men å holde krasjene dine til et minimum er veldig viktig. Under utvikling og testing har du kanskje ikke opplevd en bestemt krasj, men i produksjon når brukerne bruker den aktivt, begynner du å se nedbrudd. Ved hjelp av en robust og kraftig krasjrapporteringsløsning er det viktig å samle informasjon om appens nedbrudd og gi deg et innblikk i hvordan du kan løse problemet for å holde brukerne glade. 

I denne veiledningen viser jeg deg hvordan du bruker Crashlytics, en fri og kraftig, men likevel lett, krasjrapporteringsløsning, som er en del av Fabric-settet av utviklerverktøy som nylig ble kjøpt av Google. Vi lager en enkel app som krasjer når en knapp klikkes, slik at vi kan få innblikk i krasj med Crashlytics. 

1. Hvorfor bruke Crashlytics?

Her er noen grunner til at du kanskje vil bruke den: 

  • Lett å sette opp
  • Ubegrenset apper, brukere og krasjer 
  • Realtidsvarsler
  • Krasjrapportering i sanntid
  • Dybdehalsanalyse
  • Sporing av unntak
  • Lett å dele krasjrapport
  • Beta app distribusjon
  • En gratis mobilapp for å overvåke appen din når du er på farten, og få varsling i sanntid for kritiske problemer
  • Gratis!

2. Lag et Android Studio-prosjekt

Først, brann opp Android Studio og opprett et nytt prosjekt "CrashlyticsTutorial"med en tom aktivitet kalt Hoved aktivitet.

3. Installere Fabric Plugin

Du må først ha en konto hos Fabric for å integrere Crashlytics i appen din. Så fyll ut de nødvendige detaljene og en bekreftelses e-post vil bli sendt til deg. 

Du kan enten velge å integrere Fabric med prosjektet ditt enten ved å laste ned Android Studio-pluginet, som automatisk vil endre filene som trengs for integrasjonen, eller ved å manuelt endre din build.gradle fil. For denne opplæringen bruker vi den enkleste måten, som er med plugin. 

Etter å ha klikket på bekreftelseslinken, blir du veiledet for å installere plugin:

Trinn 1

Velg Android som plattform. 

Steg 2

For Mac-brukere: velg Preferanser…  fra Android Studio / IntelliJ Meny. Windows og Linux-brukere: velg innstillinger fra Fil Meny. 

Trinn 3

Å velge plugins, Klikk på Bla Repositories knapp, og søk etter "Fabric for Android".

Trinn 4

Klikk på Installere plugin-knappen for å laste ned og installere plugin. 

4. Integrere Crashlytics

Trinn 1

For å begynne å integrere Crashlytics i Android Studio-prosjektet, skriv inn legitimasjonene dine for å logge på. 

Steg 2

Velg Android-prosjektet CrashlyticsTutorial og klikk på neste knapp. 

Trinn 3

Stoff vil liste alle organisasjonene du har registrert, så velg organisasjonen du vil knytte til appen med, og klikk på neste knapp.

Trinn 4

Stoff vil da liste opp alle sine kits. Siden dette er en Crashlytics opplæring, velger du Crashlytics og klikk på neste knapp. 

Trinn 5

Klikk på Installere knapp. 

Fabric ønsker å gjøre endringer i din bygge.Gradle, MainActivity.java og AndroidManifest.xml filer,så klikk på Søke om knappen for endringene som skal skje.  

Trinn 6

Bygg og kjør din søknad slik at vi kan sørge for at alt er konfigurert riktig. Hvis appen din ble konfigurert, vil du få en e-post sendt umiddelbart til e-postadressen du pleide å melde deg på med Fabric. 

5. Vise Dashboard

Nå som Crashlytics har blitt integrert med vårt prosjekt, går du til hoveddashbordet for å se vår app: CrashlyticsTutorial

Ved å klikke på et prosjekt åpnes Crashlytics-dashbordet, som vil liste opp problemene. Så langt har vi ingen; Senere vil vi gå tilbake til dette dashbordet når vi bevisst har opprettet en krasj. 

I prosjektet Crashlytics dashboard får du en generell oversikt over krasjer. Du kan filtrere sammenbrudd ved appversjoner, hendelser, dager, status (åpen, lukket eller alt), enhet, OS eller brukeraktivitet (selv om svarsettet må aktiveres for å bruke denne funksjonen). Du kan også se totalt antall krasjer, ikke-fete, berørte brukere og mer. 

Svar-settet gir deg sanntidsstatistikk om hvordan appen din blir brukt, inkludert aktive brukernumre, øktlengde, stabilitetsvurdering og oppbevaring. 

6. Bevisst å skape et krasj

Forstå forskjellen mellom krasjer og problemer

Forskjellen mellom krasjer og problemer er at Crashlytics kombinerer lignende krasjer i problemer (bestemte kodelinjer som ser ut til å utløse samme type krasj). Hvis du for eksempel hadde 100.000 krasjer rapportert, kan disse skyldes bare 60 problemer.

La oss bevisst opprette en krasj og se det loggede problemet på dashbordet. 

Lag en layout

Her er Hoved aktivitet layoutfil:

  

De crashNow () Metode

Endre Hoved aktivitet klasse for å skyte opp crashNow () metode, som vil utløse en RuntimeException når knappen klikkes. 

pakke com.chikeandroid.crashlyticstutorial; importere android.os.Bundle; importer android.support.v7.app.AppCompatActivity; importer android.view.View; importer android.widget.Button; importer com.crashlytics.android.Crashlytics; importere io.fabric.sdk.android.Fabric; offentlig klasse MainActivity utvider AppCompatActivity private Button mCrashNowButton; @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); Fabric.with (dette, nye Crashlytics ()); setContentView (R.layout.activity_main); mCrashNowButton = (Button) findViewById (R.id.btn_crash_now); mCrashNowButton.setOnClickListener (new View.OnClickListener () @Override public void onClick (Vis visning) crashNow (););  privat void crashNow () kaste ny RuntimeException ("Dette er et krasj"); 

Brak!

Kjør appen og klikk på krasj nå-knappen. 

7. Revisjon av oversikten

Etter den vellykkede krasjen, besøk dashbordet for å se problemet som ble logget umiddelbart. Du vil også få et e-postvarsel fra Fabric om ulykken. I dashbordet så langt har vi nå ett problem, en krasj og en berørt bruker. Du kan søke etter et bestemt problem med enten filnavnet, metodenavnet, linjenummeret eller utstedelsesnotatene (kun på engangsperiode).

Når du klikker på et problem, åpnes det en side der du får en grundig rapport om krasjen. Siden samler alle krasjene som skjedde. 

Nøkkeldelene til denne brukergrensesnittet er som følger:

1

Prosjektet og pakkenavnet, inkludert linjenummeret hvor krasjen skjedde

2

Nylig krasjer filter

3

Totalt antall krasjer

4

Totalt antall brukere som er rammet av krasj

5

Bytt for å markere problemet lukket eller åpent

6

Diagram over antall krasjer per dag

7

Knapp for å dele problemet via Twitter eller med gruppemedlemmene dine

8

Prosentdelen av krasjte enheter med nærhet aktivert

9

Prosentandelen av krasjer som skjedde da appen var i fokus 

10

Prosentandelen av krasjte enheter som var rotfestet

11

Oppdeling av modellnavnene for krasjte enheter

12

Nedbryting av operativsystemets operativsystemer

1. 3

Last ned unntaksbakkespor som en .txt-fil

14

En utvidbar visning for stablingssporet

15

Se detaljer for hver enkelt krasjrapport.

På denne siden kan du også vise notater og skrive notater om hvert krasj.

8. Andre Crashlytics funksjoner

Fabric Mobile App

Stoff har også en gratis mobilapp tilgjengelig på Google Play Butikk. Med mobilappen får du et øyeblikkelig trykkvarsel når det oppstår en kritisk krasj, samt noen data som gir innsikt i problemet: En sammenbrudd av de berørte enhetene og plattformene, full stakksporing, antall berørte brukere, som påvirkes , notater angitt om et problem, og et alternativ for å dele problemet med gruppemedlemmer. Alle disse dataene oppdateres i sanntid.  

Logfangte unntak

Crashlytics lar deg også logge unntak fanget i en å fange blokkere ved hjelp av Crashlytics.logException (Unntak).

prøv minMethodThatThrows ();  fangst (Unntak e) Crashlytics.logException (e); // håndter unntaket her! 

Alle loggede unntak vises som "ikke-fatale" problemer i Fabric dashbordet. Crashlytics behandler unntak på en dedikert bakgrunnstråd, så logging av et unntak vil ikke blokkere appens brukergrensesnitt, og ytelsen påvirker appen din vil være liten. 

Tilpasset logging

Når du logger på et unntak, kan du opprette en tilpasset loggmelding knyttet til krasjdataene dine, og den vil bli vist på Crashlytics dashboard på den aktuelle krasj. 

Crashlytics.log (int prioritet, String tag, String msg);

I tillegg til å vises i rapporten din, vil den også bli lagt til Android's LogCat. For å unngå at det skjer, bruk i stedet:

Crashlytics.log (String message);

Som i eksemplet nedenfor:

privat ugyldig crashNow () Crashlytics.log ("Min logg melding"); kaste ny RuntimeException ("Dette er et krasj"); 

Unikt identifisere brukere

For å unikt identifisere sluttbrukeren til søknaden din i oversikten for enkel feilsøking, har Crashlytics metodene nedenfor: 

Crashlytics.setUserIdentifier ( "12345"); Crashlytics.setUserEmail ( "[email protected]"); Crashlytics.setUserName ("Test User");

Bruk Crashlytics.setUserIdentifier å oppgi et ID-nummer, token eller hashed-verdi som unikt identifiserer sluttbrukeren av søknaden din uten å utlevere eller overføre noen av deres personlige opplysninger.

Betaversjon 

Hvis du vil beta distribuere appen din til et sett med brukere for testing og få tilbakemelding før du endelig slipper appen din til offentligheten, har Crashlytics et veldig nyttig gratis verktøy kalt Beta. Jeg vil ikke gå inn på den her, men sjekk ut de offisielle doksene for mer informasjon. 

Deaktiver Crashlytics for Debug Builds

Du kan deaktivere Crashlytics for debug builds, noe som vil øke hastigheten på feilsøkingsprosessen. 

Først legg dette til din build.gradle fil:

buildTypes ... debug // Deaktiver fabric build ID generasjon for debug bygger ext.enableCrashlytics = false

Deretter deaktivere Crashlytics Kit ved kjøring.

... @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); // Sett opp Crashlytics, deaktivert for debug bygger Crashlytics crashlyticsKit = ny Crashlytics.Builder () .core (ny CrashlyticsCore.Builder (). Deaktivert (BuildConfig.DEBUG) .build ()) .build (); Fabric.with (dette, crashlyticsKit); setContentView (R.layout.activity_main); 

Konklusjon

Crashlytics er veldig kraftig og nyttig for effektiv krasjrapportering. I denne opplæringen lærte du:

  • hvordan å integrere Crashlytics i Android-prosjektet ditt
  • hvordan Crashlytics dashboard kan gi deg innsikt i et problem
  • hvordan logge fanget unntak
  • hvordan å skrive tilpassede logger
  • hvordan du unikt identifiserer brukerne dine for enkel feilsøking
  • hvordan deaktivere Crashlytics for debug-builds

For å lære mer om Crashlytics, kan du se den offisielle dokumentasjonen. Du kan også sjekke ut noen av våre andre opplæringsprogrammer på skybaserte tjenester for Android-utvikling.