Jetpack Compose, Googles UI-verktøysett for utvikling av Android-apper, er nå i alfa. Den er fullstendig interoperabel med Androids standardvisninger.
Når det gjelder å utvikle en app, er det mange måter å gå frem på. Du kan velge hvilken(e) plattform(er) du vil utvikle for, hvilke programmeringsspråk(er) du vil bruke, og mye mer.
Tilbake høsten 2019, Google introdusert et nytt rammeverk for å bygge brukergrensesnitt i Android ved å bruke Kotlin. Inntil nå har den vært i en utviklingstilstand, med hyppige endringer og mange manglende funksjoner. Men i dag har Google presset Jetpack Compose til alfa-utgivelsestilstanden, noe som betyr at det er ett skritt nærmere å bli brukt i prosjekter av produksjonskvalitet.
Hva er Jetpack Compose?
Når du bygger en Android-app, er det vanligvis to hovedkomponenter du må forholde deg til: koden, for logikkbaserte ting; og XML, for oppsett. Som standard bruker Android Java for kode og sitt eget sett med XML-koder for oppsett.
For mange er Java og XML helt greit, spesielt for enklere apper. Men begge systemene har sine begrensninger og irritasjonsmomenter. Med introduksjonen av Kotlin som en
offisielt (og anbefalt) språk for Android-utvikling, kodesiden ved å lage en Android-app ble uten tvil mye enklere. Med Kotlins nyttige funksjoner som innebygd nullbeskyttelse og utvidelsesfunksjoner, ser koden renere ut og er lettere å lese.Men Kotlin endret ikke noe med Androids oppsett. For å lage en kompleks layout, trengte du fortsatt å lage en XML-fil og designe den der. Dette har noen bemerkelsesverdige ulemper, inkludert den iboende separasjonen mellom koden og XML. Hvis du for eksempel har en konstant streng i koden din, kan du ikke bare referere den fra XML, så hvis den strengen endres i kode, må du huske å oppdatere den i XML også.
Gå inn i Jetpack Compose. Dette er Googles svar på den stadig mer klønete XML-layoutdesignprosessen i Android. I stedet for å designe appens brukergrensesnitt i XML, kan du gjøre det rett fra koden din. Selv om kodebaserte oppsett er mulige å lage, er de vanligvis mindre vedlikeholdbare enn XML og involverer lett ødelagte biblioteker. Compose, på den annen side, er designet for å fungere rett inne i Kotlin: ikke mer XML.
Jetpack Compose er også en ganske radikal avvik fra standard imperativ design av XML-oppsett. I stedet ligner det mer på React eller Flutter, med deklarative oppsett som oppdaterer seg selv når data endres, i stedet for å stole på at utvikleren implementerer den logikken.
Hva støttes
Så Jetpack Compose er i alfa nå. Hva betyr det? Vel, mange ting.
Interoperabilitet med visninger
Akkurat som Kotlin er fullstendig interoperabel med Java, er Jetpack Compose fullstendig interoperabel med Androids standard Views. Dette betyr ganske mange ting.
For det første vil det være mye lettere å migrere til Jetpack Compose hvis du vil. I stedet for å måtte konvertere alle dine egendefinerte visninger og oppsett til Composables, vil du bare kunne lage dine nye oppsett og komponenter i Compose. Har du et bibliotek som bruker «legacy» Views, men appen din er designet med Compose? Ikke noe problem. Du kan legge til View rett inn i din Composable-funksjon. Har du ikke tatt steget til Compose ennå, men du vil bruke et bibliotek som er avhengig av Composables? Igjen, ikke noe problem. Bare sett Composable rett inn i oppsettet ditt.
Når det gjelder tema, er det ikke fullt så plug-and-play som interoperabilitet med layout. Derimot, Google har laget et bibliotek å tilpasse standard XML-temaene dine til Compose-kompatible temaer, noe som bidrar til å holde ting sentralisert og unngå duplisering.
Animasjoner
Det er egentlig ikke så mye å si her, bortsett fra at Jetpack Compose støtter animasjoner, akkurat som Androids View-rammeverk. Du kan flytte, endre størrelse og rotere etter hjertens lyst.
Late lister
En lat liste er egentlig Compose sin versjon av en RecyclerView. Den legger kun ut elementer etter behov, sparer på RAM og øker ytelsen. Selvfølgelig er lister betydelig enklere å implementere ved å være Compose.
Begrensningsoppsett
En av de kraftigere visningene i Android er Constraint Layout. Dette lar deg plassere, størrelse og vekte barnevisninger i forhold til hverandre, samtidig som enkelte animasjoner blir enklere. Hvis du var bekymret for å miste denne funksjonaliteten i Compose, burde du ikke være det, for den er her også.
Materiale UI-komponenter
Et annet sett med kraftige visninger er Googles Material Components-bibliotek. Det meste av det som finnes her er standard visninger og oppsett du kan finne i det opprinnelige visningsrammeverket. Men de er tilpasset eller pakket inn for å gi ekstra funksjonalitet og gjøre tematisering enklere, og de har også kommet seg til Compose.
Testing
En viktig del av utviklingen av en app er å teste den. For en enkel app kan du gjøre dette manuelt ved å installere og bruke den. Imidlertid kan mer komplekse prosjekter dra stor nytte av automatiserte testrammeverk som gjør det meste av det harde arbeidet for deg. Jetpack Compose støtter automatisert testing slik at du kan gjøre appen din så stabil som mulig.
Tilgjengelighetsfunksjoner
Tilgjengelighet er en viktig del av samfunnet vårt. Uten tilgjengelighetsfunksjoner i teknologien vår, ville mange mennesker rett og slett vært utestengt fra fordelene våre telefoner, TV-er og alt annet gir. Jetpack Compose er fortsatt i alfa, så tilgjengelighetsstøtte er ikke komplett, men Google har det i tankene under utviklingen, og rudimentær støtte er allerede til stede.
Android Studio
Ikke alle funksjonene til Jetpack Compose er i Jetpack Compose selv. Android Studio og Kotlin har også plugins og utvidelser for enklere komposisjon.
Kotlin Compiler Plugin
Som med Kotlin JVM, er det en kompilatorplugin i Android Studio for å konvertere Compose-funksjonene dine til kode som Android faktisk kan forstå og følge.
Interaktive forhåndsvisninger
Akkurat som med standard XML-oppsett, kommer Android Studio med en forhåndsvisning av layout for Jetpack Compose. Selv om det for øyeblikket ikke er fullt så praktisk som XML-forhåndsvisningene i noen aspekter – må du bygge prosjektet ditt for forhåndsvisningen for å oppdatere, og lage en dedikert forhåndsvisningsfunksjon – den kommer med en bemerkelsesverdig fordel: interaktiv forhåndsvisninger.
En interaktiv forhåndsvisning er bare en vanlig forhåndsvisning, men interaktiv. Galt, jeg vet. Hva dette betyr er imidlertid at du faktisk kan skrive inn tekst i tekstbokser, klikke på knapper og, vel, samhandle med Composables, uten engang å måtte distribuere dem.
Enkel komponerbar distribusjon
Hvis du faktisk ønsker å distribuere (dvs. installere) oppsettet ditt for å se hvordan det fungerer på en ekte enhet, kan denne funksjonen hjelpe deg. Med vanlige XML-oppsett, for å se hvordan et oppsett fungerer i den virkelige verden, må du bygge og installere hele appen. Hvis oppsettet du vil teste ikke er på hovedskjermen, kan det hende du trykker mye for å komme til det.
Og det er her muligheten til å distribuere kun én enkelt Composable kommer inn i bildet. I stedet for å måtte bygge og installere appen din, og deretter navigere til oppsettet du tester, kan du bare distribuere oppsettet. Android Studio vil generere og åpne en wrapper-aktivitet som bare viser Composable du implementerte. Dette kan gjøre testing og design mye raskere, og kan til og med bidra til å isolere problemer knyttet til elementinteraksjon.
Kodefullføring
Hvis IDEen din ikke har kodefullføring, er den til og med en IDE? Nei. Nei, det er det ikke. Så selvfølgelig støtter Android Studio full kodefullføring for Jetpack Compose.
Selv om dette ikke er alt Jetpack Compose bringer til bordet, viser funksjonene og oppførselen over hvor kraftig Google vil at dette rammeverket skal være. Og selv om den fortsatt er i alfa, er det et skritt foran dens tidligere "utviklings"-status. Hvis du ventet på å virkelig bruke Jetpack Compose (som jeg var), kan det være på tide å prøve det igjen.