Android Hazır Uygulama modülleriniz için kullanımdan kaldırılan Özellik Android Gradle eklentisini (com.android.feature
) hâlâ kullanıyorsanız temel uygulama eklentisini (com.android.application
) ve Dinamik Özellik eklentisini (com.android.dynamic-feature
) kullanarak geçiş yapmanız gerekir.
Temel uygulama eklentisi, Android Gradle eklentisi 3.3.0 ve sonraki sürümlerde hazır deneyim desteği içerir. Yani temel uygulama modülü, hazır uygulama deneyimi şartlarını karşılıyorsa avantajdan otomatik olarak yararlanırsınız. Daha sonra, Dinamik Özellik eklentisini kullanarak kullanıcıların isteğe bağlı olarak anında deneyim olarak indirebileceği ek özellikler dahil edebilirsiniz. Bu kurulum, hem yüklü hem de hazır uygulama deneyimini tek bir projeden desteklemeyi kolaylaştırır ve Android App Bundle ile yayınlama avantajından yararlanmanıza olanak tanır.
Aşağıdaki tabloda, geçiş yapacağınız eklentiler daha iyi açıklanmaktadır:
Modülün açıklaması | Eski eklenti | Mevcut eklenti |
---|---|---|
Yüklü 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şturmak ve paketlemek için gereken tüm manifest ve imzalama bilgilerini içerir. |
Kullanıcıların isteğe bağlı olarak indirebileceği modüler ek özellikler | com.android.feature |
com.android.dynamic-feature (modülün manifest dosyasında dist:instant="true" ve dist:onDemand="false" ile) |
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) |
Bu sayfada, hazır uygulama özellikli bir Android App Bundle oluşturmak için mevcut hazır uygulama projenizi nasıl taşıyacağınız gösterilmektedir. Ayrıca hazır sürüm etkin bir Android App Bundle'ın nasıl oluşturulacağını, 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 özellik modülü oluşturma konusunu okuyun.
Değişiklikleri anlama
Projenizi Dinamik Özellik eklentisini kullanmak yerine taşıdığınızda, Android App Bundle, optimize edilmiş APK'ların kullanıcılarınıza dağıtılmasını önemli ölçüde basitleştiren yeni bir uygulama oluşturma ve yayınlama yöntemi sağlar.
Uygulama paketleri, uygulamanızın derlenen tüm kodlarını ve kaynaklarını yükleme için paketleyerek dağıtımı basitleştirir ancak APK oluşturma ve Google Play'de imzalamayı erteler. Google Play'in yeni uygulama sunma modeli, uygulama paketinizi kullanarak her kullanıcının cihaz yapılandırması için optimize edilmiş APK'lar oluşturur ve sunar, böylece kullanıcılar yalnızca uygulamanızı çalıştırmak için gereken kod ve kaynakları indirir. Artık farklı cihazları desteklemek için birden fazla APK oluşturmak, imzalamak ve yönetmek zorunda kalmazsınız, kullanıcılar daha küçük ve daha optimize edilmiş indirmeler elde ederler.
Artık kullanımdan kaldırılan özellik eklentisini kullanırken hazır uygulama oluşturmak, hazır uygulama modülünüz de dahil olmak üzere tüm modülleriniz için paylaşılan kod ve kaynakları içeren bir temel özellik modülü oluşturmanızı gerektiriyordu. Kodunuzun geri kalanı, hazır uygulama deneyimleriniz için giriş noktaları içeren temel olmayan birden fazla özellik modülüne eklenmişti. Projenizin yüklü sürümünde yalnızca yüklü uygulamanız için gereken kodu ve etkinlikleri içeren ayrı bir uygulama modülü bulunabilir.
Uygulamanızı Android App Bundle'ı destekleyecek şekilde taşıdığınızda, uygulama modülünüz temel modülün rolünü geri alır ve ek yüklü veya hazır deneyimleri özellik modülleri olarak düzenlersiniz. Yani, projeniz artık anında kullanılabilen bir temel modüle ve modüler hazır deneyimler ekleme özelliğine sahip, 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 benimsemek için aşağıdaki bölümlerde açıklanan adımları izleyin.
Temel özellik modülünü bir uygulama modülüne dönüştürün
Temel özellik modülünün build.gradle
dosyasını, ana uygulama modülüne dönüştürmeden önce aşağıdaki gibi 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.Modern
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, özelbuild.gradle
kurulumunuza bağlı olarak önceki uygulama modülündenbuild.gradle
android
bloğunu kopyalayıp yeni uygulama modülününbuild.gradle
dosyasına yapıştırmak daha kolay olabilir. Ancak bunu yaparken dikkatli olmalısınız.Modern
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, uygun paket dağıtım etiketlerini manifeste ekleyerek özellik modülünü hazır özellikli 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:Modern
// 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 zamanı özellik modülüne dönüştürün
Eski uygulama modülünde kodunuz veya kaynağınız yoksa ö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ürdüğü için kolayca silebilirsiniz.
Ancak eski uygulama modülünde, uygulamanızı yüklediklerinde kullanıcılara sunulmasını istediğiniz işlevleri temsil eden kod ve kaynaklarınız varsa uygulama modülünü bir özellik modülüne dönüştürmek için bu bölümdeki adımları uygulayın.
Özellik modülü oluşturma işlemi, com.android.application
olan eklenti türünü com.android.dynamic-feature
olarak değiştirmeyi ve aşağıdaki build.gradle
değişikliğini yapmayı içerir:
com.android.application
olan eklenti türünücom.android.dynamic-feature
olarak değiştirin.Modern
// 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
eklentisinin gerektirdiği derleme yapılandırmalarını (applicationId
veyaproguardFiles
kuralları gibi) 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çin ve 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ün adını "uygulama" gibi bir adla değiştirin.
Aşağıda gösterildiği gibi, özellik modülünün
build.gradle
dosyasındaki "uygulama" modülüne bir uygulama bağımlılığı ekleyin.Modern
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.Modern
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, uygun paket dağıtım etiketlerini manifeste 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 anında etkinleştirilen özellik modüllerine dönüştürün
Uygulamanızın ek işlevlerini birden fazla Özellik modülüne modülerleştirdiyseniz bu modülleri hazır özellikli ö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:Modern
// 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ğıdaki kodu manifest dosyasına ekleyerek her bir özellik modülünü hazırda etkin 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ü yeni uygulama modülünün
build.gradle
dosyasına,installed_feature
öğesini de özellik modülleri listesine ekleyin.Modern
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 }
Hazır sürüm özellikli yeni uygulama paketi oluşturun, test edin ve yayınlayın
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 ve yüklü kanallar için ayrı olarak kullanıma sunmak için kullanabileceğiniz tek bir yapı olan Android App Bundle oluşturabilir. Buna ek olarak, uygulama paketleri sayesinde her kullanıcının cihaz yapılandırmasına göre optimize edilmiş APK'lar sunma avantajından faydalanırsınız. Böylece kullanıcılar yalnızca uygulamanızı çalıştırmak için ihtiyaç duydukları kodu ve kaynakları indirirler. Böylece, farklı cihazları desteklemek için artık birden çok APK oluşturmak, imzalamak ve yönetmek zorunda kalmazsınız. Kullanıcılar da 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 paketi oluşturma bölümüne gidin.