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

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:

  1. baseFeature true satırını silin.
  2. feature veya application 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"))
    }
  3. applicationId öğesini, temel uygulama modülünüzde olmasını beklediğiniz diğer tüm derleme komut dosyası yapılandırmalarıyla birlikte mevcut com.android.application modülünden com.android.feature modülüne taşıyın. Bazı örnekler aşağıda gösterilmiştir. Bu adımda, belirli build.gradle kurulumunuza bağlı olarak, önceki uygulama modülündeki build.gradle bloğunu kopyalayıp yeni uygulama modülünün build.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"
                )
            }
        }
    }
  4. 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>
    
  5. 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:

  1. 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")
    }
  2. Önceki bölümde açıklandığı gibi, com.android.application eklentisi tarafından gerekli olan derleme yapılandırmalarını (ör. applicationId veya proguardFiles kuralları) temel uygulama modülüne taşıdığınızdan emin olun.

  3. Modülü aşağıdaki gibi "installed_feature" olarak yeniden adlandırın:

    1. Menü çubuğundan Görünüm > Araç Pencereleri > Proje'yi seçerek Proje bölmesini açın.
    2. Özellik modülünü sağ tıklayın ve Yeniden düzenle > Yeniden adlandır'ı seçin.
    3. Açılan iletişim kutusunda Modülü yeniden adlandır'ı seçip Tamam'ı tıklayın.
    4. Modülün yeni adını girin ve Tamam'ı tıklayın.
  4. 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.

  5. Ö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"))
    }
  6. Ö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"))
    }
  7. Ö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:

  1. build.gradle dosyasındaki eklenti türünü aşağıda gösterildiği gibi com.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")
    }
  2. 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>
    
  3. Özellik modülünü, özellik modülleri listesine build.gradle eklediğiniz yeni uygulama modülünün build.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.