Uyarı: Google Play Instant artık kullanılamayacak. Aralık 2025'ten itibaren, Hazır Uygulamalar Google Play üzerinden yayınlanamayacak ve tüm Google Play Hizmetleri Instant API'leri artık çalışmayacak. Kullanıcılara artık Play tarafından herhangi bir mekanizma kullanılarak anlık uygulamalar sunulmayacak.
Bu değişikliği, geliştiricilerden gelen geri bildirimler ve Google Play Anında'nın kullanıma sunulmasından bu yana ekosistemi iyileştirmek için yaptığımız sürekli yatırımlar doğrultusunda yapıyoruz.
Kullanıcı sayısını artırmaya yönelik optimizasyona devam etmek için geliştiricilerin, kullanıcıları normal uygulamalarına veya oyunlarına yönlendirmelerini öneririz. Geliştiriciler, derin bağlantılar kullanarak kullanıcıları uygun durumlarda belirli yolculuklara veya özelliklere yönlendirebilir.
Android anlık uygulama modülleriniz için desteği sonlandırılan Feature Android Gradle eklentisini (com.android.feature
) kullanmaya devam ediyorsanız temel uygulama eklentisini (com.android.application
) ve dinamik özellik eklentisini (com.android.dynamic-feature
) kullanmaya geçmeniz gerekir.
Android Gradle eklentisi 3.3.0 ve sonraki sürümlerde, temel uygulama eklentisi hazır uygulama deneyimleri için destek içerir. Yani, temel uygulama modülü anlık deneyim olma şartlarını karşılıyorsa bu avantajdan otomatik olarak yararlanabilirsiniz. Ardından, kullanıcıların Dynamic Feature eklentisini kullanarak anlık deneyimler olarak isteğe bağlı olarak indirebileceği ek özellikleri dahil edebilirsiniz. Bu kurulum, tek bir projeden hem yüklü hem de hazır uygulama deneyimini desteklemeyi kolaylaştırır ve Android App Bundle ile yayınlamanın avantajlarından yararlanmanıza olanak tanır.
Aşağıdaki tabloda, hangi eklentileri taşıyacağınız daha iyi açıklanmaktadır:
Modülün açıklaması | Eski eklenti | Geçerli eklenti |
---|---|---|
Yüklenen veya hazır uygulama deneyiminiz için temel kodu, kaynakları ve işlevleri içeren modül. | com.android.feature (baseFeature = true ile)
|
com.android.application
Not: Bu modül, uygulamanızı Android App Bundle veya APK olarak oluşturup paketlemek için gereken tüm manifest ve imza bilgilerini içerir. |
Kullanıcıların isteğe bağlı olarak indirebileceği ek, modüler özellikler | com.android.feature |
com.android.dynamic-feature (modülün manifest dosyasında dist:instant="true" ve dist:onDemand="false" ile birlikte) |
Yalnızca uygulamanızın yüklü sürümünde kullanılabilen bir özelliğin kodu ve kaynağı. | com.android.application |
com.android.dynamic-feature (modülün manifest dosyasında dist:instant="false" ve dist:onDemand="false" ile birlikte) |
Bu sayfada, mevcut hazır uygulama projenizi taşıyarak hazır uygulama özellikli bir Android App Bundle'ı nasıl oluşturacağınız gösterilmektedir. Ayrıca, hazır uygulama özelliği etkin bir Android App Bundle'ın nasıl oluşturulacağı, test edileceği ve yayınlanacağı da açıklanmaktadır.
Uygulamanız için yeni hazır uygulama deneyimleri oluşturuyorsanız bunun yerine Hazır uygulama özellikli bir özellik modülü oluşturma başlıklı makaleyi okuyun.
Değişiklikleri anlama
Projenizi Dynamic Feature eklentisini kullanacak şekilde taşıdığınızda, Android App Bundle, uygulamanızı oluşturup yayınlamanın yeni bir yolunu sunar. Bu yol, optimize edilmiş APK'ları kullanıcılarınıza dağıtmayı önemli ölçüde basitleştirir.
Uygulama paketleri, uygulamanızın derlenmiş kod ve kaynaklarının tamamını yükleme için paketleyerek dağıtımı basitleştirir ancak APK oluşturma ve imzalama işlemini Google Play'e bırakır. Google Play'in yeni uygulama yayınlama modeli, her kullanıcının cihaz yapılandırması için optimize edilmiş APK'lar oluşturmak ve yayınlamak üzere uygulama paketinizi kullanır. Böylece kullanıcılar, uygulamanızı çalıştırmak için gereken kod ve kaynakları indirir. Artık farklı cihazları desteklemek için birden fazla APK oluşturmanız, imzalamanız ve yönetmeniz gerekmez. Kullanıcılar ise daha küçük ve daha optimize edilmiş indirmeler elde eder.
Artık kullanımdan kaldırılan özellik eklentisi kullanılırken anlık uygulama oluşturmak için temel özellik modülü oluşturmak gerekiyordu. Bu modül, anlık uygulama modülünüz de dahil olmak üzere tüm modüllerinizin paylaşılan kodunu ve kaynaklarını içeriyordu. Kodunuzun geri kalanı, hazır uygulama deneyimlerinizin giriş noktalarını içeren birden fazla temel olmayan özellik modülüne dahil edildi. Uygulamanızın yüklü sürümü için projeniz, yalnızca yüklü uygulamanız için gereken kodu ve etkinlikleri içeren ayrı bir uygulama modülü içermiş olabilir.
Uygulamanızı Android App Bundle'ı destekleyecek şekilde taşıdığınızda uygulama modülünüz temel modül rolünü yeniden kazanır ve ek olarak yüklenen veya hazır sürüm deneyimlerini özellik modülleri olarak düzenlersiniz. Yani projeniz artık anında deneyim özelliği etkinleştirilmiş bir temel modül ve ek modüler anında deneyimler içerebilme özelliğiyle standart bir uygulama projesine daha çok benziyor.
Mevcut hazır uygulama projenizi taşımak ve Android App Bundle'ın daha optimize edilmiş dağıtım modelini kullanmak için aşağıdaki bölümlerde açıklanan adımları uygulayın.
Temel özellik modülünü uygulama modülüne dönüştürme
Temel özellik modülünü ana uygulama modülüne dönüştürmeden önce build.gradle
dosyasını aşağıdaki şekilde düzenlemeniz gerekir:
baseFeature true
satırını silin.feature
veyaapplication
bağımlılık yapılandırmalarını kullanan tüm bağımlılıkları kaldırın.Groovy
dependencies { ... // delete any lines that look like // feature project(":foo") // feature project(":bar") // application project(":app") }
Kotlin
dependencies { ... // delete any lines that look like // feature(project(":foo")) // feature(project(":bar")) // application(project(":app")) }
applicationId
öğesini, temel uygulama modülünüzde olmasını beklediğiniz diğer tüm derleme komut dosyası yapılandırmalarıyla birlikte mevcutcom.android.application
modülündencom.android.feature
modülüne taşıyın. Bazı örnekler aşağıda gösterilmiştir. Bu adımda, belirlibuild.gradle
kurulumunuza bağlı olarak, önceki uygulama modülündekibuild.gradle
bloğunu kopyalayıp yeni uygulama modülününbuild.gradle
dosyasına yapıştırmak daha kolay olabilir.android
Ancak bu işlemi yaparken dikkatli olmanız gerekir.Groovy
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile( 'proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
Kotlin
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId = "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { getByName("release") { minifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } }
Aşağıda gösterildiği gibi, manifeste uygun paket dağıtım etiketlerini ekleyerek özellik modülünü anında etkinleştirilmiş olarak işaretleyin.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" /> ... </manifest>
Eklenti türünü
com.android.application
olarak değiştirerek özellik modülünü temel uygulama modülünüze dönüştürün:Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following plugins { id 'com.android.application' }
Kotlin
// Replace "plugins { id("com.android.feature") }" // with the following plugins { id("com.android.application") }
Eski uygulama modülünü yükleme sırasında özellik modülüne dönüştürme
Eski uygulama modülünde kod veya kaynak yoksa bu modülü silebilirsiniz. Çünkü önceki bölümde uyguladığınız adımlar, özellik modülünüzü uygulamanızın temel uygulama modülüne dönüştürmüştür.
Ancak eski uygulama modülünde, uygulamanızı yükleyen kullanıcıların kullanabilmesini istediğiniz işlevleri temsil eden kod ve kaynaklarınız varsa uygulama modülünü özellik modülüne dönüştürmek için bu bölümdeki adımları uygulayın.
Özellik modülü oluşturmak için eklenti türünü com.android.application
'dan com.android.dynamic-feature
'ye değiştirmenin yanı sıra aşağıdaki gibi birkaç build.gradle
değişiklik yapmanız gerekir:
Eklenti türünü
com.android.application
olarak değiştirin.com.android.dynamic-feature
Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following: plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "plugins { id("com.android.application") }" // with the following: plugins { id("com.android.dynamic-feature") }
Önceki bölümde açıklandığı gibi,
com.android.application
eklentisi tarafından gerekli olan derleme yapılandırmalarını (ör.applicationId
veyaproguardFiles
kuralları) temel uygulama modülüne taşıdığınızdan emin olun.Modülü aşağıdaki gibi "installed_feature" olarak yeniden adlandırın:
- Menü çubuğundan Görünüm > Araç Pencereleri > Proje'yi seçerek Proje bölmesini açın.
- Özellik modülünü sağ tıklayın ve Yeniden düzenle > Yeniden adlandır'ı seçin.
- Açılan iletişim kutusunda Modülü yeniden adlandır'ı seçip Tamam'ı tıklayın.
- Modülün yeni adını girin ve Tamam'ı tıklayın.
3. adıma benzer şekilde, önceki bölümde oluşturduğunuz yeni uygulama modülünü "app" gibi bir adla yeniden adlandırın.
Özellik modülünün
build.gradle
dosyasında "app" modülüne bir uygulama bağımlılığı ekleyin (aşağıda gösterildiği gibi).Groovy
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation project(":app") }
Kotlin
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation(project(":app")) }
Özelliği yeni uygulama modülünün
build.gradle
dosyasına ekleyin.Groovy
android { ... // In the base app module, specify each feature module. dynamicFeatures = [":installed_feature"] }
Kotlin
android { ... // In the base app module, specify each feature module. dynamicFeatures.addAll(listOf(":installed_feature")) }
Özellik modülünün manifest dosyasında, manifest dosyasına uygun paket dağıtım etiketlerini ekleyerek özellik modülünü yüklenebilir bir modül olarak işaretleyin.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="false" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
Diğer özellik modüllerini hazır uygulama özellikli özellik modüllerine dönüştürme
Uygulamanızın ek işlevlerini birden fazla özellik modülüne ayırdıysanız bu modülleri anında etkinleştirilen özellik modüllerine dönüştürmek için bu bölümdeki adımları uygulamanız gerekir.
Projenizdeki kalan her özellik modülü için aşağıdaki adımları uygulayarak bunları anında etkinleştirilen özelliklere dönüştürün:
build.gradle
dosyasındaki eklenti türünü aşağıda gösterildiği gibicom.android.dynamic-feature
olarak değiştirin:Groovy
// Replace 'com.android.feature' with 'com.android.dynamic-feature' plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "com.android.feature" with "com.android.dynamic-feature" plugins { id("com.android.dynamic-feature") }
Aşağıdakileri manifeste ekleyerek her bir özellik modülünü anında etkinleştirilmiş olarak işaretleyin.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
Özellik modülünü, özellik modülleri listesine
build.gradle
eklediğiniz yeni uygulama modülününbuild.gradle
dosyasına ekleyin.installed_feature
Groovy
android { ... dynamicFeatures = [":installed_feature", ":feature_1", ":feature_2"] // or whichever name exists for the instant enabled feature module }
Kotlin
android { ... dynamicFeatures.addAll(listOf(":installed_feature", ":feature_1", ":feature_2")) // or whichever name exists for the instant enabled feature module }
Yeni hazır uygulama özellikli uygulama paketi oluşturma, test etme ve yayınlama
Bu sayfadaki adımları tamamladıktan sonra projeniz, uygulamanızın hem yüklü hem de hazır sürümünü Google Play Console'da yayınlamak ve hazır ile yüklü kanallar için ayrı ayrı kullanıma sunmak üzere kullanabileceğiniz tek bir yapı (Android App Bundle) oluşturabilir. Ayrıca uygulama paketleri sayesinde, her kullanıcının cihaz yapılandırması için optimize edilmiş APK'lar yayınlama avantajından yararlanabilirsiniz. Böylece kullanıcılar, uygulamanızı çalıştırmak için gereken kod ve kaynakları indirir. Yani artık farklı cihazları desteklemek için birden fazla APK oluşturmanız, imzalamanız ve yönetmeniz gerekmez. Kullanıcılar ise daha küçük ve daha optimize edilmiş indirmeler elde eder.
Hazır sürüm özellikli uygulama paketinizi oluşturup test etmeye başlamak için Uygulama paketini oluşturma başlıklı makaleyi inceleyin.