Koşullu modüller için cihaz hedefleme

Koşullu Modüller için Cihaz Hedefleme nedir?

Cihaz Hedefleme, cihazlara donanımlarına dayalı olarak koşullu özellik modülleri sunmanıza olanak tanır. Örneğin, bir özelliği yalnızca ileri teknoloji cihazlara sunmayı ve bu özelliği kullanamayan cihazlara sunmamayı (bu cihazlarda yer tasarrufu yapmayı) seçebilirsiniz. Bunun temelinde, Play Feature Delivery'deki özellik modüllerinin temelini oluşturur. Aşağıda gösterildiği gibi, hedefleme ölçütlerini (şimdilik RAM, belirli cihaz modelleri veya kullanılabilir sistem özelliklerine göre) tanımlayabilir ve modülleri belirli cihaz gruplarına hedefleyebilirsiniz.

Geliştirici Yolculuğu

Genel olarak, cihaz hedeflemeyi mevcut uygulamanıza entegre etmek için aşağıdaki adımları uygulamanız gerekir:

  1. Donanımlarına bağlı olarak yalnızca bir cihaz grubuna sunmak istediğiniz bir özellik geliştirin.
    • Bu özelliği bir özellik modülü olarak uygulayın.
    • AndroidManifest.xml dosyasının modül koşulları bölümünde, dosyanın hangi cihaz gruplarına yayınlanması gerektiğini belirtin.
  2. Play'in özellik modüllerinizi kullanıcı cihazlarına nasıl sunacağını bilmesi için Cihaz Hedefleme yapılandırmanızı oluşturun
    • Google Play Developer API'yi kurun (henüz tamamlanmadıysa). DT yapılandırmalarını Play'e göndermek için bunu kullanacaksınız.
    • DT yapılandırmasını oluşturma adımlarını uygulayın
  3. AAB'nizi Play'e yükleyin ve her şeyin doğru yapılandırıldığından emin olmak için test edin

Bu dokümanda, koşullu teslim için Android Gradle Eklentisi kullanılarak Cihaz Hedefleme'nin nasıl ekleneceği açıklanmaktadır.

Cihaz Hedefleme ile koşullu özellik modülü oluşturma

Uygulamaya bir özellik modülü ekleme

Play Özellik Dağıtımı, uygulamanızın belirli özelliklerini koşullu olarak sunmanıza veya isteğe bağlı olarak indirmenize olanak tanır. Bununla ilgili genel bilgileri buradan inceleyebilirsiniz. Cihaz Hedefleme ile bir özelliği sağlanan gruplara atanmış cihazlara koşullu olarak sunabilirsiniz.

Koşullu yayın için DT'yi kullanmak istiyorsanız bundletool 1.7.0 ve üzeri bir sürüm kullanmanız gerekir. Bunun için, Android Gradle Eklentisi'nin Bundletool sürümünü açık bir şekilde belirtmeniz gerekir. Bu, kök build.gradle dosyası buildscript bölümünde sağlanabilir:

buildscript {
  dependencies {
    classpath "com.android.tools.build:bundletool:1.7.0"
    ...
  }
  ...
}

Bir özellik modülü oluşturmak için, Android uygulamasını modülerleştirme ile ilgili bu talimatları uygulayın.

Özellik geliştirme süreciniz tamamlandıktan sonra, özelliğinizin AndroidManifest.xml öğesinde Cihaz Hedeflemeye dayalı olarak yayınlama koşulları belirtebilirsiniz. dist:module öğesinin dist:conditions içinde bir cihaz grubu koşulu sağlamanız gerekir. Koşullar hakkında genel bilgilere buradan ulaşabilirsiniz. Cihaz gruplarında, bu özelliğin aşağıdaki kullanıcılara sunulması gereken tüm grupları belirtebileceğiniz yeni koşullar mevcuttur:

<dist:device-groups>
  <dist:device-group dist:name="..." />
  <dist:device-group dist:name="..." />
  ...
</dist:device-groups>

Örneğin, _my_group1 adında bir cihaz grubu tanımladığınızı varsayalım. Bu grubu nasıl tanımlayacağınızı aşağıdaki Cihaz Hedefleme Yapılandırması Oluşturma bölümünde öğrenebilirsiniz. Özellik modülünün yalnızca _my_group1 cihazlarına ait cihazlara yayınlanması gerekiyorsa AndroidManifest.xml şu şekilde görünmelidir:

<manifest ...>
  ...
  <dist:module dist:title="...">
    <dist:delivery>
      <dist:install-time>
        <dist:conditions>
          <dist:device-groups>
            <dist:device-group dist:name="my_group_1"/>
          </dist:device-groups>
          ...
        </dist:conditions>
      </dist:install-time>
    </dist:delivery>
  </dist:module>
  ...
</manifest>

Hem _my_group1 hem de _my_group2'yi hedefleyen bir özellik için AndroidManifest.xml şöyle görünür:

<manifest ...>
  ...
  <dist:module dist:title="...">
    <dist:delivery>
      <dist:install-time>
        <dist:conditions>
          <dist:device-groups>
            <dist:device-group dist:name="my_group_1"/>
            <dist:device-group dist:name="my_group_2"/>
          </dist:device-groups>
          ...
        </dist:conditions>
      </dist:install-time>
    </dist:delivery>
  </dist:module>
  ...
</manifest>

İşlemi tamamladıktan sonra Android App Bundle'ınızı (AAB) oluşturabilirsiniz.

Yerel Test

Devam etmeden önce her şeyin doğru yapılandırıldığından emin olmak için uygulama paketinizi yerel olarak test etmeniz önerilir. bundletool ile uygulamanızı yerel olarak derleyip test ederek doğru cihaz grubunu açıkça belirtirsiniz. İlk olarak bir dizi .apks dosyası oluşturmak için build-apks uygulamasını kullanacak, ardından install-apks ile uygulamanızı bağlı bir cihaza dağıtacaksınız. device-groups işaretini kullanarak hangi grupların yüklenmesini istediğinizi de belirtebilirsiniz. Bu yerel test yöntemi hakkında daha fazla bilgiyi burada bulabilirsiniz. Bu sayfanın henüz DT için güncellenmediğini, bu nedenle device-groups işaretinin eksik olduğunu lütfen unutmayın.

bundletool build-apks --bundle=/path/to/app.aab --output=/path/to/app.apks --local-testingbundletool install-apks --apks=/path/to/app.apks --device-groups=my_group_1,my_group_2

Alternatif olarak: Belirli bir cihaza ait bir APK grubunu çıkarmak için extract-apks'i de kullanabilirsiniz (bu cihaz için cihaz gruplarını belirtmenin yanı sıra get-device-spec kullanarak).

bundletool get-device-spec --output=/path/to/device-spec.json --device-groups=my_group_1,my_group_2bundletool extract-apks --apks=/path/to/existing_APK_set.apks --output-dir=/path/to/device_specific_APK_set.apks --device-spec=/path/to/device-spec.json

Google Play Developer API aracılığıyla Cihaz Hedefleme Yapılandırması Oluşturma

Google Play Developer API'yi kullanmaya başlama (henüz tamamlanmamışsa)

Cihaz Hedeflemeyi yapılandırmak (cihaz gruplarınızı tanımlamak) için Android Yayıncı API'sini kullanarak yapılandırmanızı Google Play'e yüklemeniz gerekir. Yukarıdaki bağlantıdan API hakkında daha fazla bilgi edinebilirsiniz. Başlamak için uygulamanız gereken birkaç adım vardır:

  1. API projenizi oluşturun (gerekirse) ve Google Play Console'unuza bağlayın
  2. API Erişim İstemcisi ayarlama

API referansını burada bulabilirsiniz. Daha sonra derlemenizi API aracılığıyla yüklemeyi seçerseniz Edits yöntemlerini kullanırsınız. Ayrıca, API'yi kullanmadan önce bu sayfayı incelemeniz önerilir.

Device Targeting Configuration API'yi kullanma

Cihaz hedefleme yapılandırmanızı oluşturmak için aşağıdaki API çağrısını kullanabilirsiniz:

Cihaz Hedefleme Yapılandırması Oluşturma

HTTP isteği POST https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs
Yol parametreleri Yok
İstek Metni Cihaz Hedefleme Yapılandırması
Yanıt Gövdesi Cihaz Hedefleme Yapılandırması
Cihaz Hedefleme Yapılandırması Nesnesi
{
  device_groups: [
    {
      name: string,
      device_selectors: [
        {
          device_ram : {
            min_bytes: integer
            max_bytes: integer
          },
          included_device_ids: [
            {
              build_brand: string,
              build_device: string
            }
          ],
          excluded_device_ids: [
            {
              build_brand: string,
              build_device: string
            }
          ],
          required_system_features: [
            {
              name: string
            }
          ],
          forbidden_system_features: [
            {
              name: string
            }
          ]
        }
      ]
    }
  ]
}

Alanlar:

  • device_tier_config_id (tamsayı): Bu cihaz hedefleme yapılandırmasına karşılık gelen kimlik
  • device_groups (nesne): Grup tanımları

    • name (dize): Cihaz grubunun adı (tanımladığınız dize kimliği)
    • device_selectors (nesne): Bir cihazın bu gruba ait olması için gereken cihaz gereksinimleri.
    • device_ram (nesne): Cihaz RAM gereksinimleri
      • min_bytes (tam sayı): Gerekli minimum RAM (bayt cinsinden)
      • max_bytes (tam sayı): Gerekli maksimum RAM (bayt cinsinden)
    • included_device_ids (nesne): Bu seçiciye dahil edilecek cihaz modelleri (grup başına maks. 10.000 device_id). A cihazının seçiciyle eşleşmesi için bu listede olması gerekir. Bu, tam seçiciyle eşleştirmek için gerekli ancak yeterli değildir (bir seçicide gereksinimleri birleştirmeyle ilgili aşağıdaki notu inceleyin).
      • build_brand (dize): Cihaz üreticisi
      • build_device (dize): Cihaz modeli kodu
    • excluded_device_ids (nesne): Bu seçiciden hariç tutulacak cihaz modelleri (grup başına maks. 10.000 cihaz kimliği). Bu listedeki bir cihaz, seçicideki diğer tüm gereksinimlerle eşleşse bile seçiciyle eşleşmez.
      • build_brand (dize): Cihaz üreticisi
      • build_device (dize): Cihaz modeli kodu
    • required_system_features (nesne): Bir cihazın bu seçiciye dahil edilmesi gereken özellikler (grup başına en fazla 100 özellik). Bir cihazın seçiciyle eşleşmesi için bu listedeki tüm sistem özelliklerine sahip olması gerekir. Bu, tam seçiciyle eşleşme için gerekli ancak yeterli değildir (gereksinimleri bir seçicide birleştirmeyle ilgili aşağıdaki nota bakın).

      Sistem özellik referansı

      • name (dize): Bir sistem özelliği
    • forbidden_system_features (nesne): Bir cihazın bu seçiciye dahil edilmesi gerekmeyen özellikler (grup başına en fazla 100 özellik). Cihaz, bu listedeki sistem özelliklerinden herhangi birine sahipse seçicideki diğer tüm gereksinimlerle eşleşse bile seçiciyle eşleşmez.

      Sistem özellik referansı

      • name (dize): Bir sistem özelliği

Cihaz üreticisi ve model koduna göre doğru biçimlendirmeyi bulmak için aşağıdakilerden birini yaparak Google Play Console'daki Cihaz Kataloğu'nu kullanabilirsiniz:

  • Cihaz Kataloğu'nu kullanarak cihazları ayrı ayrı inceleme ve aşağıdaki örnekte gösterildiği gibi üretici ile model kodunu ilgili yerlerde bulma (Google Pixel 4a için üretici "Google", model kodu ise "gün balığı")

    cihaz kataloğundaki pixel 4a sayfası

    cihaz kataloğundaki pixel 4a sayfası

  • Desteklenen cihazların bir CSV dosyasını indirerek ve build_brand ve build_device alanları için sırasıyla Manufacturer ve Model Kodu'nu kullanma.

Örneğin, aşağıdaki grup, Pixel 5 (google redfin) ve Pixel 3 (4 GB'tan az RAM'i olan Google Blueline) dahil olmak üzere 4 GB'tan fazla RAM'e sahip tüm cihazlarla eşleşir.

device_groups: [
  {
    name: "my_group_1",
    device_selectors: [
      {
        device_ram: {
          min_bytes: 4294967296
        },
        excluded_device_ids: [
          {
            build_brand: "google",
            build_device: "redfin"
          }
        ]
      },
      {
        included_device_ids: [
          {
            build_brand: "google",
            build_device: "blueline"
          }
        ]
      }
    ]
  }
]

Bu sayfayı şu şekilde okuyabilirsiniz:

[ (RAM > 4GB) AND NOT (google redfin) ] OR [ (google blueline) ]

Google Play'e yüklemeden önce Cihaz Hedefleme Yapılandırmanızı doğrulamak için aşağıdaki talimatları uygulayabilirsiniz.

Kimliğe Göre Cihaz Hedefleme Yapılandırmasını Alma

Aşağıdaki çağrıyı kullanarak kimliğe göre belirli bir cihaz hedefleme yapılandırmasını alabilirsiniz:

HTTP isteği GEThttps://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs/{deviceTierConfigId}
Yol parametreleri Yok
İstek Metni Yok
Yanıt Gövdesi Cihaz Hedefleme Yapılandırması

Cihaz Hedefleme Yapılandırmalarının listesini alma

Aşağıdaki çağrıyla son 10 cihaz hedefleme yapılandırmasını alabilirsiniz (veya page_token sorgu parametresini kullanarak en uygun şekilde 10 yapılandırma belirleyebilirsiniz):

HTTP isteği GEThttps://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs
Yol parametreleri Yok
Sorgu parametreleri page_token (isteğe bağlı) - 10 DTC'den oluşan belirli bir grubu belirtmek için kullanılır. Bu seçenek, 10'dan fazla DTC oluşturduysanız ve en son 10 DTC'den önce oluşturulmuş DTC'leri görmek istiyorsanız yararlı olur.
İstek Metni Yok
Yanıt Gövdesi Cihaz Hedefleme Yapılandırmalarının Listesi

page_token

Cihaz Hedefleme Yapılandırmanızı Doğrulama

bundletool, Cihaz Hedefleme Yapılandırmanızın Play'e yüklenmeden önce amaçlandığı şekilde çalıştığını doğrulamanıza yardımcı olacak iki komut içerir.

bundletool print-device-targeting-config ile JSON dosyanızın söz diziminin doğru olduğunu onaylayabilir ve cihaz gruplarınızı daha okunabilir bir biçimde görselleştirebilirsiniz.

bundletool print-device-targeting-config --config=mydtc.json

bundletool evaluate-device-targeting-config ile hangi grupların belirli bir cihazla eşleşeceğini değerlendirebilirsiniz. Hedef cihazınızı iş istasyonunuza bağlayıp --connected-device işaretini kullanabilir veya cihaz özelliklerine sahip bir JSON dosyasını manuel olarak derleyip bu dosyayı --device-properties işaretiyle sağlayabilirsiniz.

bundletool evaluate-device-targeting-config --config=mydtc.json --connected-device
bundletool evaluate-device-targeting-config --config=mydtc.json --device-properties=deviceproperties.json

Cihaz özellikleri dosyası, DeviceProperties protokol buf yapısına uygun bir JSON dosyası olmalıdır. Örneğin:

{
  "ram": 2057072640,
  "device_id": {
    "build_brand":"google",
    "build_device":"redfin"
  },
  "system_features": [
    {
      "name":"android.hardware.bluetooth"
    },
    {
      "name":"android.hardware.camera"
    }
  ]
}

Android App Bundle'ınızı Google Play'e yükleme

API aracılığıyla

Android App Bundle'ınızı Google Play'e yüklemek ve belirli bir Cihaz Hedefleme yapılandırmasını derlemenize bağlamak için Google Play Developer API'yi kullanabilirsiniz.

Düzenleme yöntemlerine genel bir bakışın yanı sıra Google Play Console'daki farklı kanallara yayınlamayla ilgili daha ayrıntılı örnekler de verilmiştir (son bağlantı için sayfada listelenen APK ile uyumlu API yerine AAB uyumlu API'leri kullanmanız gerekir). Derlemeniz için cihaz hedefleme yapılandırmasını belirtmek istiyorsanız edits.bundle.upload yöntemini çağırırken yapılandırma kimliğini deviceTierConfigId sorgu parametresine eklersiniz. Örneğin:

https://androidpublisher.googleapis.com/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles?deviceTierConfigId="{deviceTierConfigId}"

Google Play Console'dan

Android App Bundle'ınızı yüklemek için buradaki talimatları uygulayabilirsiniz. En son DTC yapılandırması App Bundle'ınıza uygulanır.

Yardımcı

Curl'ü Kullanmaya Hızlı Başlangıç

Aşağıda, yeni bir cihaz hedefleme yapılandırması oluşturma ve yeni bir düzenleme oluşturmak için Edits API'yi kullanma, yeni bir AAB yükleme (onu belirli bir cihaz hedefleme yapılandırmasıyla ilişkilendirme), izleme/sürüm yapılandırmasını ayarlama ve düzenlemeyi uygulama (böylece değişiklik herkese açık hale getirme) ile ilgili bir örnek (komut satırı aracı curl kullanılarak) verilmiştir. Şunların bulunduğu konuma sahip olduğunuzdan emin olun:

Öncelikle bir cihaz hedefleme yapılandırması oluşturun ve başarılı bir aramadan sonra alacağınız deviceTierConfigId'yi not edin.

curl -H "$(oauth2l header --json $HOME/{apiKey} androidpublisher)" -XPOST -H "Content-Type: application/json" -d "{ device_groups: [ { name: "my_group_1", device_selectors: [ { device_ram: { min_bytes: 4294967296 }, excluded_device_ids: [ { build_brand: "google", build_device: "redfin" } ] }, { included_device_ids: [ { build_brand: "google", build_device: "blueline" } ] } ] } ] }" https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs

Düzenleme başlatın: Düzenleme için bir kimlik ve geçerlilik süresi alırsınız. Aşağıdaki çağrılar için kimliği kaydedin.

curl -H "$(oauth2l header --json $HOME/{apiKey} androidpublisher)" -XPOST https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/edits

AAB'yi yükleyin ve cihaz hedefleme yapılandırmasını (deviceTierConfigId) sorgu parametresi olarak belirtin. Çağrı başarılı olursa derlemenin sürüm kodunu, sha1 ve sha256'sını görürsünüz. Sürüm kodunu bir sonraki arama için kaydedin.

curl -H "$(oauth2l header --json $HOME/{apiKey} androidpublisher)" --data-binary @$HOME/{aabFile} -H "Content-Type: application/octet-stream" -XPOST https://androidpublisher.googleapis.com/upload/androidpublisher/v3/applications/{packageName}/edits/{editID}/bundles?deviceTierConfigId="{deviceTierConfigId}

AAB'yi istediğiniz kanala atayın (test için dahili test kanalını kullanmanız önerilir. Ancak farklı kanallar hakkında daha fazla bilgiyi buradan edinebilirsiniz). Burada sürüm notları olmadan basit bir sunum gerçekleştiriyoruz. Ancak aşamalı sunumların, taslak sürümlerin ve sürüm notlarının nasıl hazırlanacağı hakkında daha fazla bilgi edinmek için bu sayfayı okuyabilirsiniz. Publisher API'yi ilk kez kullanıyorsanız bunu taslak sürüm olarak oluşturmanızı ve her şeyin doğru yapılandırıldığından emin olmak için sürümü Google Play Console'da tamamlamanızı öneririz.

curl -H "$(oauth2l header --json $HOME/{apiKey} androidpublisher)" -XPUT -H "Content-Type: application/json" -d "{ releases: [{status: '{status}', versionCodes: ['{versionCode}'] }]}" https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/edits/{editID}/tracks/{track}

Değişiklikleri uygulayın (Dikkatli bir şekilde devam edin; bu işlem, Play'de tüm değişikliklerin Play'de yayınlanmasına neden olur.)

curl -H "$(oauth2l header --json $HOME/{apiKey} androidpublisher)" -XPOST https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/edits/{editID}:commit