Room 3.0'ın ilk alfa sürümü yayınlandı. Room 3.0, Kotlin Multiplatform'a (KMP) odaklanan ve mevcut Android, iOS ve JVM masaüstü desteğinin yanı sıra JavaScript ve WebAssembly (WASM) desteği ekleyen, kitaplığın büyük bir sürümüdür.
Bu blogda, Room 3.0'ın gerekçesi, uyumluluğu bozan değişiklikler ve Room 2.0'dan geçiş yapmak için yapabileceğiniz çeşitli işlemler açıklanmaktadır.
Zarar veren değişiklikler
Room 3.0, aşağıdaki zarar veren API değişikliklerini içerir:
- SupportSQLite API'lerinin desteği sonlandırılıyor: Room 3.0, androidx.sqlite sürücü API'leri tarafından tamamen desteklenir. SQLiteDriver API'leri KMP ile uyumludur ve Room'un Android API'sine olan bağımlılığının kaldırılması, iki olası arka ucun olmaması nedeniyle Android için API yüzeyini basitleştirir.
- Artık Java kodu oluşturulmuyor: Room 3.0 yalnızca Kotlin kodu oluşturur. Bu, gelişen Kotlin öncelikli paradigmayla uyumludur. Ayrıca kod tabanını ve geliştirme sürecini basitleştirerek daha hızlı yinelemeler yapılmasını sağlar.
- KSP'ye odaklanma: Java Annotation Processing (AP) ve KAPT desteğini de sonlandırıyoruz. Room 3.0 yalnızca bir KSP (Kotlin Symbol Processing) işlemcisidir. Bu sayede, Java diliyle sınırlanmadan Kotlin kod tabanlarının daha iyi işlenmesine olanak tanır.
- Öncelikle eş yordamlar: Room 3.0, Kotlin eş yordamlarını destekleyerek API'lerini eş yordam öncelikli hale getirir. Coroutines, KMP ile uyumlu asenkron bir çerçevedir ve Room'un doğası gereği asenkron olması, web platformlarının desteklenmesi için kritik bir gerekliliktir.
Yeni bir paket
Mevcut Room 2.x uygulamalarıyla uyumluluk sorunlarını önlemek ve Room'a geçişli bağımlılıkları olan kitaplıklar (ör. WorkManager) için Room 3.0 yeni bir pakette bulunur. Bu nedenle, yeni bir Maven grubu ve yapay nesne kimlikleri de vardır. Örneğin, androidx.room:room-runtime, androidx.room3:room3-runtime olarak değiştirildi ve androidx.room.RoomDatabase gibi sınıflar artık androidx.room3.RoomDatabase adresinde yer alacak.
Kotlin ve Eş Yordamlar Öncelikli
Java kodu oluşturma özelliği kaldırıldığından Room 3.0, Room ile etkileşimde bulunan kod tabanı Java ile yazılmış olsa bile KSP ve Kotlin derleyicisini gerektirir. Room kullanımının yoğunlaştığı ve Kotlin Gradle eklentisi ile KSP'nin kod tabanının geri kalanını etkilemeden uygulanabileceği çok modüllü bir proje oluşturmanız önerilir.
Room 3.0 ayrıca Coroutines'i gerektirir ve daha spesifik olarak, Flow gibi reaktif bir tür döndürmedikleri sürece DAO işlevlerinin askıya alınması gerekir. Room 3.0, DAO işlevlerinin engellenmesine izin vermez. Eş yordamları uygulamanıza entegre etmeye başlama hakkında bilgi edinmek için Android'de eş yordamlar dokümanlarına bakın.
SQLiteDriver API'lerine geçiş
SupportSQLite'den uzaklaşılmasıyla birlikte uygulamaların SQLiteDriver API'lerine geçmesi gerekecek. Bu taşıma, BundledSQLiteDriver aracılığıyla paketlenmiş SQLite kitaplığının kullanılmasına izin verme de dahil olmak üzere Room 3.0'ın tüm avantajlarından yararlanmak için gereklidir. Room 2.7.0+ ile sürücü API'lerine geçiş yapmaya bugün başlayabilirsiniz. SupportSQLite'in daha fazla kullanılmaması önemle tavsiye edilir. Room entegrasyonlarınızı SQLiteDriver API'lerine taşırsanız paket değişikliği çoğunlukla sembol referanslarının (içe aktarmalar) güncellenmesini içerdiğinden ve çağrı sitelerinde minimum değişiklik yapılması gerekebileceğinden Room 3.0'a geçiş daha kolay olur.
SQLiteDriver API'lerine kısa bir genel bakış için SQLiteDriver API'leri belgelerine göz atın.
Room'u SQLiteDriver API'lerini kullanacak şekilde taşıma hakkında daha fazla bilgi için resmi SupportSQLite'ten taşıma belgelerine göz atın.
Room SupportSQLite sarmalayıcısı
SupportSQLite'ın tamamen kaldırılmasının tüm projeler için hemen mümkün olmayabileceğinin farkındayız. Bu geçişi kolaylaştırmak için Room 2.0 serisinin en yeni sürümü olan Room 2.8.0'da androidx.room:room-sqlite-wrapper adlı yeni bir yapay nesne kullanıma sunuldu. Bu yapıt, veritabanındaki SupportSQLite API'leri SQLiteDriver yüklenmesi nedeniyle devre dışı bırakılmış olsa bile RoomDatabase öğesini SupportSQLiteDatabase öğesine dönüştürmenize olanak tanıyan bir uyumluluk API'si sunar. Bu, kod tabanlarını tamamen taşımak için daha fazla zamana ihtiyacı olan geliştiriciler için geçici bir köprü sağlar. Bu yapay nesne, kritik SupportSQLite kullanımını desteklemeye devam ederken Room 3.0'a geçişi sağlamak için Room 3.0'da androidx.room3:room3-sqlite-wrapper olarak varlığını sürdürüyor.
Örneğin, roomDatabase.openHelper.writableDatabase çağrıları roomDatabase.getSupportWrapper() ile değiştirilebilir ve setDriver(), Room'un oluşturucusunda çağrılsa bile bir sarmalayıcı sağlanır.
Daha fazla bilgi için room-sqlite-wrapper dokümanlarına göz atın.
Room ve SQLite Web Desteği
Kotlin Multiplatform'un JS ve WasmJS hedefleri için destek sunulur ve en önemli API değişikliklerinden bazıları yapılır. Özellikle, Room 3.0'daki birçok API, web depolama için uygun destek eşzamansız olduğundan askıya alma işlevleridir. SQLiteDriver API'leri de web'i destekleyecek şekilde güncellendi ve androidx.sqlite:sqlite-web içinde yeni bir web eşzamansız sürücüsü kullanıma sunuldu. Veritabanının Origin özel dosya sisteminde (OPFS) kalıcı olmasını sağlayan, Web Worker tabanlı bir sürücüdür.
Room for the Web'i ayarlama hakkında daha fazla bilgi için Room 3.0 sürüm notlarına göz atın.
Özel DAO dönüş türleri
Room 3.0, RxJava ve Paging'e benzer şekilde Room'a özel entegrasyonlar ekleme olanağı sunar. @DaoReturnTypeConverter adlı yeni bir ek açıklama API'si aracılığıyla, Room'un oluşturduğu kodun çalışma zamanında erişilebilir olmasını sağlayacak kendi entegrasyonunuzu oluşturabilirsiniz. Bu sayede, Room ekibinin destek eklemesini beklemenize gerek kalmadan @Dao işlevlerinin özel dönüş türleri olabilir. Mevcut entegrasyonlar bu işlevi kullanacak şekilde taşınır. Bu nedenle, bu işlevden yararlananların artık dönüştürücüleri @Database veya @Dao tanımlarına eklemesi gerekir.
Örneğin, Paging dönüştürücü androidx.room3:room3-paging yapısında bulunur ve PagingSourceDaoReturnTypeConverter olarak adlandırılır. Bu arada, LiveData için dönüştürücü androidx.room3:room3-livedata konumunda ve LiveDataDaoReturnTypeConverter olarak adlandırılıyor.
Daha fazla bilgi için Room 3.0 sürüm notlarındaki DAO Return Type Converters (DAO Dönüş Türü Dönüştürücüler) bölümüne göz atın.
Room 2.x'in bakım modu
Room'un geliştirilmesi Room 3'e odaklanacağından mevcut Room 2.x sürümü bakım moduna giriyor. Bu nedenle, büyük özellikler geliştirilmeyecek ancak hata düzeltmeleri ve bağımlılık güncellemeleri içeren yama sürümleri (2.8.1, 2.8.2 vb.) yayınlanmaya devam edecek. Ekip, Room 3 kararlı hale gelene kadar bu çalışmaya devam edecektir.
Son düşünceler
Room 3.0'ın potansiyeli ve Kotlin ekosistemine sunduğu fırsatlar konusunda çok heyecanlıyız. Bu yolculuğa devam ederken daha fazla güncelleme için takipte kalın.
Okumaya devam edin
-
Ürün Haberleri
Her geliştiricinin yapay zeka iş akışı ve ihtiyaçları benzersizdir. Bu nedenle, yapay zekanın geliştirme sürecinize nasıl yardımcı olacağını seçebilmeniz önemlidir. Ocak ayında, Android Studio'daki yapay zeka işlevlerine güç katmak için yerel veya uzak bir yapay zeka modeli seçme özelliğini kullanıma sunduk.
Matthew Warner • Okuma süresi: 2 dakika
-
Ürün Haberleri
Android Studio Panda 3 artık kararlı ve üretimde kullanıma hazır. Bu sürüm, yapay zeka destekli iş akışlarınız üzerinde daha fazla kontrol ve özelleştirme imkanı sunarak yüksek kaliteli Android uygulamaları oluşturmayı her zamankinden daha kolay hale getiriyor.
Matt Dyor • Okuma süresi: 3 dk.
-
Ürün Haberleri
Google olarak, en yetenekli yapay zeka modellerini doğrudan cebinizdeki Android cihazlara getirmeye kararlıyız. Bugün, en yeni ve gelişmiş açık modelimiz Gemma 4'ü kullanıma sunduğumuzu duyurmaktan heyecan duyuyoruz.
Caren Chang, David Chou • Okuma süresi: 3 dk.
Gelişmelerden haberdar olun
Android geliştirmeyle ilgili en son analizleri her hafta gelen kutunuza alın.