Jetpack Compose, Googles UI-verktygssats för att utveckla Android-appar, är nu i alfa. Det är helt interoperabelt med Androids standardvyer.
När det kommer till att utveckla en app finns det många sätt att gå tillväga. Du kan välja vilken plattform du vill utveckla för, vilket eller vilka programmeringsspråk du vill använda och så mycket mer.
Tillbaka hösten 2019, Google infördes ett nytt ramverk för att bygga användargränssnitt i Android med Kotlin. Fram till nu har det varit i ett utvecklingstillstånd, med frekventa förändringar och massor av saknade funktioner. Men idag har Google flyttat Jetpack Compose till alpha release-tillståndet, vilket betyder att det är ett steg närmare att användas i projekt av produktionskvalitet.
Vad är Jetpack Compose?
När du bygger en Android-app är det vanligtvis två huvudkomponenter du måste ta itu med: koden, för logikbaserade saker; och XML, för layouter. Som standard använder Android Java för kod och sin egen uppsättning XML-taggar för layouter.
För många är Java och XML bra, speciellt för enklare appar. Men båda systemen har sina begränsningar och irritationsmoment. Med införandet av Kotlin som en
officiell (och rekommenderat) språk för Android-utveckling, kodningssidan av att skapa en Android-app blev utan tvekan mycket enklare. Med Kotlins praktiska funktioner som inbyggt nollskydd och förlängningsfunktioner ser koden renare ut och är lättare att läsa.Men Kotlin ändrade ingenting med Androids layouter. För att göra en komplex layout behövde du fortfarande skapa en XML-fil och designa den där. Detta har några anmärkningsvärda nackdelar, inklusive den inneboende separationen mellan koden och XML. Om du har en konstant sträng i din kod, till exempel, kan du inte bara referera till den från XML, så om den strängen ändras i kod måste du komma ihåg att uppdatera den i XML också.
Gå in i Jetpack Compose. Detta är Googles svar på den allt mer klumpiga XML-layoutdesignprocessen i Android. Istället för att designa appens användargränssnitt i XML kan du göra det direkt från din kod. Även om kodbaserade layouter är möjliga att skapa, är de vanligtvis mindre underhållbara än XML och involverar lättbrytbara bibliotek. Compose, å andra sidan, är utformad för att fungera rakt inuti Kotlin: ingen mer XML.
Jetpack Compose är också en ganska radikal avvikelse från standardimperativ design av XML-layouter. Istället är det mer likt React eller Flutter, med deklarativa layouter som uppdaterar sig själva när data ändras, istället för att förlita sig på att utvecklaren implementerar den logiken.
Vad som stöds
Så Jetpack Compose är i alfa nu. Vad betyder det? Tja, många saker.
Interoperabilitet med vyer
Precis som Kotlin är helt interoperabel med Java, är Jetpack Compose helt interoperabel med Androids standardvyer. Detta betyder en hel del saker.
För det första blir det mycket lättare att migrera till Jetpack Compose om du vill. Istället för att behöva konvertera alla dina anpassade vyer och layouter till Composables, kommer du att kunna skapa dina nya layouter och komponenter i Compose. Har du ett bibliotek som använder "legacy" Views, men din app är designad med Compose? Inga problem. Du kan lägga till vyn direkt i din komponerbara funktion. Har du inte hoppat till Compose än, men du vill använda ett bibliotek som är beroende av Composables? Återigen, inga problem. Sätt bara in Composable direkt i din layout.
När det gäller teman är det inte riktigt lika plug-and-play som layoutinteroperabilitet. Dock, Google har skapat ett bibliotek att anpassa dina vanliga XML-teman till Compose-kompatibla teman, vilket hjälper till att hålla saker centraliserade och undvika dubbelarbete.
Animationer
Det finns egentligen inte så mycket att säga här, förutom att Jetpack Compose stöder animationer, precis som Androids View-ramverk. Du kan flytta, ändra storlek och rotera så mycket du vill.
Lata listor
En lat lista är i huvudsak Composes version av en RecyclerView. Den lägger bara ut objekt efter behov, vilket sparar på RAM och ökar prestanda. Naturligtvis, eftersom det är Compose, är listor betydligt enklare att implementera.
Constraint Layout
En av de mer kraftfulla vyerna i Android är ConstraintLayout. Detta låter dig placera, storlek och vikta barnvyer i förhållande till varandra, samtidigt som vissa animeringar blir enklare. Om du var orolig för att förlora den här funktionen i Compose borde du inte vara det, för den finns här också.
Material UI-komponenter
En annan uppsättning kraftfulla vyer är Googles bibliotek med materialkomponenter. Det mesta som finns här är standardvyer och layouter som du kan hitta i det inbyggda View-ramverket. Men de är finjusterade eller inslagna för att ge extra funktionalitet och göra teman enklare, och de har också tagit sig till Compose.
Testning
En viktig del av att utveckla en app är att testa den. För en enkel app kan du göra detta manuellt genom att installera och använda den. Men mer komplexa projekt kan dra stor nytta av automatiserade testramar som gör det mesta av det hårda arbetet åt dig. Jetpack Compose stöder automatisk testning så att du kan göra din app så stabil som möjligt.
Tillgänglighetsfunktioner
Tillgänglighet är en viktig del av vårt samhälle. Utan tillgänglighetsfunktioner i vår teknik skulle många människor helt enkelt stängas ute från fördelarna som våra telefoner, tv-apparater och allt annat ger. Jetpack Compose är fortfarande i alfa, så tillgänglighetsstödet är inte komplett, men Google har det i åtanke under utvecklingen, och rudimentärt stöd finns redan.
Android Studio
Men inte alla funktioner i Jetpack Compose finns i själva Jetpack Compose. Android Studio och Kotlin har också plugins och expansioner för enklare komponerande.
Kotlin Compiler Plugin
Precis som med Kotlin JVM, finns det ett kompilatorplugin i Android Studio för att korrekt konvertera dina Compose-funktioner till kod som Android faktiskt kan förstå och följa.
Interaktiva förhandsvisningar
Precis som med dina vanliga XML-layouter kommer Android Studio med en layoutförhandsvisning för Jetpack Compose. Även om det för närvarande inte är riktigt lika bekvämt som XML-förhandsgranskningarna i vissa aspekter, måste du bygga ditt projekt för förhandsgranskningen för att uppdatera och skapa en dedikerad förhandsgranskningsfunktion – den kommer med en anmärkningsvärd fördel: interaktiv förhandsvisningar.
En interaktiv förhandsvisning är bara en normal förhandsvisning, men interaktiv. Galet, jag vet. Vad detta betyder är dock att du faktiskt kan skriva text i textrutor, klicka på knappar och, ja, interagera med dina Composables, utan att ens behöva distribuera dem.
En kompositionsbar distribution
Om du verkligen vill distribuera (dvs. installera) din layout för att se hur den fungerar på en riktig enhet, kan den här funktionen hjälpa dig. Med normala XML-layouter måste du bygga och installera hela appen för att se hur en layout fungerar i den verkliga världen. Om layouten du vill testa inte finns på den primära skärmen, kanske du trycker mycket för att komma till den.
Och det är där möjligheten att distribuera endast en enda Composable kommer in i bilden. Istället för att behöva bygga och installera din app och sedan navigera till layouten du testar, kan du bara distribuera layouten. Android Studio kommer att generera och öppna en wrapper-aktivitet som bara visar den Composable du distribuerade. Detta kan göra testning och design mycket snabbare, och kan till och med hjälpa till att isolera problem relaterade till elementinteraktion.
Kodkomplettering
Om din IDE inte har kodkomplettering, är det ens en IDE? Nej. Nej, det är det inte. Så naturligtvis stöder Android Studio fullständig kodkomplettering för Jetpack Compose.
Även om detta inte är allt som Jetpack Compose tillför bordet, visar funktionerna och beteendet ovan hur kraftfullt Google vill att detta ramverk ska vara. Och även om det fortfarande är i alfa, är det ett steg före dess tidigare "utvecklings"-status. Om du väntade på att verkligen använda Jetpack Compose (som jag var), kan det vara dags att ge det ett nytt försök nu.