AndroidX, Google'ın eski Support Library'nin yerini alan Jetpack kütüphaneleri setidir. Google Developer Documentation, 2024'e göre AndroidX, tüm Android sürümleri için geriye dönük uyumlu bileşenler sağlar ve modern Android geliştirmenin standardıdır. AndroidX kütüphaneleri; UI, navigasyon, veri işleme, kamera ve arka plan görevleri için araçlar içerir.
Önemli Noktalar
AndroidX, Android Jetpack'in bir parçası olan açık kaynaklı bir kütüphanedir. Google, 2018'de AndroidX'i, 2011'den beri eski Android sürümleri için geriye dönük uyumlu bileşenler sağlayan Support Library'nin yerine geçmek üzere yayınladı.
AndroidX'ten önce, her Support Library bileşeninin targetSdkVersion'a bağlı kendi sürümü vardı. Geliştiriciler aynı kütüphanenin birden çok sürümünü aynı anda eklemek zorunda kalıyordu, bu da bağımlılık çakışmalarına ve APK boyutunun artmasına neden oluyordu.
AndroidX, anlamsal sürümleme (SemVer) ile bu sorunu çözdü. Artık her kütüphane, MAJOR.MINOR.PATCH formatında sürüme sahip bağımsız bir Gradle yapıtıdır. Geliştiriciler, Activity, Fragment veya diğer modüllere dokunmadan Room'u 2.4.0'dan 2.6.0'a güncelleyebilir.
AndroidX 1.0.0'ın ilk kararlı sürümü, Aralık 2018'de Android 9 Pie ile birlikte geldi. Google, Support Library'nin bakım moduna geçtiğini ve tüm yeni bileşenlerin (Navigation, WorkManager, Compose) yalnızca AndroidX'in bir parçası olarak yayınlanacağını duyurdu. Support Library'nin son sürümü olan 28.0.0, 2019'da yayınlandı.
Google I/O 2019'a göre, geçişin temel nedeni güncelleme yayınlarını hızlandırma ihtiyacıydı. Eski modelde, tek bir paket sürümü nedeniyle bir kütüphane diğerini beklemek zorundaydı. AndroidX bu darboğazı ortadan kaldırdı ve Jetpack her 2–3 ayda bir ana ve alt sürümler almaya başladı.
Temel fark ad alanıdır. Support Library android.support.* paketini kullanırken, AndroidX androidx.*'e geçti. Bu değişiklik, kütüphanelerin işlevsel modüllere ayrılmasını sağladı. Örneğin, Support Library'deki Fragment, android.support.v4.app.Fragment olarak adlandırılırken, AndroidX'te androidx.fragment.app.Fragment'tir.
İkinci önemli fark mimaridir. AndroidX, Jetpack (bir dizi uygulama mimarisi önerisi) ile birlikte gelir. Jetpack; ViewModel, LiveData, Room, Navigation ve WorkManager'ı içerir ve bunlar dağınık yardımcı programlar yerine birleşik bir ekosistem olarak tasarlanmıştır.
Geriye dönük uyumluluk da iyileşti. Support Library Android 2.3+'ı desteklerken, AndroidX, Android 4.0 (API 14) ve üzeri cihazlarda çalışmayı garanti eder ve Google Play Console 2024'e göre aktif cihazların %99'undan fazlasını kapsar.
AndroidX, kategoriye göre gruplandırılmış 100'den fazla kütüphane içerir. Her grup belirli bir alanı kapsar: UI, veri, navigasyon, arka plan görevleri, multimedya ve test. Aşağıda temel modüllere genel bir bakış bulunmaktadır.
androidx.core:core, sistem API'lerinin geriye dönük uyumlu sürümlerini içeren temel kütüphanedir: NotificationCompat, ActivityCompat, ContextCompat. core-ktx modülü, dosyalar, SharedPreferences ve görünüm öğeleriyle çalışmak için Kotlin uzantıları sağlar.
androidx.activity:activity kütüphanesi, kullanımdan kaldırılan startActivityForResult'ın yerini alan Activity Result API'yi (registerForActivityResult) tanıttı. fragment:fragment modülü, parçaların yaşam döngüsünü yönetir ve işlemler ile geri yığını için FragmentManager'ı destekler.
androidx.lifecycle, Jetpack mimarisinin temelidir. LifecycleOwner ve LifecycleObserver, bileşenlerin Activity veya Fragment yaşam döngüsü değişikliklerine tepki vermesini sağlar. ViewModel, ekran döndürme sırasında verileri korurken, LiveData veri değişikliklerini UI'ya bildirir.
class MainViewModel : ViewModel() {
private val _users = MutableLiveData<List<User>>()
val users: LiveData<List<User>> = _users
fun loadUsers() {
viewModelScope.launch {
val result = repository.getUsers()
_users.value = result
}
}
}
androidx.recyclerview:recyclerview, listeleri ve ızgaraları görüntülemek için güçlü bir bileşendir. RecyclerView; LayoutManager'ı (LinearLayoutManager, GridLayoutManager), ItemDecoration'ı ve ItemAnimator aracılığıyla animasyonları destekler. AsyncListDiffer ile ListAdapter kütüphanesi, otomatik fark hesaplamasıyla liste güncellemelerini basitleştirir.
androidx.navigation:navigation, ekranlar arasında gezinmek için bir kütüphanedir. Navigation Component, NavHostFragment ve NavController ile çalışır, tür belirtilmiş parametreler iletmek için Safe Args'ı ve harici bağlantılar için Deep Links'i destekler. NavGraph, tüm rotaları bir XML dosyasında tanımlar.
androidx.compose.ui, Kotlin üzerine inşa edilmiş bildirimsel bir UI çerçevesi olan Jetpack Compose'dur. View sisteminin aksine Compose, yeniden birleştirme yoluyla yalnızca değiştirilen öğeleri yeniden çizer. Material Design 3 bileşenleri (Button, TextField, Scaffold) material3 modülünde mevcuttur.
| Kütüphane | Yapıt | Amaç |
|---|---|---|
| Fragment | androidx.fragment | Parça yönetimi ve işlemler |
| RecyclerView | androidx.recyclerview | Optimize edilmiş listeler ve ızgaralar |
| Navigation | androidx.navigation | Ekran navigasyonu |
| Compose UI | androidx.compose.ui | Kotlin'de bildirimsel UI |
androidx.room:room, yerel veri depolama için bir ORM'dir. Room, açıklamalı SQLite sorgularından DAO sınıfları oluşturur, derleme zamanında SQL söz dizimini doğrular ve RxJava ile Kotlin Flow'u destekler. Sürüm 2.6, daha hızlı kod oluşturma için KSP desteği içerir.
androidx.work:workmanager, garantili yürütme ile arka plan görevleri için bir kütüphanedir. WorkManager; periyodik görevleri, iş zincirlerini (beginWith, then) ve başlatma kriterlerini (Constraints: ağ, şarj, depolama) destekler. Uygulama kapalı olsa bile WorkManager, cihaz yeniden başlatıldıktan sonra görevi teslim eder.
androidx.datastore:datastore, SharedPreferences'ın modern bir yerine geçendir. DataStore, Kotlin Coroutines ve Flow kullanır, eşzamanlı ve eşzamansız çalışarak UI iş parçacığının bloke edilmesini önler. Preferences DataStore basit anahtar-değer çiftlerini depolar, Proto DataStore ise Protocol Buffers aracılığıyla tür belirtilmiş nesneleri işler.
Otomatik geçiş, Support Library'den AndroidX'e geçiş için Google tarafından önerilen yöntemdir. Android Studio sürüm 3.2'den itibaren, ad alanlarını değiştiren ve build.gradle'daki bağımlılıkları güncelleyen yerleşik Refactor Migrate to AndroidX aracını içerir.
Geçişten önce compileSdk sürümünü 28 veya üzerine güncellemeniz gerekir. Ayrıca tüm üçüncü taraf kütüphanelerin AndroidX'i desteklediğinden emin olun. Bir bağımlılık henüz geçiş yapmadıysa, gradle.properties içinde android.enableJetifier=true bayrağını kullanın — bu, üçüncü taraf kütüphanelerin bayt kodunu otomatik olarak yeniden yazar.
Android Studio'da menüden Refactor Migrate to AndroidX'i seçin. IDE, tüm projeyi tarayacak, android.support.* paketindeki tüm içe aktarımları bulacak ve bunları androidx.* ile değiştirecektir. app/build.gradle'daki bağımlılıklar da güncellenecek — Support Library yapıtları, karşılık gelen AndroidX sürümleriyle değiştirilecektir.
Geçişten sonra, bazı bağımlılıklar bulunamazsa Gradle Sync hatalar gösterebilir. Google Maven belgelerinde kullanılan kütüphanelerin listesini kontrol edin — tüm AndroidX yapıtları google() üzerinde yayınlanmıştır. Bir kütüphane mevcut değilse, repositories'e mavenCentral() ekleyin.
android {
compileSdk 34
}
dependencies {
// Destek Kitaplığı (kullanımdan kaldırıldı)
// implementation 'com.android.support:appcompat-v7:28.0.0'
// AndroidX
implementation 'androidx.core:core-ktx:1.13.1'
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'androidx.activity:activity-ktx:1.9.3'
implementation 'androidx.fragment:fragment-ktx:1.8.5'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation 'androidx.room:room-runtime:2.6.1'
ksp 'androidx.room:room-compiler:2.6.1'
}
Proje çok büyükse veya Support Library'den özel View'lar içeriyorsa, otomatik değiştirme eksik olabilir. Kod içindeki tüm dizeleri manuel olarak değiştirin: içe aktarımları, XML niteliklerini (app/src/main/res) ve bildirim referanslarını güncelleyin. Support Library nitelikleri için android: öneki app: olarak değişir (örneğin, android:cardCornerRadius yerine app:cardCornerRadius).
Manuel geçişten sonra R referanslarını kontrol edin. Support Library, kaynakları android.support.v7.appcompat.R aracılığıyla dışa aktarırken, AndroidX androidx.appcompat.R kullanır. Projede arama yapın ve eski R yollarına yapılan tüm referansları değiştirin. Proje derlemesi, hata veya kullanımdan kaldırma uyarısı olmadan tamamlanmalıdır.
AndroidX'in ilk avantajı modülerliktir. Yalnızca gerçekten kullandığınız kütüphaneleri eklersiniz. Uygulamanız yalnızca RecyclerView ve Navigation'a ihtiyaç duyuyorsa, tüm View bileşenleriyle birlikte Support Library'nin tamamını eklemeniz gerekmez. Bu, APK boyutunu azaltır ve derleme süresini hızlandırır.
İkinci avantaj düzenli güncellemelerdir. Jetpack her 1–3 ayda bir kararlı sürümler yayınlar. 2024'te yayınlanan Room 2.6.0, KSP desteği ve Kotlin 2.0 uyumluluğu ekledi. Navigation 2.8.0, Kotlinx Serialization tabanlı tür güvenli rotaları tanıttı. Geliştiriciler, bir sonraki Android sürümünü beklemeden yeni özellikler alır.
Üçüncü avantaj Kotlin entegrasyonudur. Tüm AndroidX kütüphanelerinde uzantı işlevlerine sahip -ktx modülleri bulunur. viewLifecycleOwner.lifecycleScope, parça bağlamında eşyordamlar başlatır, collectLatest Flow'u işler ve SharedFlow ile StateFlow, yaşam döngüsü bilincine sahip bileşenlerle tamamen uyumludur. Bu, kodu daha özlü ve güvenli hale getirir.
Geriye dönük uyumluluk, yeni platform API'lerine kıyasla AndroidX'in temel bir avantajıdır. Android 4.0+'da koyu tema için AppCompatDelegate.setDefaultNightMode'u, Android 5.0+'da baloncuklar için NotificationCompat.setBubble'ı ve Android 4.0+'da birleşik konum için LocationRequestCompat'ı kullanabilirsiniz. Minimum SDK sürümünü artırmadan cihaz kapsamı %99'a ulaşır.
Dördüncü avantaj testtir. AndroidX, araçlı ve birim testleri yazmak için androidx.test kütüphanesini içerir. FragmentScenario ve ActivityScenario, UI bileşenlerini izole olarak test etmeye olanak tanırken, TestNavHostController gerçek bir cihaz çalıştırmadan navigasyonu doğrulamayı sağlar. MockK ve Robolectric ekosistemi tamamlar.
Sıkça Sorulan Sorular
AndroidX, android.support.* yerine androidx.* ad alanını kullanır, bağımsız sürümlemeye (SemVer) sahiptir, Jetpack kütüphanelerini içerir ve Kotlin -ktx uzantılarını destekler. Support Library, 2019'da 28.0.0 sürümünde dondurulmuştur.
Android Studio'da, proje oluşturma adımında Use AndroidX bayrağını etkinleştirin. Mevcut projeler için gradle.properties dosyasına android.useAndroidX=true ve android.enableJetifier=true ekleyin. Ardından build.gradle'daki bağımlılıkları androidx grubundaki yapılarla değiştirin.
Google Play, tüm uygulamaların ve güncellemelerin AndroidX kullanmasını zorunlu kılar. Support Library'nin bakımı durdurulmuştur ve artık güvenlik yamaları almamaktadır. Uygulamanız henüz geçiş yapmadıysa, bu Google Play Console'da güncellemenin reddedilmesine yol açabilir.
Jetpack, Android uygulama geliştirme için Google'dan kütüphaneler, araçlar ve yönergeler setidir. AndroidX, Jetpack'in temelidir. Jetpack; Architecture Components (Lifecycle, ViewModel, Room), UI (Compose, Fragment, RecyclerView) ve Behavior (WorkManager, Navigation, CameraX) içerir.
Evet, Jetpack Compose kendisi AndroidX'in (androidx.compose.ui) bir parçasıdır. ViewModel, Navigation, Room ve WorkManager kütüphaneleri Compose ile tamamen uyumludur. collectAsState() ve collectAsStateWithLifecycle() işlevleri, Composable işlevleriyle Flow entegrasyonu sağlar.
Özet
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.
Ayrıca okuyun