Uygulama paketi, cihaza dağıtamayacağınız için APK'dan farklıdır. Daha ziyade, uygulamanızın tüm derlenmiş kodunu ve kaynaklarını tek bir derleme yapısında içeren bir yayınlama biçimidir. Yani, imzalı uygulama paketinizi yükledikten sonra Google Play, uygulamanızın APK'larını oluşturup imzalamak ve kullanıcılara sunmak için gereken her şeye sahip olur.
Başlayın
Çoğu uygulama projesinin Android App Bundle'ı desteklemek için çok fazla çaba gerektirmesi gerekmez.
Bunun nedeni, uygulamanızın temel APK'sına ait kod ve kaynakları içeren modülün, Android Studio'da yeni uygulama projesi oluşturduğunuzda varsayılan olarak aldığınız standart uygulama modülü olmasıdır.
Yani aşağıdaki application
eklentisini build.gradle
dosyasına uygulayan modül, uygulamanızın temel işlevi için kod ve kaynaklar sağlar.
Eskitme
// The standard application plugin creates your app's base module. plugins { id 'com.android.application' }
Kotlin
plugins { // The standard application plugin creates your app's base module. id("com.android.application") }
Temel modül, uygulamanızın temel işlevlerini sağlamanın yanı sıra uygulama projenizin tamamını etkileyen derleme yapılandırmaları ve manifest girişlerinin çoğunu da sağlar.
Temel modül derleme yapılandırması
Mevcut uygulama projelerinin çoğu için temel modülünüzün derleme yapılandırmasında herhangi bir değişiklik yapmanız gerekmez. Ancak uygulama projenize özellik modülleri eklemeyi düşünüyorsanız veya uygulamanızı daha önce birden fazla APK kullanarak yayınladıysanız temel modülün derleme yapılandırmasının akılda tutulması gereken bazı yönleri vardır.
Sürüm kodu ve uygulama güncellemeleri
Android App Bundle sayesinde artık Google Play'e yüklediğiniz birden fazla APK için sürüm kodunu yönetmek zorunda değilsiniz. Bunun yerine, aşağıda gösterildiği gibi uygulamanızın temel modülünde yalnızca bir sürüm kodu yönetirsiniz:
// In your base module build.gradle file
android {
defaultConfig {
…
// You specify your app’s version code only in the base module.
versionCode 5
versionName "1.0"
}
}
Uygulama paketinizi yükledikten sonra Google Play, temel modülünüzün sürüm kodunu kullanarak bu paketten oluşturduğu tüm APK'lara aynı sürüm kodunu atar. Yani bir cihaz, uygulamanızı indirip yüklediğinde bu uygulamaya ait tüm bölünmüş APK'lar aynı sürüm kodunu paylaşır.
Uygulamanızı yeni kod veya kaynaklarla güncellemek istediğinizde, uygulamanızın temel modülündeki sürüm kodunu güncellemeniz ve yeni, tam bir uygulama paketi oluşturmanız gerekir. Bu uygulama paketini Google Play'e yüklediğinizde, temel modülün belirttiği sürüm koduna dayalı olarak yeni bir APK grubu oluşturulur. Daha sonra, kullanıcılar uygulamanızı güncellediğinde, Google Play onlara şu anda cihazda yüklü olan tüm APK'ların güncellenmiş sürümlerini sunar. Yani, yüklü tüm APK'lar yeni sürüm koduna güncellenir.
Dikkat edilmesi gereken diğer noktalar
- Uygulama imzalama: Derleme dosyalarınıza imzalama bilgileri eklerseniz bu bilgileri yalnızca temel modülün derleme yapılandırma dosyasına eklemeniz gerekir. Daha fazla bilgi edinmek için Uygulamanızı imzalamak için Gradle'ı yapılandırma bölümüne bakın.
- Kod küçültme: Uygulama projenizin tamamında (özellik modülleri de dahil olmak üzere) kod daraltma özelliğini etkinleştirmek istiyorsanız bunu temel modülün build.gradle dosyasından yapmanız gerekir. Yani bir özellik modülüne özel ProGuard kuralları ekleyebilirsiniz ancak özellik modülü derleme yapılandırmalarındaki
minifyEnabled
özelliği yok sayılır. splits
bloğu yok sayılır: Bir uygulama paketi oluştururken Gradle,android.splits
bloğundaki özellikleri yoksayar. Uygulama paketinizin hangi yapılandırma APK'larını desteklediğini kontrol etmek istiyorsanız yapılandırma APK'larının türlerini devre dışı bırakmak içinandroid.bundle
kullanın.- Uygulama sürümü oluşturma: Temel modül, uygulama projenizin tamamı için sürüm kodunu ve sürüm adını belirler. Daha fazla bilgi için Uygulama güncellemelerini yönetme hakkındaki bölüme gidin.
Yapılandırma APK'larının türlerini yeniden etkinleştirme veya devre dışı bırakma
Varsayılan olarak, bir uygulama paketi oluşturduğunuzda her dil kaynağı, ekran yoğunluğu kaynakları ve ABI kitaplığı grubu için yapılandırma APK'ları oluşturmayı destekler. Aşağıda gösterildiği gibi, temel modülünüzün build.gradle
dosyasındaki android.bundle
blokunu kullanarak bir veya daha fazla yapılandırma APK'sı türüne yönelik desteği devre dışı bırakabilirsiniz:
Eskitme
android { // When building Android App Bundles, the splits block is ignored. // You can remove it, unless you're going to continue to build multiple // APKs in parallel with the app bundle splits {...} // Instead, use the bundle block to control which types of configuration APKs // you want your app bundle to support. bundle { language { // This property is set to true by default. // You can specify `false` to turn off // generating configuration APKs for language resources. // These resources are instead packaged with each base and // feature APK. // Continue reading below to learn about situations when an app // might change setting to `false`, otherwise consider leaving // the default on for more optimized downloads. enableSplit = false } density { // This property is set to true by default. enableSplit = true } abi { // This property is set to true by default. enableSplit = true } } }
Kotlin
android { // When building Android App Bundles, the splits block is ignored. // You can remove it, unless you're going to continue to build multiple // APKs in parallel with the app bundle splits {...} // Instead, use the bundle block to control which types of configuration APKs // you want your app bundle to support. bundle { language { // This property is set to true by default. // You can specify `false` to turn off // generating configuration APKs for language resources. // These resources are instead packaged with each base and // feature APK. // Continue reading below to learn about situations when an app // might change setting to `false`, otherwise consider leaving // the default on for more optimized downloads. enableSplit = false } density { // This property is set to true by default. enableSplit = true } abi { // This property is set to true by default. enableSplit = true } } }
Dil değişikliklerini işleme
Google Play, uygulamayla hangi dil kaynaklarının yükleneceğini, kullanıcının cihaz ayarlarındaki dil seçimine göre belirler. Uygulamanızı indirdikten sonra varsayılan sistem dilini değiştiren bir kullanıcıyı düşünün. Uygulamanız bu dili destekliyorsa cihaz, Google Play'den bu dil kaynakları için ek yapılandırma APK'ları ister ve indirir.
Uygulama içinde dil seçici sunan ve uygulamanın dilini sistem düzeyindeki dil ayarından bağımsız olarak dinamik olarak değiştiren uygulamalarda, eksik kaynaklar nedeniyle kilitlenmeleri önlemek için bazı değişiklikler yapmanız gerekir. android.bundle.language.enableSplit
özelliğini false
olarak ayarlayın veya Ek dil kaynaklarını indirme bölümünde açıklandığı gibi Play Core kitaplığını kullanarak isteğe bağlı dil indirmeleri uygulamayı düşünün.