Jetpack — nedir, mimari bileşenleri

Yazar: IT Sectr Yayınlanma: 2026-05-01 Okuma süresi: 9 dk

Jetpack, geliştirmeyi basitleştiren ve kararlı uygulamalar oluşturmayı hızlandıran bir Google Android kütüphane setidir. ViewModel, Room ve Navigation gibi bileşenler tipik görevleri çözer: yaşam döngüsü yönetimi, veri depolama ve gezinme. Android Developers (2026)'ya göre Jetpack, 50'den fazla kütüphaneyi kapsar ve her biri AndroidX (Support Library'nin yerini alan uyumluluk kütüphanesi) aracılığıyla Android 5.0 (API 21) ile geriye dönük uyumludur.

Ana Noktalar

  • Android Jetpack — 50'den fazla kütüphaneden oluşan, Android uygulama geliştirmeyi hızlandıran ve AndroidX aracılığıyla geriye dönük uyumluluk sağlayan settir.
  • ViewModel ekran döndürmelerine dayanır ve Activity yeniden oluşturulduğunda verileri koruyarak kullanıcı girdisi kaybını önler.
  • Room — derleme zamanında SQL sorgu doğrulaması ve coroutine desteği ile SQLite üzerinde bir ORM katmanı.
  • Navigation Component tür güvenli argümanlar ile navigasyon grafikleri aracılığıyla ekranlar arası geçişleri yönetir.
  • Lifecycle denetleyicilerde boilerplate kodu olmadan Activity/Fragment yaşam döngüsü olaylarına yanıt vermeyi sağlar.

Android Jetpack Nedir?

Android Jetpack, 2018 yılında Google I/O'da tanıtılan Google'ın kütüphane, araç ve mimari yönergeler koleksiyonudur. Jetpack, Support Library ve Android Architecture Components'ın yerini alarak onları tek bir ekosistemde birleştirdi. Jetpack'ten önce her Android kütüphanesi bağımsız olarak güncelleniyor ve sürüm çakışmaları yaratıyordu. Jetpack, sürümleri tek bir AndroidX tanımlayıcısı altında senkronize etti ve küçük yamalarla kararlı ana sürümler modelini tanıttı.

Jetpack kütüphaneleri dört kategoriye ayrılır: Architecture (ViewModel, Room, Navigation, WorkManager), UI (Fragment, Compose, Animation, Palette), Behavior (DownloadManager, Media, Permissions, Sharing), Foundation (Android KTX, Multidex, AppCompat). Her kategori, veri yönetiminden kullanıcı arayüzüne kadar uygulamanın belirli bir katmanının görevlerini ele alır.

Jetpack Felsefesi

Google üç Jetpack ilkesini teşvik eder: accelerate development (daha az boilerplate, daha fazla iş mantığı), eliminate boilerplate (ViewModel manuel durum kaydetmeyi ortadan kaldırır, Room SQLiteOpenHelper yazmayı ortadan kaldırır) ve build with confidence (her kütüphane yayınlanmadan önce 15.000'den fazla testi geçer). Android Developers (2026)'ya göre, Jetpack kullanan uygulamalarda yaşam döngüsüyle ilgili %30 daha az çökme olur.

Temel Olarak AndroidX

Tüm Jetpack kütüphaneleri AndroidX tanımlayıcısı (androidx.* gibi yapıtlar) altında dağıtılır. AndroidX, Support Library'nin (com.android.support.* gibi yapıtlar) yerini alarak monolitik kütüphaneyi bağımsız sürümlemeli modüler yapıtlara böldü. AndroidX'e geçiş, gradle.properties dosyasında android.useAndroidX=true seçeneği ile yapılır — Android Studio içe aktarmaları otomatik olarak dönüştürür.

Mimari Bileşenler: ViewModel, Lifecycle, LiveData

ViewModel, Jetpack mimarisinin UI verilerini depolayan merkezi bileşenidir. Ekran döndürmede yok edilen Activity'nin aksine, ViewModel bellekte kalır. Kullanıcı bir form doldurur, telefonu döndürür — veriler kaybolmaz. ViewModel, LifecycleOwner (Activity veya Fragment) yaşam döngüsünü kalıcı olarak sonlandırdığında (finish) otomatik olarak temizlenir.

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("Ekran başlatıldı")
    }
}

LiveData — yaşam döngüsüne saygı duyan gözlemlenebilir bir veri kapsayıcısıdır. Ekran görünür değilse (onStop), LiveData güncelleme göndermez — bu, bellek sızıntılarını ve var olmayan bir Activity'yi güncellemeye çalışırken oluşan çökmeleri önler. Lifecycle — geçerli durumu (CREATED, STARTED, RESUMED) depolayan ve diğer bileşenlerin durum değişikliklerine abone olmasına izin veren bir sınıftır. Birlikte, ViewModel, LiveData ve Lifecycle, reaktif Android mimarisinin temelini oluşturur.

ViewModelScope ve Coroutine'ler

viewModelScope — ViewModel yaşam döngüsüne bağlı yerleşik bir CoroutineScope'dur. Bu kapsamda başlatılan tüm coroutine'ler, ViewModel temizlendiğinde otomatik olarak iptal edilir. Bu, her ViewModel'de Disposable ve CompositeDisposable'ın manuel yönetimini ortadan kaldırır. viewModelScope ile çalışmak için androidx.lifecycle:lifecycle-viewmodel-ktx bağımlılığı gerekir.

Room: Android'de veritabanı ile çalışma

Room, SQLite üzerinde soyut bir katman sağlayan bir Jetpack ORM kütüphanesidir. Ham SQL sorguları yazmak ve Cursor'u manuel olarak nesnelere dönüştürmek yerine, geliştirici bir Entity (tablo), DAO (Veri Erişim Nesnesi) ve Database (giriş noktası) bildirir. Room, @Query ek açıklaması aracılığıyla derleme zamanında SQL sorgularını doğrular — tablolar veya sütunlar yoksa, derleme net bir hatayla başarısız olur.

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 üç sütunlu bir tabloyu tanımlar. DAO, coroutine'lerle çalışmak için suspend işlevleri bildirir — sorgu otomatik olarak bir arka plan iş parçacığında yürütülür. Room, @Migration ek açıklaması aracılığıyla geçişleri destekler: geliştirici sürümler arasındaki geçiş için SQL betiğini tanımlar ve Room bunu veri kaybı olmadan yürütür. Geçiş olmadığında, Room IllegalStateException fırlatır — bu, şema güncellenirken projeleri yanlışlıkla veri kaybından korur.

TypeConverters ve İlişkiler

Room yalnızca ilkel türleri ve bunların sarmalayıcılarını depolar. Listeleri, Date'i veya özel nesneleri depolamak için @TypeConverter kullanılır — bir türü String (JSON) veya Long (timestamp) dönüştüren statik bir yöntem. Tablolar arasındaki ilişkiler, @Relation ek açıklamasına sahip iç içe nesneler ve verimli birleştirme sorguları için @Transaction ile yardımcı POJO sınıfları aracılığıyla modellenir.

Navigation Component — ekranlar arası geçişleri yönetmek için bir Jetpack kütüphanesidir. Manuel olarak FragmentTransaction çağırmak yerine, geliştirici bir navigasyon grafiği (hedef düğümleri olan XML dosyası) oluşturur ve sistem, tür güvenli geçiş yöntemlerine sahip bir Directions sınıfı oluşturur. Navigation Component, geri yığının, derin bağlantıların ve ekranlar arasında argüman iletiminin doğru şekilde çalışmasını sağlar.

kotlin
// nav_graph.xml
// 
//     android:name=".ProfileFragment">
//     
//         android:defaultValue="-1"
//         app:argType="integer" />
// 

// Fragment kodunda:
class ProfileFragment : Fragment() {
    private val args: ProfileFragmentArgs by navArgs()

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

userId argümanları, tür belirtimi (integer) ve varsayılan değer ile navigasyon grafiğinde iletilir. ProfileFragmentArgs sınıfı, Navigation Safe Args eklentisi tarafından otomatik olarak oluşturulur — doğru Kotlin türleriyle tüm argümanları içerir. Derin bağlantılar grafikte yapılandırılır: app:deepLink="app://profile/{userId}". Navigation Component, URL'yi ayrıştırır ve kullanıcı arayüzde gezinmiş gibi geri yığını oluşturur.

Alt Gezinme ve Koşullu Gezinme

Navigation Component, NavController aracılığıyla BottomNavigationView ile entegre olur: her menü öğesi grafikteki bir hedefe bağlanır. Sekmeler arasında geçiş yapmak parçayı yeniden oluşturmaz — Navigation Component, NavBackStackEntry aracılığıyla durumu korur. Koşullu gezinme için (doğrulanmamışsa girişi göster), onCreate içinde bir kontrol ile navController.navigate(condition) kullanılır.

AndroidX: yeni nesil Support Library

AndroidX, her kütüphanenin bağımsız bir sürümle kendi yapıtını aldığı, yeniden tasarlanmış bir Support Library mimarisidir. Tek bir com.android.support:appcompat-v7:28.0.0 yerine AndroidX, androidx.appcompat:appcompat:1.7.0, androidx.recyclerview:recyclerview:1.4.0 vb. sunar. Bu, farklı bağımlılıkların farklı Support Library sürümlerini çekerek çakışmalara neden olması sorununu ortadan kaldırdı.

AndroidX'e geçiş, Android Studio 3.2+'da Refactor → Migrate to AndroidX menüsü aracılığıyla otomatik olarak yapılır. Studio, Java/Kotlin dosyalarındaki, manifestlerdeki ve kaynaklardaki tüm içe aktarmaları değiştirir. Geriye dönük uyumluluk AndroidX'in ana avantajıdır: kütüphaneler Android 5.0 (API 21) ve üzerinde çalışır ve Google Play Console (2025)'ye göre aktif cihazların %97'sini kapsar.

Ana AndroidX Yapıtları

En sık kullanılan yapıtlar: appcompat (eski API'lerde koyu tema, Material Design), recyclerview (ViewHolder ile uyarlanabilir listeler), constraintlayout (düz hiyerarşiye sahip esnek kapsayıcı), cardview (Material Design kartları), preference (Material stiliyle ayarlar ekranı). Her yapıt bağımsız olarak sürümlenir ve tüm paketi güncellemeden düzeltmelerin teslimatını hızlandırır.

Diğer önemli Jetpack kütüphaneleri

Architecture ve AndroidX'in yanı sıra Jetpack, tipik mobil geliştirme görevleri için birçok özel kütüphane içerir. WorkManager — garantili yürütme ile arka plan görevleri (senkronizasyon, günlük yükleme) için, periyodik ve gecikmeli görevlerin yanı sıra ağ ve pil kısıtlamalarını destekler. DataStore — coroutine tabanlı SharedPreferences yerine geçen, yazılan özellikleri (Preferences DataStore) ve Protocol Buffers'ı (Proto DataStore) destekler.

  • Hilt — @HiltViewModel, @Inject, @Module ek açıklamaları aracılığıyla bağımlılık enjeksiyonunu basitleştiren Dagger tabanlı bir DI çerçevesi. ViewModel ve Navigation ile yerleşik entegrasyon.
  • Paging 3 — RemoteMediator (ağ + önbellek), StateFlow ve Compose desteği ile ağ/DB'den sayfalı veri yükleme kütüphanesi.
  • CameraX — birleşik CameraController arayüzü aracılığıyla üretici farklılıklarını (Samsung, Xiaomi, Honor) soyutlayan kamera API'si.
  • Security Crypto — Android Keystore'da ana anahtar ile AES-256 tabanlı EncryptedSharedPreferences ve EncryptedFile aracılığıyla veri şifreleme.

Her kütüphanenin kendi minimum SDK'sı ve yapıtı vardır. Google, yılda bir kez (Android sürümüyle aynı anda) ana sürümler ve üç ayda bir güvenlik yamaları yayınlar. Öneri — APK boyutunu artırmamak için yalnızca gerekli kütüphaneleri ekleyin. Tam Jetpack koleksiyonu (tüm yapıtlar) 20 MB'ın üzerindedir, ancak tipik bir uygulama 5-7 kütüphane kullanır ve APK'ya 3-5 MB ekler.

Sıkça Sorulan Sorular

Support Library'den AndroidX'e geçmeli miyim?

Evet, Google 2019'da Support Library desteğini sonlandırdı. Tüm yeni Jetpack kütüphaneleri ve Google Play Services AndroidX gerektirir. Geçiş, Android Studio aracılığıyla 30-60 dakika sürer.

Jetpack Java ile mi yoksa sadece Kotlin ile mi kullanılabilir?

Jetpack, Java ile tamamen uyumludur. Ancak birçok özellik (viewModelScope, coroutine'ler, Compose) yalnızca Kotlin'de kullanılabilir. Google yeni projeler için Kotlin'i önerir.

ViewModel, onSaveInstanceState'dan nasıl farklıdır?

ViewModel nesneleri bellekte saklar ve döndürmeye dayanır. onSaveInstanceState yalnızca serileştirilebilir ilkeller (Bundle) için uygundur. ViewModel, işlem sonlandırıldığında korunmaz — bunun için SavedStateHandle gerekir.

Coroutine'ler yerine ne zaman WorkManager kullanılır?

WorkManager — uygulama kapatıldıktan sonra bile yürütülmesi gereken görevler için (senkronizasyon, günlük yükleme, analitik gönderme). Coroutine'ler — ekrana bağlı görevler için.

SharedPreferences'dan DataStore'a nasıl geçilir?

SharedPreferences içe aktarmalarını DataStore ile değiştirin. dataStore.data.first() (suspend) ile okuma, dataStore.edit { ... } ile yazma. DataStore eşzamansızdır ve ANR'ye karşı korumalıdır.

Özet

  • Android Jetpack — API 21'e kadar geriye dönük uyumlulukla AndroidX altında birleştirilmiş, 50'den fazla Android geliştirme kütüphanesi seti.
  • ViewModel ekran döndürmelerine dayanır ve UI verilerini korurken, Lifecycle bileşenleri Activity/Fragment durum değişiklikleri hakkında bilgilendirir.
  • Room — derleme zamanı sorgu doğrulaması, geçişler ve coroutine desteği ile SQLite üzerinde tür güvenli ORM.
  • Navigation Component tür güvenli argümanlar ve otomatik derin bağlantı ile grafikler aracılığıyla geçişleri yönetir.
  • WorkManager uygulama kapatıldıktan sonra bile arka plan görev yürütmesini garanti eder; DataStore, SharedPreferences'ın yerini alır.
  • Jetpack dört kategoriye ayrılır: Architecture, UI, Behavior, Foundation — her biri kendi uygulama katmanını kapsar.
  • Jetpack kullanan uygulamalar, yaşam döngüsüyle ilgili %30 daha az çökmeye sahiptir ve hazır mimari çözümler sayesinde daha hızlı geliştirilir.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun