Hvis du lige er begyndt at programmere din første Android-app, har du sikkert bemærket, at koden ikke altid opfører sig som forventet. I stedet for at gå ind i blinde, har du brug for et vindue, der lader dig se, hvad der virkelig sker inde i enheden, mens appen kører, og det er her, Android Studios Logcat- værktøj kommer ind i billedet.
Logcat fungerer i bund og grund som en realtidslog, der registrerer alt, hvad der sker på dit system og i din applikation. Fra simple meddelelser, du selv programmerer, til kritiske systemfejl eller undtagelser, der får din app til at gå ned, er dette værktøj vigtigt for at forhindre dig i at drive dig selv til vanvid ved at forsøge at finde den præcise linje, hvor alt går galt.
Kom godt i gang med Logcat-vinduet
For at begynde at indsamle information skal du først bruge appen, der kører på en emulator eller en fysisk mobilenhed. For at åbne konsollen skal du blot gå til topmenuen og vælge Vis > Værktøjsvinduer > Logcat . Som standard ruller vinduet automatisk ned for at vise dig de seneste poster, men hvis du har brug for at analysere en specifik fejl og begynder at rulle op med musen, stopper den automatiske rulning. Hvis du vil genoptage rulningen, skal du klikke på knappen Rul til slutningen.
Værktøjslinjen giver hurtige muligheder for at rydde historikken , sætte dataoutput på pause eller genstarte forbindelsen til enheden. Derudover kan du, hvis du arbejder med flere enheder samtidigt, åbne flere Logcat-faner eller endda opdele skærmen i paneler for at sammenligne logfiler fra forskellige processer på samme tid.
Hvordan man organiserer og læser information
Hver loglinje er ikke tilfældig tekst; den har en fast struktur, der inkluderer dato, tidsstempel, proces- og tråd-ID'er, en identificerende etiket, pakkenavn, prioritet og den endelige besked. For at forhindre rod tildeler Android Studio forskellige farver til hver logtype , så du kan få øje på fejl visuelt på et øjeblik.
Hvis du føler dig overvældet af for meget information og farer vild, kan du gå til indstillingerne for Rediger visninger for at fjerne unødvendige data, såsom proces-ID eller dato. Der er også den kompakte visning , som reducerer mængden af viste data og giver meddelelsen en fremtrædende plads. Hvis teksten er for lang og bliver afskåret, kan du aktivere indstillingen Blød ombrydning for at justere linjerne, så de passer til vinduets bredde.
Professionel brug af Log-klassen
Mange begyndere begår fejlen ved at bruge println() til fejlfinding. Selvom det virker i nød, går disse beskeder ofte tabt eller vises ikke i Logcat. Den korrekte fremgangsmåde er at bruge Android API Log-klassehvilket gør det muligt at kategorisere information ved hjælp af prioritetsniveauer:
- Log.v (Udførlig): Det laveste niveau, for små detaljer, der kun er nyttige i den mest intense udviklingsfase.
- Log.d (Fejlfinding): Ideel til regelmæssige fejlfindingsbeskeder.
- Log.i (Info): Informative beskeder om applikationens normale flow.
- Log.w (Advarsel): At advare om noget, der ikke er en fejl, men som kan forårsage problemer.
- Log.e (Fejl): Alvorlige fejl, normalt fremhævet med rødt.
- Log.wtf (Sikke en frygtelig fiasko): For sådanne katastrofale fiaskoer, der får dig til at undre dig over, hvad der skete.
For at dette kan være effektivt, anbefales det at definere en konstant. TAG (som klassenavnet) i starten af filen. På den måde, når du vil filtrere konsollen, skal du bare skrive navnet på det tag og al støjen vil forsvinde fra systemet, og efterlader kun dine beskeder. Hvis der opstår en undtagelse, kan du sende objektet videre Throwable som en tredje parameter i Log.e() så Logcat udskriver stakspor komplet.
Avanceret filtrering og smarte forespørgsler
Logcats søgemaskine er ekstremt kraftfuld, hvis du ved, hvordan man bruger den. nøgle-værdi-par-forespørgslerI stedet for at søge efter almindelig tekst kan du bruge præfikser som tag: for etiketten, package: for appnavnet eller level: at filtrere efter prioritet (f.eks. level:ERROR (Det vil vise fejl og kritiske advarsler). Et meget nyttigt trick er filteret. package:mine, som automatisk vælger den projektpakke, du har åben.
For de mere avancerede brugere er der logiske operatørerDu kan bruge symbolet & for OG og | For ELLER bruger du også parenteser til at gruppere betingelser. Hvis du vil udelukke noget, skal du blot sætte et minustegn foran, sådan her: -tag:MyTagOg hvis du har brug for at udføre komplekse søgninger, kan du bruge regelmæssige udtryk ved at placere tilde-symbolet foran det ~ til landet, som tag~:My.*TagDu kan også filtrere efter tid med age:5m kun at se, hvad der skete i de sidste fem minutter.
Ekstra fejlfindingstricks og breakpoints
Når logfiler ikke er nok, er det tid til at bruge breakpoints . Sæt ikke bare appen på pause; du kan tilføje specifikke betingelser ved at højreklikke på breakpoint'et, så udførelsen kun stopper, når en variabel når en bestemt værdi. Hvis du ikke ønsker, at appen skal fryse, skal du fjerne markeringen i feltet " Suspend" ; breakpoint'et bliver derefter gult, og der udskrives blot en besked til konsollen uden at stoppe tråden.
En anden skjult perle er muligheden for at kæde breakpoints sammen , så et kun udløses, efter at udførelsen er gået igennem et andet. For at analysere tidligere fejl kan du bruge indstillingen Analyser > Stacktrace eller Tråddump , som omdanner almindelige tekstfejl til en liste over navigerbare links, der fører dig direkte til den pågældende kodelinje.
At mestre dataflow gennem prioritering, præcis filtrering og intelligent implementering af breakpoints transformerer udviklingsoplevelsen og gør fejldetektion og -løsning meget hurtigere og mindre frustrerende. Del denne vejledning, så flere kan lære om dette emne.