Temel modülü yapılandırın

Uygulama paketi, cihaza dağıtılamadığı 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 fazla çaba sarf etmesi 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.

Modern

// 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şlevini yerine getirmenin yanı sıra uygulama projenizin tamamını etkileyen derleme yapılandırmaları ve manifest girişlerinin birçoğunu da sağlar.

Temel modül derleme yapılandırması

Mevcut uygulama projelerinin çoğunda 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 dikkat etmeniz 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üzdeki 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üncelleyerek yeni bir tam 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. Ardından, kullanıcılar uygulamanızı güncellediğinde, Google Play onlara cihazda halihazırda 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 için Uygulamanızı imzalamak için Gradle'ı yapılandırma bölümüne bakın.
  • Kod daraltma: Uygulama projenizin tamamı (özellik modülleri dahil) için kod daraltmayı etkinleştirmek istiyorsanız bunu temel modülün build.gradle dosyasından yapmanız gerekir. Diğer bir deyişle, bir özellik modülüne özel ProGuard kuralları ekleyebilirsiniz, ancak özellik modülü derleme yapılandırmalarındaki minifyEnabled özelliği yoksayılır.
  • splits bloğu yok sayılır: Bir uygulama paketi oluştururken Gradle, android.splits bloğundaki özellikleri yoksayar. Uygulama paketinizin desteklediği yapılandırma APK'sı türlerini kontrol etmek istiyorsanız yapılandırma APK'sı türlerini devre dışı bırakmak için android.bundle politikasını 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 bölümüne gidin.

Yapılandırma APK'sı 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 kaynağı ve ABI kitaplığı grubu için yapılandırma APK'ları oluşturmayı destekler. Temel modülünüzün build.gradle dosyasındaki android.bundle blokunu aşağıda gösterildiği gibi kullanarak bir veya daha fazla yapılandırma APK'sı türüne yönelik desteği devre dışı bırakabilirsiniz:

Modern

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 birlikte 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.

Uygulamanın içinde dil seçici sunan ve sistem düzeyindeki dil ayarından bağımsız olarak uygulamanın dilini 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.