Koşullu yayını yapılandırma

Koşullu dağıtım, belirli cihaz yapılandırması gereksinimlerini ayarlamanıza olanak tanır özellik modüllerini kullanabilirsiniz. Örneğin, şunları içeren bir özellik modülü yapılandırabilirsiniz: kullanıma sunmak üzere uygulama yükleme sırasında kullanılabilen artırılmış gerçeklik (AR) işlevi yalnızca Artırılmış Gerçeklik'i (AR) destekleyen cihazlarda.

Bu yayınlama mekanizması şu anda bir modülünü aşağıdaki cihaz yapılandırmalarına bağlı olarak uygulama yükleme sırasında görüntüleyebilirsiniz:

Cihaz, belirttiğiniz tüm gereksinimleri karşılamıyorsa modül uygulama yükleme anında indirilir. Ancak, uygulamanız daha sonra Play Core'u kullanarak isteğe bağlı modülü indirebilirsiniz. SDK'dır.

Başlamadan önce Android Studio 3.5 veya sonraki bir sürümünü kullandığınızdan emin olun. İlgili içeriği oluşturmak için kullanılan Şu bölümlerde, özellik modüllerinden yararlanın.

Koşullu yayınlama seçenekleri içeren yeni bir modül ekleme

Koşullu yayınlama ile yeni özellik modülü oluşturmanın en kolay yolu aşağıdaki gibi Yeni Modül sihirbazı üzerinden yapılır:

  1. Yeni Modül iletişim kutusunu açmak için Dosya > Yeni > Yeni Modül menü çubuğunda
  2. Yeni Modül iletişim kutusunda Dinamik Özellik Modülü'nü seçin ve Sonraki'ye dokunun.
  3. Modülünüzü her zamanki gibi yapılandırın ve İleri'yi tıklayın.
  4. Modül İndirme Seçenekleri bölümünde aşağıdakileri tamamlayın:

    1. En fazla 50 karakter kullanarak Modül başlığı'nı belirtin. Platform bu başlığı, örneğin aşağıdaki durumlarda modülü kullanıcılara tanıtmak için kullanır: Kullanıcının modülü indirmek isteyip istemediğini kontrol eder. Bunun için uygulamanızın temel modülünün, dize kaynağı çok iyi olur. Android Studio kullanarak modülü oluştururken IDE dize kaynağını sizin için temel modüle ekler ve özellik modülünün manifest dosyasına aşağıdaki giriş eklendi:

      <dist:module
          ...
          dist:title="@string/feature_title">
      </dist:module>
      
    2. Yükleme süresine dahil etme altındaki açılır menüden Yalnızca belirtilen özelliklere sahip cihazlar için uygulama yükleme işlemine modülü dahil edin. yalnızca uygulama yükleme anında uygulamanıza dahil edilen bir modül oluşturur cihaz gibi sizin belirleyebileceğiniz belirli yapılandırmalara sahip cihazlar özellikleri veya ülke. Android Studio, aşağıdakileri, modülün manifestonuzu oluşturun:

      <dist:module ... >
        <dist:delivery>
            <dist:install-time>
                <dist:conditions>
                    <!-- If you specify conditions, as described in the steps
                         below, the IDE includes them here. -->
                </dist:conditions>
            </dist:install-time>
        </dist:delivery>
      </dist:module>
      
    3. Modülün otomatik olarak indirilmesini belirli ülkelerle sınırlamak istiyorsanız veya bir minimum API seviyesi belirlemek istiyorsanız modülü oluşturmayı tamamlamak için Son'u tıklayın ve ardından bu adımları nasıl uygulayacağınızı ülkeye göre koşulları belirtin veya minimum API seviyesi. Aksi takdirde, bir cihazın etkinleştirebileceği bir özellik eklemek için + cihaz özelliği gerekir.

    4. device-feature (cihaz özelliği) seçeneğinin yanında, aşağıdaki menüden aşağıdaki seçeneklerden birini belirleyin: açılır menüyü tıklayın ve değerini belirtin:

      • Ad: Bir donanım veya yazılım belirtmenizi sağlar bir cihaz için gereken bir özellik olduğundan emin olun. yükleme süresidir. Koşullu yayının desteklediği özellikler şunlardır: aşağıdaki değerlerde FEATURE_* sabit değerleri olarak listelenenlerle aynıdır: PackageManager Bu seçeneği belirlerseniz açılır menünün yanındaki alanda "bluetooth" gibi bir özelliği ve görüntülenen önerilerden birini seçin.
      • OpenGL ES Sürümü: Aşağıdaki özelliklere sahip bir OpenGL ES sürümünü belirtmenizi sağlar: yükleme sırasında modülü indirmek için bir cihaz gerekir. Şu durumda: bu seçeneği belirleyin, kodu yazmaya başlayın (örneğin, "0x00030001") alanı tıklayıp açılır menünün yanında bulunan önerilerden birini görünür.
    5. Kullanılabilir cihaz özelliklerine göre birden fazla koşul eklemek isterseniz İstediğiniz her cihaz özelliği koşulu için + cihaz özelliği seçeneğini tıklayın belirtin.

    6. Bu modülün kullanılabilir olmasını istiyorsanız Birleştirme seçeneğinin yanındaki kutuyu işaretleyin ve sonraki sürümleri çalıştıran ve Android 4.4 (API düzeyi 20) ve önceki sürümleri çalıştıran çoklu APK'lar. Yani, bu modül için isteğe bağlı davranışı etkinleştirebilirsiniz. özelliğini desteklemeyen cihazlardan hariç tutmak için birleştirmeyi devre dışı bırakın. bölünmüş APK'ları indirip yükleme. Android Studio, aşağıdaki adımları uygulayın:

      <dist:module ...>
          <dist:fusing dist:include="true | false" />
      </dist:module>
      
  5. Modül indirme seçeneklerini yapılandırmayı tamamladığınızda Son'u tıklayın.

Android Gradle eklentisinin lint'i tıklayın. ilgili uygulama modülü, dinamik özellik modüllerinde lint'i çalıştırır ve tüm sorunları uygulamanın hata analizi raporuna ekleyin.

Mevcut bir özellik modülüne koşullu yayınlama seçenekleri ekleme

Mevcut bir özelliğe kolayca koşullu yayınlama seçenekleri ekleyebilirsiniz modülünü modülün manifest dosyasıyla da yükleyebilirsiniz. Ancak, öncelikle koşullu yayın seçeneklerinin diğer etkinleştirmeniz gerekir.

Başlamak için öncelikle manifest dosyanızı yeni <dist:delivery> öğesi. Aşağıdaki kod snippet'i, söz dizimi:

<!-- This is the old syntax. -->
<dist:module
  dist:title="@string/feature_title" dist:onDemand="true">
  <dist:fusing dist:include="true"/>
</dist:module>

Yukarıdaki yayınlama seçenekleri artık aşağıdaki gibi belirtilmektedir.

<dist:module
  dist:title="@string/feature_title">
  <dist:delivery>
      <dist:on-demand/>
  </dist:delivery>
  <dist:fusing dist:include="true"/>
</dist:module>

Ardından, cihaz özelliklerine göre koşullu teslim seçeneklerini anlatacağım.

<dist:module
    dist:title="@string/feature_title">
    <dist:delivery>
      <dist:on-demand/>
      <dist:install-time>
        <dist:conditions>
          <!-- Requires that the device support AR to download the module at
          app install-time.  -->
          <dist:device-feature dist:name="android.hardware.camera.ar"/>
        </dist:conditions>
      </dist:install-time>
    </dist:delivery>
    <dist:fusing dist:include="true"/>
</dist:module>

Aşağıdaki bölümlerde koşullu yayınlama için şu gibi diğer seçenekler açıklanmıştır: ülkeye veya minimum API düzeyine göre belirleyebilirsiniz.

Diğer modül indirme seçenekleriyle uyumluluk

Özellik modüllerinin her birinin nasıl çalıştığını yapılandırmak için birden fazla seçenek bir özelliğin kullanıcının cihazına teslim edildiğini koşullu yayınlama seçenekleri diğer ayarlardan etkilenir. Aşağıdaki tablo koşullu yayınlamanın diğer modül indirmeleriyle uyumluluğunu özetler seçenekleri vardır.

Modül indirme seçeneği Koşullu yayın ile uyumluluk
Kaynaşma (<dist:fusing dist:include="true"/>) Bir modül bu seçeneği doğru değerine ayarlarsa Google Play, uygulamanızı API düzeyi 19 veya daha düşük sürümleri çalıştıran cihazlara dağıtırken belirttiğiniz koşullu yayınlama seçeneklerine uymaz. Yani birleştirmeyi etkinleştiren özellik modülleri, API düzeyi 19 veya altını çalıştıran cihazlar için her zaman yükleme sırasında dahil edilir.
Anında Etkin (<dist:module dist:instant="true"/>) Koşullu yayın seçenekleri, hazır sürüm etkin özellik modüllerinde desteklenmez.
İstek üzerine (<dist:on-demand/>) Varsayılan olarak, koşullu yayınlama seçeneklerini belirtirseniz modül isteğe bağlı olarak da kullanılabilir.

Ülkeye göre koşullar belirtin

Koşullu teslimat, satın almak istediğiniz ülkeleri belirtmek için de uygulama yükleme sırasında modülünüzü indirmeden hariç tutmak (veya dahil etmek) engellemek için kullanabilirsiniz. Bu koşulu belirtmek, örneğin modülünüz bir araç üzerinde çalışıyorsa yararlı olabilir. Belirli bölgelerde kullanılamayan bir ödeme yöntemi uyguluyorsa.

Bu bağlamda, cihazın bulunduğu ülke genellikle kullanıcının kayıtlı fatura adresi olmalıdır.

Modülünüzün ülkelerini belirtmek için özelliğe aşağıdakileri ekleyin: modülünün manifest dosyasıdır.

<dist:conditions>
   <!-- Set to "true" to specify countries to exclude from downloading
   this module at app install-time. By default, modules are available
   for download to all user countries. -->
  <dist:user-countries dist:exclude="true">
    <!-- Specifies the two-letter  CLDR country code for regions that should
    not download the module at app install-time. -->
    <dist:country dist:code="CN"/>
    <dist:country dist:code="HK"/>
  </dist:user-countries>
</dist:conditions>

API düzeyi koşullarını belirtin

Cihazın API düzeyine göre bir koşul belirtmek yararlı olabilir: özellik modülü, yalnızca belirli Android platformunun sürümleri.

Minimum veya maksimum cihaz API'si düzeyine dayalı bir koşul belirlemek için aşağıdakinden emin olun.

<dist:conditions>
    <!-- Specifies the minimum API level that the device must satisfy
         in order to download your module at app install-time. The API level you
         specify must be greater or equal to the module's own minSdkVersion. -->
   <dist:min-sdk dist:value="21"/>
    <!-- Specifies the maximum API level that the device cannot exceed
         in order to download your module at app install-time. The API level you
         specify must be less than or equal to the module's own maxSdkVersion. -->
   <dist:max-sdk dist:value="24"/>
</dist:conditions>