Jetpack Compose, Googles nye UI-værktøjssæt til Android, er nu i alfa

click fraud protection

Jetpack Compose, Googles UI-værktøjssæt til udvikling af Android-apps, er nu i alfa. Det er fuldt ud interoperabelt med Androids standardvisninger.

Når det kommer til at udvikle en app, er der mange måder at gøre det på. Du kan vælge hvilken eller hvilke platforme du vil udvikle til, hvilket eller hvilke programmeringssprog du vil bruge og meget mere.

Tilbage i efteråret 2019, Google indført en ny ramme til opbygning af brugergrænseflader i Android ved hjælp af Kotlin. Indtil nu har det været i en udviklingstilstand med hyppige brudskift og tonsvis af manglende funktioner. Men i dag har Google skubbet Jetpack Compose til alpha-udgivelsestilstanden, hvilket betyder, at det er et skridt tættere på at blive brugt i projekter af produktionskvalitet.

Hvad er Jetpack Compose?

Når du bygger en Android-app, er der normalt to hovedkomponenter, du skal forholde dig til: koden, til logik-baserede ting; og XML til layouts. Som standard bruger Android Java til kode og sit eget sæt XML-tags til layout.

For mange er Java og XML helt fint, især for mere simple apps. Men begge systemer har deres begrænsninger og irritationsmomenter. Med introduktionen af ​​Kotlin som en officiel (og anbefalet) sprog til Android-udvikling, kodningssiden ved at lave en Android-app blev uden tvivl meget nemmere. Med Kotlins praktiske funktioner som indbygget nulbeskyttelse og udvidelsesfunktioner ser koden renere ud og er lettere at læse.

Men Kotlin ændrede ikke noget med Androids layouts. For at lave et komplekst layout skulle du stadig oprette en XML-fil og designe den der. Dette har nogle bemærkelsesværdige ulemper, herunder den iboende adskillelse mellem koden og XML. Hvis du for eksempel har en konstant streng i din kode, kan du ikke bare referere den fra XML, så hvis den streng ændrer sig i kode, skal du huske at opdatere den i XML også.

Indtast Jetpack Compose. Dette er Googles svar på den stadig mere klodsede XML-layoutdesignproces i Android. I stedet for at designe din apps brugergrænseflade i XML, kan du gøre det direkte fra din kode. Mens kodebaserede layouts er mulige at oprette, er de normalt mindre vedligeholdelige end XML og involverer let brudte biblioteker. Compose er på den anden side designet til at fungere direkte inde i Kotlin: ikke mere XML.

Jetpack Compose er også en ret radikal afvigelse fra standardimperativt design af XML-layouts. I stedet minder det mere om React eller Flutter med deklarative layouts, der opdaterer sig selv, når data ændres, i stedet for at stole på, at udvikleren implementerer denne logik.

Hvad understøttes

Så Jetpack Compose er i alfa nu. Hvad betyder det? Tja, mange ting.

Interoperabilitet med visninger

Ligesom Kotlin er fuldt ud interoperabel med Java, er Jetpack Compose fuldt ud interoperabel med Androids standardvisninger. Det betyder en del ting.

For det første vil det være meget nemmere at migrere til Jetpack Compose, hvis du vil. I stedet for at skulle konvertere alle dine tilpassede visninger og layouts til Composables, vil du være i stand til bare at lave dine nye layouts og komponenter i Compose. Har du et bibliotek, der bruger "legacy" visninger, men din app er designet med Compose? Intet problem. Du kan tilføje View direkte til din Composable-funktion. Har du ikke taget springet til Compose endnu, men du vil bruge et bibliotek, der er afhængigt af Composables? Igen, intet problem. Du skal bare sætte Composable direkte ind i dit layout.

Hvad angår temaer, er det ikke helt så plug-and-play som layoutinteroperabilitet. Imidlertid, Google har lavet et bibliotek at tilpasse dine standard XML-temaer til Compose-kompatible temaer, hvilket hjælper med at holde tingene centraliserede og undgå dobbeltarbejde.

Animationer

Der er egentlig ikke for meget at sige her, bortset fra at Jetpack Compose understøtter animationer, ligesom Androids View framework. Du kan flytte, ændre størrelse og rotere til dit hjertes lyst.

Dovne lister

En doven liste er i bund og grund Composes version af en RecyclerView. Den lægger kun elementer ud efter behov, sparer på RAM og øger ydeevnen. Da dette er Compose, er lister naturligvis betydeligt nemmere at implementere.

Constraint Layout

En af de mere kraftfulde visninger i Android er ConstraintLayout. Dette giver dig mulighed for at placere, størrelse og vægte underordnede visninger i forhold til hinanden, samtidig med at visse animationer bliver nemmere. Hvis du var bekymret for at miste denne funktionalitet i Compose, burde du ikke være det, for den er her også.

Materiale UI-komponenter

Et andet sæt kraftfulde visninger er Googles bibliotek med materialekomponenter. Det meste af det, der er herinde, er standardvisninger og layouts, du kan finde i den indbyggede View-ramme. Men de er tilpasset eller pakket ind for at give ekstra funktionalitet og gøre tematisering lettere, og de har også fundet vej til Compose.

Afprøvning

En vigtig del af udviklingen af ​​en app er at teste den. For en simpel app kan du gøre dette manuelt ved at installere og bruge den. Mere komplekse projekter kan dog have stor gavn af automatiserede testrammer, der gør det meste af det hårde arbejde for dig. Jetpack Compose understøtter automatiseret test, så du kan gøre din app så stabil som muligt.

Tilgængelighedsfunktioner

Tilgængelighed er en vigtig del af vores samfund. Uden tilgængelighedsfunktioner i vores teknologi ville en masse mennesker simpelthen blive lukket ude fra de fordele, vores telefoner, fjernsyn og hvad der ellers giver. Jetpack Compose er stadig i alfa, så tilgængelighedssupport er ikke komplet, men Google husker det under udviklingen, og der er allerede rudimentær support til stede.

Android Studio

Ikke alle funktionerne i Jetpack Compose er dog i selve Jetpack Compose. Android Studio og Kotlin har også plugins og udvidelser for lettere at komponere.

Kotlin Compiler Plugin

Som med Kotlin JVM er der et compiler-plugin i Android Studio til korrekt at konvertere dine Compose-funktioner til kode, som Android faktisk kan forstå og følge.

Interaktive forhåndsvisninger

Ligesom med dine standard XML-layouts, kommer Android Studio med en forhåndsvisning af layout til Jetpack Compose. Selvom det i øjeblikket ikke er helt så praktisk som XML-forhåndsvisningerne i nogle aspekter – så skal du bygge dit projekt til forhåndsvisningen for at opdatere, og lave en dedikeret forhåndsvisningsfunktion - den kommer med en bemærkelsesværdig fordel: interaktiv forhåndsvisninger.

En interaktiv forhåndsvisning er bare en normal forhåndsvisning, men interaktive. Skørt, jeg ved det. Hvad dette dog betyder er, at du faktisk kan skrive tekst i tekstbokse, klikke på knapper og godt interagere med dine Composables, uden selv at skulle installere dem.

Enkelt komponerbar implementering

Hvis du rent faktisk vil implementere (dvs. installere) dit layout for at se, hvordan det fungerer på en rigtig enhed, kan denne funktion måske hjælpe dig. Med normale XML-layouts skal du bygge og installere hele appen for at se, hvordan et layout fungerer i den virkelige verden. Hvis det layout, du vil teste, ikke er på den primære skærm, skal du muligvis trykke meget for at komme til det.

Og det er her, muligheden for kun at implementere en enkelt Composable kommer i spil. I stedet for at skulle bygge og installere din app og derefter navigere til det layout, du tester, kan du bare implementere layoutet. Android Studio vil generere og åbne en wrapper-aktivitet, der kun viser den Composable, du har implementeret. Dette kan gøre test og design meget hurtigere og kan endda hjælpe med at isolere problemer relateret til elementinteraktion.

Kodefuldførelse

Hvis din IDE ikke har kodefuldførelse, er det så overhovedet en IDE? Nej. Nej, det er det ikke. Så selvfølgelig understøtter Android Studio fuld kodefuldførelse til Jetpack Compose.


Selvom dette ikke er alt, hvad Jetpack Compose bringer til bordet, viser funktionerne og adfærden ovenfor, hvor kraftfuld Google ønsker, at denne ramme skal være. Og selvom den stadig er i alfa, er det et skridt foran dens tidligere "udviklings"-status. Hvis du holdt ud med virkelig at bruge Jetpack Compose (som jeg var), er det måske på tide at prøve det igen.