Jetpack — är en uppsättning Android-bibliotek från Google som förenklar utveckling och påskyndar skapandet av stabila applikationer. Komponenter som ViewModel, Room och Navigation löser typiska uppgifter: hantering av livscykel, datalagring och navigering. Enligt Android Developers (2026) omfattar Jetpack över 50 bibliotek, som var och en är bakåtkompatibel med Android 5.0 (API 21) via AndroidX — kompatibilitetsbiblioteket som ersatte Support Library.
Huvudpunkter
Android Jetpack — är en samling bibliotek, verktyg och arkitekturrekommendationer från Google, presenterad 2018 på Google I/O. Jetpack ersatte Support Library och Android Architecture Components och förenade dem i ett ekosystem. Före Jetpack uppdaterades varje Android-bibliotek oberoende, vilket orsakade versionskonflikter. Jetpack synkroniserade versioner under en gemensam AndroidX-identifierare och införde en modell med stabila huvudversioner och mindre patchar.
Jetpack-biblioteken delas in i fyra kategorier: Architecture (ViewModel, Room, Navigation, WorkManager), UI (Fragment, Compose, Animation, Palette), Behavior (DownloadManager, Media, Permissions, Sharing), Foundation (Android KTX, Multidex, AppCompat). Varje kategori löser uppgifter för ett specifikt applikationslager — från datahantering till användargränssnitt.
Google främjar tre Jetpack-principer: accelerate development (mindre boilerplate, mer affärslogik), eliminate boilerplate (ViewModel eliminerar manuell sparande av tillstånd, Room — skrivande av SQLiteOpenHelper) och build with confidence (varje bibliotek genomgår 15+ tusen tester före lansering). Enligt Android Developers (2026) har appar på Jetpack 30% färre krascher relaterade till livscykeln.
Alla Jetpack-bibliotek distribueras under identifieraren AndroidX (artefakter av formen androidx.*). AndroidX ersatte Support Library (artefakter com.android.support.*), delade upp det monolitiska biblioteket i modulära artefakter med oberoende versionshantering. Migrering till AndroidX görs via alternativet android.useAndroidX=true i gradle.properties — Android Studio konverterar automatiskt importer.
ViewModel — den centrala komponenten i Jetpack-arkitekturen som lagrar UI-data. Till skillnad från Activity, som förstörs vid skärmrotation, finns ViewModel kvar i minnet. Användaren fyller i ett formulär, vrider på telefonen — data går inte förlorad. ViewModel rensas automatiskt när LifecycleOwner (Activity eller Fragment) avslutar sin livscykel permanent (finish).
class ProfileViewModel : ViewModel() {
private val _userName = MutableLiveData<String>()
val userName: LiveData<String> = _userName
fun loadProfile(userId: String) {
viewModelScope.launch {
val user = repository.getUser(userId)
_userName.value = user.name
}
}
}
@OptIn(ExperimentalLifecycleApi::class)
class MyObserver : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onStart() {
println("Skärmen startad")
}
}
LiveData — en observerbar container för data som tar hänsyn till livscykeln. Om skärmen inte är synlig (onStop) skickar LiveData inga uppdateringar — detta förhindrar minnesläckor och krascher vid försök att uppdatera en Activity som inte längre finns. Lifecycle — en klass som lagrar aktuellt tillstånd (CREATED, STARTED, RESUMED) och gör det möjligt för andra komponenter att prenumerera på tillståndsändringar. Tillsammans utgör ViewModel, LiveData och Lifecycle grunden för reaktiv Android-arkitektur.
viewModelScope — en inbyggd CoroutineScope bunden till ViewModels livscykel. Alla korutiner som startas i detta scope avbryts automatiskt när ViewModel rensas. Detta eliminerar manuell hantering av Disposable och CompositeDisposable i varje ViewModel. För att arbeta med viewModelScope krävs beroendet androidx.lifecycle:lifecycle-viewmodel-ktx.
Room — är ett ORM-bibliotek från Jetpack som tillhandahåller ett abstraktionslager ovanpå SQLite. Istället för att skriva råa SQL-frågor och manuellt konvertera Cursor till objekt, deklarerar utvecklaren Entity (tabell), DAO (Data Access Object) och Database (inkopplingspunkt). Room validerar SQL-frågor vid kompilering via annoteringen @Query — om tabeller eller kolumner inte finns, misslyckas bygget med ett tydligt felmeddelande.
@Entity
data class User(
@PrimaryKey val id: String,
val name: String,
val email: String
)
@Dao
interface UserDao {
@Query("SELECT * FROM User WHERE id = :userId")
suspend fun getUser(userId: String): User?
@Insert
suspend fun insertUser(user: User)
}
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
Entity User beskriver en tabell med tre kolumner. DAO deklarerar suspend-funktioner för att arbeta med korutiner — frågan körs automatiskt på en bakgrundstråd. Room stödjer migreringar via annoteringen @Migration: utvecklaren beskriver SQL-skriptet för övergång mellan versioner och Room kör det utan dataförlust. Vid avsaknad av migrering kastar Room IllegalStateException — på så sätt skyddas projekt från oavsiktlig dataförlust vid uppdatering av schemat.
Room lagrar endast primitiva typer och deras omslag. För lagring av listor, Date eller anpassade objekt används @TypeConverter — en statisk metod som konverterar typen till String (JSON) eller Long (timestamp). Relationer mellan tabeller modelleras via nästlade objekt med annoteringen @Relation och hjälp-POJO-klasser med @Transaction för effektiva join-frågor.
Navigation Component — ett Jetpack-bibliotek för att hantera övergångar mellan skärmar. Istället för att manuellt anropa FragmentTransaction skapar utvecklaren en navigeringsgraf (XML-fil med nod-destinationer) och systemet genererar klassen Directions med type-safe övergångsmetoder. Navigation Component garanterar korrekt funktion av back stack, deep links och överföring av argument mellan skärmar.
// nav_graph.xml
// <fragment android:id="@+id/profileFragment"
// android:name=".ProfileFragment">
// <argument android:name="userId"
// android:defaultValue="-1"
// app:argType="integer" />
// </fragment>
// I fragmentkoden:
class ProfileFragment : Fragment() {
private val args: ProfileFragmentArgs by navArgs()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
loadProfile(args.userId)
}
}
Argumenten userId skickas i navigeringsgrafen med angivande av typ (integer) och standardvärde. Klassen ProfileFragmentArgs genereras automatiskt av plugin-programmet Navigation Safe Args — den innehåller alla argument med korrekta Kotlin-typer. Djupa länkar konfigureras i grafen: app:deepLink="app://profile/{userId}". Navigation Component tolkar själv URL:en och skapar en back stack som om användaren navigerat via gränssnittet.
Navigation Component integreras med BottomNavigationView via NavController: varje menyalternativ binds till en destination i grafen. Övergång mellan flikar återskapar inte fragmentet — Navigation Component bevarar tillståndet via NavBackStackEntry. För villkorlig navigering (visa inloggning om inte autentiserad) används navController.navigate(condition) med kontroll i onCreate.
AndroidX — är en omdesignad arkitektur av Support Library, där varje bibliotek fick sin egen artefakt med oberoende version. Istället för en enda com.android.support:appcompat-v7:28.0.0 erbjuder AndroidX androidx.appcompat:appcompat:1.7.0, androidx.recyclerview:recyclerview:1.4.0 och så vidare. Detta löste problemet när olika beroenden drog olika versioner av Support Library, vilket orsakade konflikter.
Migrering till AndroidX utförs automatiskt i Android Studio 3.2+ via menyn Refactor → Migrate to AndroidX. Studio ersätter alla importer i Java/Kotlin-filer, manifest och resurser. Bakåtkompatibilitet — den främsta fördelen med AndroidX: biblioteken fungerar på Android 5.0 (API 21) och högre, och täcker 97% av aktiva enheter enligt Google Play Console (2025).
De mest använda artefakterna: appcompat (mörkt tema, Material Design på gamla API:er), recyclerview (adaptiva listor med ViewHolder), constraintlayout (flexibel container med platt hierarki), cardview (Material Design-kort), preference (inställningsskärm i Material-stil). Varje artefakt versionshanteras oberoende, vilket påskyndar mottagandet av korrigeringar utan att uppdatera hela paketet.
Förutom Architecture och AndroidX innehåller Jetpack många specialiserade bibliotek för typiska mobilutvecklingsuppgifter. WorkManager — för bakgrundsuppgifter med garanterad körning (synkronisering, uppladdning av loggar), stödjer periodiska och fördröjda uppgifter samt nätverks- och batteribegränsningar. DataStore — ersättning för SharedPreferences baserad på korutiner, som stödjer typade egenskaper (Preferences DataStore) och Protocol Buffers (Proto DataStore).
Varje bibliotek har sin egen minimala SDK och artefakt. Google släpper huvudversioner en gång om året (samtidigt med Android-släppet) och säkerhetsuppdateringar — kvartalsvis. Rekommendation — anslut endast nödvändiga bibliotek för att inte öka APK-storleken. Jetpack i sin helhet (alla artefakter) väger över 20 MB, men en typisk app använder 5-7 bibliotek och lägger till 3-5 MB till APK.
Vanliga frågor
Ja, Google avslutade stödet för Support Library 2019. Alla nya Jetpack- och Google Play Services-bibliotek kräver AndroidX. Migreringen tar 30-60 minuter via Android Studio.
Jetpack är helt kompatibelt med Java. Men många funktioner (viewModelScope, korutiner, Compose) är endast tillgängliga i Kotlin. Google rekommenderar Kotlin för nya projekt.
ViewModel lagrar objekt i minnet och överlever rotation. onSaveInstanceState är endast lämpligt för serialiserbara primitiver (Bundle). ViewModel sparas inte vid processdöd — för detta krävs SavedStateHandle.
WorkManager — för uppgifter som måste utföras även efter att appen stängts: synkronisering, uppladdning av loggar, skicka analysdata. Korutiner — för skärmbundna uppgifter.
Ersätt SharedPreferences-import med DataStore<Preferences>. Läsning via dataStore.data.first() (suspend), skrivning via dataStore.edit { ... }. DataStore är asynkron och skyddad mot ANR.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också