Jetpack — co to je, komponenty architektury

Autor: IT Sectr Publikováno: 2026-05-01 Doba čtení: 9 min

Jetpack — je sada knihoven Android od Google, které zjednodušují vývoj a urychlují vytváření stabilních aplikací. Komponenty jako ViewModel, Room a Navigation řeší typické úkoly: správu životního cyklu, ukládání dat a navigaci. Podle Android Developers (2026) Jetpack pokrývá více než 50 knihoven, z nichž každá je zpětně kompatibilní s Android 5.0 (API 21) prostřednictvím AndroidX — knihovny kompatibility, která nahradila Support Library.

Hlavní body

  • Android Jetpack — sada 50+ knihoven, které urychlují vývoj aplikací pro Android a zajišťují zpětnou kompatibilitu prostřednictvím AndroidX.
  • ViewModel přežije otáčení obrazovky a uchovává data při opětovném vytvoření Activity, čímž zabraňuje ztrátě uživatelského vstupu.
  • Room — ORM vrstva nad SQLite s kontrolou SQL dotazů v době kompilace a podporou korutin.
  • Navigation Component spravuje přechody mezi obrazovkami pomocí navigačních grafů s type-safe argumenty.
  • Lifecycle umožňuje reagovat na události životního cyklu Activity/Fragment bez boilerplate kódu v kontrolérech.

Co je Android Jetpack?

Android Jetpack — je kolekce knihoven, nástrojů a architektonických doporučení od Google, představená v roce 2018 na Google I/O. Jetpack nahradil Support Library a Android Architecture Components a sjednotil je do jednoho ekosystému. Před Jetpackem se každá knihovna Android aktualizovala nezávisle, což způsobovalo konflikty verzí. Jetpack synchronizoval verze pod jednotným identifikátorem AndroidX a zavedl model stabilních hlavních verzí s menšími opravami.

Knihovny Jetpack se dělí do čtyř kategorií: Architecture (ViewModel, Room, Navigation, WorkManager), UI (Fragment, Compose, Animation, Palette), Behavior (DownloadManager, Media, Permissions, Sharing), Foundation (Android KTX, Multidex, AppCompat). Každá kategorie řeší úkoly určité vrstvy aplikace — od správy dat až po uživatelské rozhraní.

Filozofie Jetpacku

Google prosazuje tři principy Jetpacku: accelerate development (méně boilerplate, více obchodní logiky), eliminate boilerplate (ViewModel odstraňuje ruční ukládání stavu, Room — psaní SQLiteOpenHelper) a build with confidence (každá knihovna prochází 15+ tisíci testy před vydáním). Podle Android Developers (2026) mají aplikace na Jetpacku o 30% méně pádů souvisejících s životním cyklem.

AndroidX jako základ

Všechny knihovny Jetpack jsou distribuovány pod identifikátorem AndroidX (artefakty ve tvaru androidx.*). AndroidX nahradil Support Library (artefakty com.android.support.*), rozdělil monolitickou knihovnu na modulární artefakty s nezávislým verzováním. Migrace na AndroidX se provádí pomocí volby android.useAndroidX=true v gradle.properties — Android Studio automaticky převede importy.

Architektonické komponenty: ViewModel, Lifecycle, LiveData

ViewModel — centrální komponenta architektury Jetpack, která ukládá data UI. Na rozdíl od Activity, která je zničena při otáčení obrazovky, ViewModel zůstává v paměti. Uživatel vyplní formulář, otočí telefon — data se neztratí. ViewModel se automaticky vyčistí, když LifecycleOwner (Activity nebo Fragment) definitivně ukončí svůj životní cyklus (finish).

kotlin
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("Obrazovka spuštěna")
    }
}

LiveData — pozorovatelný kontejner pro data, který bere v úvahu životní cyklus. Pokud obrazovka není viditelná (onStop), LiveData neodesílá aktualizace — to zabraňuje únikům paměti a pádům při pokusu o aktualizaci neexistující Activity. Lifecycle — třída, která ukládá aktuální stav (CREATED, STARTED, RESUMED) a umožňuje ostatním komponentám přihlásit se k odběru změn stavu. Společně ViewModel, LiveData a Lifecycle tvoří základ reaktivní architektury Android.

ViewModelScope a korutiny

viewModelScope — vestavěný CoroutineScope vázaný na životní cyklus ViewModel. Všechny korutiny spuštěné v tomto scope jsou automaticky zrušeny při čištění ViewModel. To eliminuje ruční správu Disposable a CompositeDisposable v každém ViewModel. Pro práci s viewModelScope je vyžadována závislost androidx.lifecycle:lifecycle-viewmodel-ktx.

Room: práce s databází na Androidu

Room — je ORM knihovna Jetpacku, která poskytuje abstraktní vrstvu nad SQLite. Místo psaní nezpracovaných SQL dotazů a ručního převodu Cursor na objekty vývojář deklaruje Entity (tabulku), DAO (Data Access Object) a Database (vstupní bod). Room kontroluje SQL dotazy v době kompilace prostřednictvím anotace @Query — pokud tabulky nebo sloupce neexistují, sestavení selže se srozumitelnou chybou.

kotlin
@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 popisuje tabulku se třemi sloupci. DAO deklaruje suspend-funkce pro práci s korutinami — dotaz se automaticky provádí na pozadí. Room podporuje migrace prostřednictvím anotace @Migration: vývojář popíše SQL skript přechodu mezi verzemi a Room jej provede bez ztráty dat. Při neexistenci migrace Room vyvolá IllegalStateException — tím jsou projekty chráněny před náhodnou ztrátou dat při aktualizaci schématu.

TypeConverters a vztahy

Room ukládá pouze primitivní typy a jejich obaly. Pro ukládání seznamů, Date nebo vlastních objektů se používá @TypeConverter — statická metoda převádějící typ na String (JSON) nebo Long (timestamp). Vztahy mezi tabulkami se modelují pomocí vnořených objektů s anotací @Relation a pomocných tříd POJO s @Transaction pro efektivní join dotazy.

Navigation Component — knihovna Jetpacku pro správu přechodů mezi obrazovkami. Místo ručního volání FragmentTransaction vývojář vytvoří navigační graf (XML soubor s uzly-destinacemi) a systém vygeneruje třídu Directions s type-safe metodami přechodů. Navigation Component zaručuje správnou funkci back stack, deep links a předávání argumentů mezi obrazovkami.

kotlin
// nav_graph.xml
// <fragment android:id="@+id/profileFragment"
//     android:name=".ProfileFragment">
//     <argument android:name="userId"
//         android:defaultValue="-1"
//         app:argType="integer" />
// </fragment>

// V kódu fragmentu:
class ProfileFragment : Fragment() {
    private val args: ProfileFragmentArgs by navArgs()

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        loadProfile(args.userId)
    }
}

Argumenty userId jsou předávány v navigačním grafu s určením typu (integer) a výchozí hodnoty. Třída ProfileFragmentArgs je automaticky generována pluginem Navigation Safe Args — obsahuje všechny argumenty se správnými typy Kotlin. Hluboké odkazy se konfigurují v grafu: app:deepLink="app://profile/{userId}". Navigation Component sám analyzuje URL a vytváří back stack, jako by uživatel procházel rozhraním.

Bottom Navigation a Conditional Navigation

Navigation Component se integruje s BottomNavigationView prostřednictvím NavController: každá položka menu je vázána na destinaci v grafu. Přechod mezi kartami znovu nevytváří fragment — Navigation Component uchovává stav prostřednictvím NavBackStackEntry. Pro podmíněnou navigaci (zobrazení přihlášení, pokud není autorizován) se používá navController.navigate(condition) s kontrolou v onCreate.

AndroidX: Support Library nové generace

AndroidX — je přepracovaná architektura Support Library, ve které každá knihovna získala vlastní artefakt s nezávislou verzí. Místo jediného com.android.support:appcompat-v7:28.0.0 AndroidX nabízí androidx.appcompat:appcompat:1.7.0, androidx.recyclerview:recyclerview:1.4.0 a tak dále. To odstranilo problém, kdy různé závislosti tahaly různé verze Support Library, což způsobovalo konflikt.

Migrace na AndroidX se provádí automaticky v Android Studio 3.2+ pomocí nabídky Refactor → Migrate to AndroidX. Studio nahrazuje všechny importy v Java/Kotlin souborech, manifestech a zdrojích. Zpětná kompatibilita — hlavní výhoda AndroidX: knihovny fungují na Android 5.0 (API 21) a vyšším, pokrývající 97% aktivních zařízení podle Google Play Console (2025).

Hlavní artefakty AndroidX

Nejčastěji používané artefakty: appcompat (tmavý motiv, Material Design na starých API), recyclerview (adaptivní seznamy s ViewHolder), constraintlayout (flexibilní kontejner s plochou hierarchií), cardview (karty Material Design), preference (obrazovka nastavení ve stylu Material). Každý artefakt je verzován nezávisle, což urychluje získávání oprav bez aktualizace celého balíku.

Další důležité knihovny Jetpack

Kromě Architecture a AndroidX obsahuje Jetpack mnoho specializovaných knihoven pro typické úkoly mobilního vývoje. WorkManager — pro úlohy na pozadí s garantovaným provedením (synchronizace, nahrávání logů), podporuje periodické a odložené úlohy, stejně jako omezení sítě a baterie. DataStore — náhrada za SharedPreferences založená na korutinách, podporující typované vlastnosti (Preferences DataStore) a Protocol Buffers (Proto DataStore).

  • Hilt — DI framework založený na Dagger, zjednodušující vkládání závislostí pomocí anotací @HiltViewModel, @Inject, @Module. Vestavěná integrace s ViewModel a Navigation.
  • Paging 3 — knihovna pro stránkové načítání dat ze sítě/DB s podporou RemoteMediator (síť + cache), StateFlow a Compose.
  • CameraX — API pro práci s kamerou, abstrahující rozdíly výrobců (Samsung, Xiaomi, Honor) prostřednictvím jednotného rozhraní CameraController.
  • Security Crypto — šifrování dat pomocí EncryptedSharedPreferences a EncryptedFile založené na AES-256 s hlavním klíčem v Android Keystore.

Každá knihovna má vlastní minimální SDK a artefakt. Google vydává hlavní verze jednou ročně (souběžně s vydáním Android) a bezpečnostní záplaty — čtvrtletně. Doporučení — připojujte pouze potřebné knihovny, abyste nezvětšovali velikost APK. Jetpack jako celek (všechny artefakty) váží přes 20 MB, ale typická aplikace používá 5-7 knihoven, přidávajících do APK 3-5 MB.

Často kladené otázky

Je nutná migrace z Support Library na AndroidX?

Ano, Google ukončil podporu Support Library v roce 2019. Všechny nové knihovny Jetpack a Google Play Services vyžadují AndroidX. Migrace se provádí za 30-60 minut pomocí Android Studio.

Lze Jetpack použít s Java nebo pouze s Kotlin?

Jetpack je plně kompatibilní s Java. Nicméně mnoho funkcí (viewModelScope, korutiny, Compose) je dostupných pouze v Kotlin. Google doporučuje Kotlin pro nové projekty.

Čím se liší ViewModel od onSaveInstanceState?

ViewModel ukládá objekty v paměti a přežije otáčení. onSaveInstanceState je vhodný pouze pro serializovatelné primitivy (Bundle). ViewModel se neukládá při zabití procesu — k tomu je potřeba SavedStateHandle.

Kdy použít WorkManager místo korutin?

WorkManager — pro úlohy, které musí být provedeny i po zavření aplikace: synchronizace, nahrávání logů, odesílání analytiky. Korutiny — pro úlohy vázané na obrazovku.

Jak migrovat z SharedPreferences na DataStore?

Nahraďte importy SharedPreferences za DataStore<Preferences>. Čtení pomocí dataStore.data.first() (suspend), zápis pomocí dataStore.edit { ... }. DataStore je asynchronní a chráněný proti ANR.

Shrnutí

  • Android Jetpack — sada 50+ knihoven pro vývoj na Android, sjednocených pod AndroidX se zpětnou kompatibilitou až do API 21.
  • ViewModel přežije otáčení obrazovky a uchovává data UI, Lifecycle informuje komponenty o změně stavu Activity/Fragment.
  • Room — type-safe ORM nad SQLite s kompilační kontrolou dotazů, migracemi a podporou korutin.
  • Navigation Component spravuje přechody pomocí grafů s type-safe argumenty a automatickým deep link.
  • WorkManager garantuje provádění úloh na pozadí i po zavření aplikace, DataStore nahrazuje SharedPreferences.
  • Jetpack se dělí do čtyř kategorií: Architecture, UI, Behavior, Foundation — každá pokrývá svou vrstvu aplikace.
  • Aplikace na Jetpacku mají o 30% méně pádů souvisejících s životním cyklem a jsou vyvíjeny rychleji díky hotovým architektonickým řešením.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také