Opdateret: januar 2020.
Android Studio tilbyder en rig palet med indbyggede udviklingsværktøjer og et endnu mere rigeligt plugin-økosystem. De første tre artikler i denne serie fokuserede på installation og opsætning og kodning og kørsel af en simpel mobilapp med Android Studio. Nu bliver du bekendt med nogle af de mere avancerede værktøjer: tre indbyggede værktøjer og tre plugins til fejlfinding og forbedring af kvaliteten og produktiviteten af din Android-applikationskode.
Denne artikel introducerer følgende værktøjer til Android Studio:
Indbyggede fejlfindingsværktøjer
- Logcat
- Fejlfinde
- Fnug
Plugins til udviklerproduktivitet
- ADB-idé
- Codota
- Lombok-plugin
Hvad er nyt i Android Studio 3.5
Find ud af, hvad du skal se efter i den nyeste version af Android Studio, herunder support til Kotlin og forbedringer af hukommelsesstyring og UI-respons.
Logning og fejlretning af Android-apps
En buggy-app er en sikker måde at drive potentielle kunder væk. Logcat og Debug er to værktøjer, der kommer indbygget i Android Studio, som du kan bruge til at identificere og rette fejl i din Android-kode.
Logning af Android: Logcat
Du har muligvis ikke brug for eller ønsker en fuldstændig debugger til hvert "buggy" -scenarie. I nogle tilfælde er det tilstrækkeligt at logge og korrigere værdierne for visse variabler. Android Studios Logcat er perfekt til denne opgave.
Logcat er et kommandolinjeværktøj (integreret i Android Debug Bridge - ADB), der dumper en log af systemmeddelelser, der kan hjælpe dig med at finde og løse problemer i din kode. Beskeder inkluderer stakspor for, hvornår enheden kaster en fejl, og logmeddelelser, som du målrettet har integreret med android.util.Log
klasse. Logcat er så nyttig, at det er blevet integreret direkte i Android Studio, hvor du kan få adgang til det fra Udsigt menuen eller værktøjsvinduets bjælke.
Det Logcat vinduet er opdelt i en vandret række af rullelister og andre kontroller efterfulgt af et meddelelsesområde. Fra venstre mod højre er kontrollerne:
- En rulleliste, der identificerer tilsluttede enheder og emulatorer. (Se figur 1.)
- En rulleliste, der identificerer installerede APK-pakker på den valgte enhed.
- En rulleliste over logningsniveauer:
- Udtalt: Vis alle meddelelser.
- Fejlfinding: Vis fejlfindingslogbeskeder, der kun er nyttige under udvikling, samt meddelelsesniveauerne lavere på rullelisten.
- Info: Vis forventede logbeskeder til regelmæssig brug samt meddelelsesniveauerne lavere i rullelisten.
- Advarsel: Vis mulige problemer, der endnu ikke er fejl, samt meddelelsesniveauerne lavere i rullelisten.
- Fejl: Vis problemer, der har forårsaget fejl - kastede undtagelser samt niveauet Assert-meddelelse.
- Påstå: Vis problemer, som udvikleren forventer, bør aldrig ske.
- En søgefelt, hvor de eneste meddelelser, der vises, er dem, der indeholder teksten, du skriver i dette kontrolelement.
- Et afkrydsningsfelt, der giver dig mulighed for at bruge regulære udtryk i søgefeltet. For eksempel i forbindelse med figur 1 kan du specificere SystemClock | AlarmManager (dvs. meddelelsen skal indeholde et af ordene).
- En rulleliste til filtrering af meddelelser, herunder følgende muligheder:
- Ingen filtre (standard) får alle meddelelser til den valgte enhed til at vises, uanset den valgte APK-pakke.
- Vis kun den valgte applikation præsenterer kun de meddelelser for den valgte APK-pakke på den valgte enhed, der har det rette logniveau eller lavere.
- Rediger filterkonfiguration lader dig oprette et brugerdefineret filter.
I kildekoden kan du indsætte opkald til forskellige android.util.Log
metoder til at logge beskeder. For eksempel kan du ringe offentlig statisk int i (String tag, String msg)
at logge en INFO
-niveau besked, eller offentlig statisk int w (String tag, String msg)
at logge en ADVARE
-niveau besked.
For begge metoder sendes strengen til tag
identificerer meddelelsens kilde (f.eks. metoden, hvor denne logningsmetode blev kaldt), og strengen sendt til msg
identificerer den besked, der logges.
Alternativt kan du ringe System.out
's og System.err
's Print()
og println ()
metoder. Opkald til System.out
metoder opnår det samme som log.i ()
opkald; opfordrer til System.err
metoder opnår det samme som log.w ()
opkald.
I figur 2 er de eneste viste meddelelser til app-eksemplet, der kører på den emulerede Nexus 5X-enhed. Desuden skal disse meddelelser indeholde onCreate
og blive accepteret af Vis kun den valgte applikation filter.
Mere om Logcat
Se Googles "Skriv og se logfiler med Logcat" for at lære mere om Logcat. Undersøg også android.util.Log
klassens dokumentation.
Fejlfinding af Android: Fejlfinding
Brug af Logcat til at logge og rette kode er okay for meget enkle apps. For mere komplicerede apps kan denne form for fejlfinding være kedelig. I stedet vil du have noget, der lader dig debugge appens eksekverbare kode. Android Studios indbyggede fejlfindingsværktøj tilbyder mange muligheder, herunder følgende:
- Vælg en enhed, hvor din app skal fejles.
- Indstil breakpoints i din applikationskode (Java, Kotlin eller C / C ++).
- Undersøg variabler og evaluer udtryk ved runtime.
Der er nogle forudsætninger, før du bruger dette fejlfindingsværktøj:
- Hvis din app indeholder C / C ++ kildekode, skal du installere LLDB fra SDK Manager (se figur 3). Heldigvis er eksempelappen til denne serie (W2A) indeholder ikke C / C ++ - kode, så vi kan ignorere denne forudsætning.
Jeff Friesen
- Du skal aktivere fejlretning på en tilsluttet enhed. Men hvis du bruger en emulator (som vi er i dette eksempel), kan du ignorere denne forudsætning. Fejlfinding er som standard aktiveret på emulerede enheder.
- Du skal køre en version, der kan debugges. Som standard oprettes dette for dig, så i mange tilfælde (inklusive dette eksempel) behøver du ikke bekymre dig om det.
Lad os gennemgå en hurtig debugging-session.
Enkel Android-fejlretning
Forudsat at du kører Android Studio med editorvinduet til eksempelappen (W2A.java) Åbn, dit første trin er at indstille et brudpunkt på offentligt tomrum onCreate (Bundle savedInstanceState)
linje. Indstil brudpunktet ved at fremhæve denne linje og gøre et af følgende:
- Klik på tagrenderområdet til venstre for linjen; linjen skulle blive lyserød som svar.
- Vælg Skift linjeskiftpunkt fra Løb menu.
- Trykke Ctrl og F8 samtidigt.
Vælg nu Fejlret 'app' fra Løb menu, eller klik på det relevante ikon på værktøjslinjen. Hvis emulatoren ikke kører, kan du observere Vælg Implementeringsmål dialog boks. Jeg valgte Nexus 5X API 15 og klikkede Okay.
Mens du venter på, at den emulerede enhed kommer online, skal du klikke på Fejlfinde knappen på værktøjsvindu-bjælken for at få vist Fejlfinde vindue. Til sidst skal du se noget, der ligner figur 4.
Jeff FriesenDet Fejlfinde vindue indeholder ikoner til at træde over, ind i og ud af en metode og mere. Figur 5 viser, hvad der sker, når vi Træd over en metode.
Jeff FriesenKlik på det relevante ikon, og vælg Træd over fra Løb menu, eller tryk på F8. Dette lader os gå dybere ind i onCreate ()
metode, mens du træder over hvert metodeopkald.
Vælg linjen med lukningen }
karakter til onCreate ()
metode, og vælg derefter Kør til markøren. Du modtager en meddelelse om, at applikationen kører. Når du har låst enheden op, skal du se eksempelappens aktivitetsvindue.
Mere om fejlfinding
Tjek Googles "Fejlret din app" for at lære mere om fejlfinding i Android Studio; for eksempel hvordan man bruger forskellige slags breakpoints.
Fejlfinding med GAPID
Selvom det ikke er dækket her, anbefaler jeg at tjekke GAPID: Graphics API Debugger, en samling af fejlfindingsværktøjer, der giver dig mulighed for at inspicere, tilpasse og afspille opkald fra en Android-app til en grafikdriver.
Kodeinspektion med Lint
Uanset hvor omhyggeligt du skriver det, vil din kildekode sandsynligvis indeholde fejl, stilistiske problemer og muligvis henvise til ressourcer, der er inaktive af en eller anden grund. EN linter er en type værktøj, der scanner kildekoden for bevis for disse og andre bit af grim fnug, som den rapporterer til udvikleren.
Fnug er en indbygget linter til Android SDK. Du kan bruge den til at finde problemer som forældede elementer og API-opkald, der ikke understøttes af din mål-API.
For at køre Lint fra Android Studio skal du vælge Undersøg kode ... fra Analysere menu. Hvis du gør det, aktiveres Angiv inspektionsomfang dialog boks.
Jeff FriesenI dialogboksen skal du vælge det ønskede omfang (hele projektet, i dette tilfælde) og derefter klikke på Okay for at starte inspektionen. Resultaterne vises i Inspektionsresultater vindue, hvor de er organiseret efter kategori.
Jeff FriesenI overensstemmelse med sin natur har Lint valgt et par fluff stykker, der ellers kunne rodet i applikationskoden. Når det er set, er det nemt at rette de tre Java-advarsler vist i figur 8: erklær simpelthen androidAnimation
privat
og fjern kasterne fra de to findViewById ()
metodeopkald.
Mere om Lint
Tjek "Forbedre din kode med fnugchecks" for at lære mere om brug af Lint i Android Studio og for at lære om Android SDK's uafhængige Lint-værktøj.
Installation og brug af Android Studio-plugins
Mens indbyggede værktøjer har deres fortjeneste, er mange andre værktøjer tilgængelige som plugins. I dette afsnit ser vi på tre plugins til forbedring af produktiviteten af din kodning i Android Studio:
- ADB-idé
- Codota
- Lombok-plugin
Android Studio plugins manager
Android Studios plugins manager gør det meget nemt at finde og installere plugins. Aktiver plugins manager ved at vælge Fil >Indstillinger efterfulgt af Plugins fra Indstillinger dialog boks:
Jeff FriesenKlik derefter på Gennemse arkiver ... for at aktivere Gennemse arkiver dialogboks, der viser en komplet liste over understøttede plugins. Vi bruger denne dialog til at vælge vores første plugin, ADB Idea.
Jeff FriesenØg din Android-produktivitet
Kode genveje: ADB Idé
ADB-idé fremskynder den daglige Android-udvikling ved at give hurtig adgang til almindeligt anvendte ADB-kommandoer, såsom start og afinstallation af en app.
Vælg ADB-idé på lagerlisten over plugins, og klik derefter på Installere knap. Android Studio fortsætter med at downloade og installere pluginet. Derefter mærkes det igen Installere til Genstart Android Studio. For hvert plugin måtte jeg genvælge pluginet efter at have klikket Genstart Android Studio, og klik derefter på denne knap endnu en gang for at genstarte Android Studio.
Jeff FriesenNår det er installeret, giver Android Studio dig adgang til ADB Idea fra dets Værktøjer menu. Vælg Værktøjer> ADB-idé og vælg den relevante kommando fra den resulterende pop op-menu.
Jeff FriesenEfter at jeg valgte ADB Genstart app, Observerede jeg følgende meddelelser i Hændelseslog vindue samt den genstartede app på min Amazon Kindle-enhed.
Jeff FriesenFind brugbar kode: Codota
Du kan bruge Codota plugin for at få adgang til Codota-søgemaskinen, som giver dig mulighed for at kigge igennem millioner af offentligt tilgængelige Java-kildekodestykker efter løsninger på Android-kodningsproblemer.
Jeff FriesenVælg Codota i lagerlisten over plugins, og klik derefter på Installere knap. Når Android Studio har downloadet og installeret pluginet, mærker det igen Installere knap til Genstart Android Studio. Genstart aktiverer Codota.
Ved genstart vil du støde på Codota-godkendelse dialog boks. Klik på linket og følg instruktionerne for at modtage tokenet. Indsæt derefter tokenet i den ovennævnte dialogboks, og klik Gå.
Jeff FriesenAndroid Studio giver dig adgang til Codota ved at højreklikke på Java-kode i editorvinduet og vælge Få relevante eksempler menupunkt som vist i figur 16.
Jeff FriesenKlik på dette menupunkt resulterer i, at browseren præsenterer en side med relevante kodeeksempler. For eksempel præsenterer den følgende side eksempler, der er relevante for findViewById
:
Autogenerer Java-kode: Lombok
Projekt Lombok tilbyder et sæt kommentarer, som du kan bruge i stedet for kedelpladekode, hvilket sparer dig tid til at skrive denne kode manuelt.
Jeff FriesenVælg Lombok-plugin i lagerlisten over plugins, og klik derefter på Installere. Når Android Studio har downloadet og installeret pluginet, beder det dig om det Genstart Android Studio. Genstart aktiverer Lombok Plugin.