Hazır uygulamanızı Android App Bundle'ı destekleyecek şekilde taşıyın

Kullanımdan kaldırılan Android Gradle eklentisini kullanmaya devam ediyorsanız (com.android.feature) Android Hazır Uygulama modülleriniz için şunları yapmanız gerekiyor: temel uygulama eklentisini kullanmaya geçiş (com.android.application) ve Dinamik Özellik eklentisi (com.android.dynamic-feature).

Android Gradle eklentisi 3.3.0 ve sonraki sürümlerde temel uygulama eklentisi kullanıma sunuyoruz. Yani, temel uygulama modülü şartları yerine getirdiğinizde otomatik olarak avantajdan yararlanabilirsiniz. Ardından, kullanıcıların isteğe bağlı olarak indirebileceği ek özellikler ve hazır uygulama deneyimleri oluşturun. Bu kurulum, hem yüklü hem de hazır uygulama deneyimini tek bir cihazdan desteklemek ve tek bir yerden elde edilen gelirle Android App Bundle'lar.

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
Temel kodları, kaynakları ve işlevleri içeren modül en iyi uygulamaları paylaşacağız. com.android.feature (baseFeature = true ile) com.android.application

Not: Bu modülde, tüm manifest ve Uygulamanızı Android olarak derlemek ve paketlemek için gereken imzalama bilgileri App Bundle veya APK.

Kullanıcıların isteğe bağlı olarak indirebileceği ek, modüler özellikler com.android.feature com.android.dynamic-feature ( dist:instant="true" ve dist:onDemand="false" parametresi için)
Yalnızca yüklü sürümün kullanabildiği bir özellik için kod ve kaynak en iyi yoludur. com.android.application com.android.dynamic-feature ( dist:instant="false" dist:onDemand="false" inceleyin)

Bu sayfada, yeni bir uygulama oluşturmak için mevcut hazır uygulama projenizi hazır sürüm etkin Android App Bundle. Ayrıca projenizin nasıl oluşturulduğu, test edileceği hazır sürüm etkin bir Android App Bundle yayınlayarak.

Uygulamanız için yeni hazır uygulama deneyimleri oluşturuyorsanız Hazır özellikli bir özellik modülü oluşturun.

Değişiklikleri anlama

Projenizi bunun yerine Dynamic Feature eklentisini kullanmak için taşıdığınızda Android App Bundle, uygulama geliştirme ve yayınlama için yeni bir yöntem sunar. optimize edilmiş APK'ların uygulamanıza dağıtılmasını önemli ölçüde basitleştiren yardımcı olur.

Uygulama paketleri, uygulamanızın tüm derlenmiş kodlarını paketleyerek dağıtımı basitleştirir ve kaynakların yüklenmesi, ancak APK oluşturma ve oturum açma işlemlerini Google Play'e erteler. Google Play’in yeni uygulama sunum modeli, Her kullanıcının cihazı için optimize edilmiş APK'lar oluşturmak ve yayınlamak için uygulama paketi indirmeleri için yalnızca çalıştırmaları gereken kod ve kaynakları indirirler. en iyi şekilde yararlanabilirsiniz. Artık birden fazla APK'yı desteklemek için oluşturmanız, imzalamanız ve yönetmeniz gerekmiyor kullanıcılar daha küçük ve daha optimize edilmiş indirmeler elde ediyor.

Artık desteği sonlandırılan özellik eklentisi kullanılırken hazır uygulama derleme gerekli paylaşılan kodu ve kaynakları içeren bir temel özellik modülü oluşturma hazır uygulama modülünüz de dahil olmak üzere tüm modülleriniz için geçerlidir. Kodunuzun geri kalanı , her iki modelde de giriş noktaları içeren, temel olmayan birden fazla özellik modülüne dahil edildi. kullanıma sunuyoruz. Uygulamanızın yüklü sürümünde projenin bir parçası olan ayrı bir uygulama modülü olabilirdi. yalnızca yüklü uygulamanız için gereken etkinlikler.

Uygulamanızı Android App Bundle'ları destekleyecek şekilde taşıdığınızda uygulama modülünüz ana modülün rolünü geri kazanır ve ek yüklü veya özellik modülleri gibi hazır uygulama deneyimleri. Yani projeniz artık hazır sürüm etkin bir temel modüle sahip standart bir uygulama projesine çok benziyor ve ek, modüler hazır uygulama deneyimleri ekleme olanağı.

Mevcut hazır uygulama projenizi taşımak ve Android App Bundle'ın daha iyi optimize edilmiş dağıtım modeli için bölümüne göz atın.

Temel özellik modülünü bir uygulama modülüne dönüştürün

Önce temel özellik modülünün build.gradle dosyasını düzenlemeden önce aşağıdaki şekilde ana uygulama modülüne dönüştürebilirsiniz:

  1. baseFeature true satırını silin.
  2. feature veya application bağımlılığını kullanan tüm bağımlılıkları kaldırın. yapılandırmanın üç yolu vardır.

    Eski

    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"))
    }
    
  3. applicationId öğesini, yüklediğiniz diğer tüm derleme komut dosyası yapılandırmalarıyla birlikte taşıyın önceki modellerden biriyle temel uygulama modülünüzde olması com.android.feature modülüne com.android.application modülü eklendi. Biraz örnekler aşağıda gösterilmiştir. Spesifikasyonunuza bağlı olarak bu adım için build.gradle kurulumu yapıldığında, android öğesini kopyalayıp yapıştırmak daha kolay olabilir önceki uygulama modülünden yeni uygulamaya build.gradle bloğu modülünün build.gradle dosyasına sahip olmalıdır. Ancak bunu yaparken dikkatli olmalısınız. öyle.

    Eski

    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"
                )
            }
        }
    }
    
  4. Uygun paketi ekleyerek özellik modülünü hazır sürüm etkin olarak işaretleyin dağıtım etiketlerini aşağıda gösterildiği gibi manifeste gönderin.

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  5. Eklentiyi değiştirerek özellik modülünü temel uygulama modülüne dönüştürün com.android.application öğesine yazın:

    Eski

    // 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 çünkü bir önceki bölümde izlediğiniz adımlar dönüşüm verilerinizi özellik modülünü uygulamanızın temel uygulama modülüne ekleyin.

Ancak eski uygulama modülünde, uygulamanızın uygulamanızı yükledikleri sırada kullanıcılara sunulmasını istediğiniz işlevleri, 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şturmak, eklenti türünü com.android.application - com.android.dynamic-feature ve birkaç aşağıdaki gibi diğer build.gradle değişiklikleri:

  1. com.android.application olan eklenti türünü şu şekilde değiştirin: com.android.dynamic-feature.

    Eski

    // 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")
    }
    
  2. Önceki bölümde açıklandığı gibi, yapıyı başka bir yere taşıdığınızdan emin olun com.android.application eklentisi tarafından istenen yapılandırmaları applicationId veya proguardFiles kuralları gibi temel uygulama modülü.

  3. Modülü "installed_feature" gibi bir adla değiştirin şu şekilde:

    1. Görünüm >’ü seçerek Proje bölmesini açın Araç Pencereleri > Proje'yi seçin.
    2. Özellik modülünü sağ tıklayın ve Yeniden düzenle > Yeniden adlandır'ı tıklayın.
    3. Açılan iletişim kutusunda Modülü yeniden adlandır'ı seçin ve Tamam'ı tıklayın.
    4. Modülün yeni adını girin ve Tamam'ı tıklayın.
  4. 3. adıma benzer şekilde, önceki adımda oluşturduğunuz yeni uygulama modülünü yeniden adlandırın. “uygulama” gibi bir bölümle değiştirin.

  5. Özellikteki "uygulama" modülüne uygulama bağımlılığı ekleme modülünün build.gradle dosyasına göre yapılır.

    Eski

    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"))
    }
    
  6. Özelliği yeni uygulama modülünün build.gradle dosyasına ekleyin.

    Eski

    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"))
    }
    
  7. Özellik modülünün manifest dosyasında özellik modülünü şu şekilde işaretleyin: uygun paket dağıtım etiketlerini manifest'ini kullanabilirsiniz.

    <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 özellikli özellik modüllerine dönüştürün

Uygulamanızın ek işlevini birden fazla özelliğe modüler hale getirdiyseniz söz konusu modülleri dönüştürmek için bu bölümdeki adımları özellikli özellik modüllerine dönüştürmenizi sağlar.

Projenizdeki kalan her özellik modülü için aşağıdaki adımları uygulayarak bunları hazır sürüm etkin özelliklere dönüştürür:

  1. build.gradle dosyasındaki eklenti türünü şu şekilde değiştirin: com.android.dynamic-feature, aşağıda gösterildiği gibi:

    Eski

    // 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")
    }
    
  2. Aşağıdakileri ekleyerek her bir özellik modülünü anında etkin olarak işaretleyin ekleyin.

    <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>
    
  3. Özellik modülünü yeni uygulama modülünün build.gradle dosyasına ekleyin Burada, installed_feature özelliğini özellik modülleri listesine eklediniz.

    Eski

    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 özellikli yeni uygulama paketi oluşturun, test edin ve yayınlayın

Bu sayfadaki adımları tamamladıktan sonra projenizde hem Android App Bundle'ı hem de Android App Bundle'ı kullanarak uygulamanızın yüklü ve hazır sürümünü Google Play Console'a yükleyip ve yüklü kanallar için ayrı ayrı çıkarın. Ek olarak uygulama optimize edilmiş APK'lar sunma avantajından yararlanmış olursunuz. her kullanıcının cihaz yapılandırması için geçerlidir, böylece kullanıcılar sadece kodu indirir ve diğer kaynakları da kullanabilirsiniz. Yani, artık inşa etmek, imza atmak, Ayrıca farklı cihazları desteklemek için birden fazla APK'yı yönetmemiz ve kullanıcıların gittikçe küçülmesi, indirme artışı elde edebilirsiniz.

Hazır özellikli uygulama paketinizi oluşturup test etmeye başlamak için Uygulama paketini oluşturun.