Cihaz hedefleme, uygulama paketinizin hangi bölümlerinin belirli cihazlara dağıtılacağı üzerinde daha ayrıntılı kontrol sahibi olmanızı sağlar. Örneğin, büyük bir öğenin yalnızca yüksek RAM'e sahip cihazlara yayınlanmasını sağlayabilir veya bir öğenin farklı sürümlerini farklı cihazlara yayınlayabilirsiniz.
Aşağıdakiler gibi cihaz özelliklerini hedefleyebilirsiniz:
- Cihaz modeli
- Cihaz RAM'i
- Sistem özellikleri
- Çip üzerinde sistem (API düzeyi en az 31 olan cihazlar için)
Gerekli adımlara genel bakış
Cihaz hedeflemeyi etkinleştirmek için aşağıdaki adımlar gereklidir:
- Cihaz gruplarınızı bir XML dosyasında tanımlayın.
- Paketinizin hangi bölümlerinin hangi cihaz gruplarına gönderileceğini belirtin.
- [İsteğe bağlı] Yapılandırmanızı yerel olarak test edin.
- Paketinizi (XML dosyasını içeren) Google Play'e yükleyin.
Android Gradle eklentisi sürümünü kontrol etme
Cihaz hedeflemeyi kullanmak için Android Gradle eklentinizin (AGP) en az 8.10.0-alpha01 sürümüne sahip olduğundan emin olun. Bu paket, Android Studio Meerkat 2 ve sonraki sürümlerde bulunur.
Android Gradle eklentisinde cihaz hedeflemeyi etkinleştirme
Cihaz hedefleme, gradle.properties
dosyanızda açıkça etkinleştirilmiş olmalıdır:
android.experimental.enableDeviceTargetingConfigApi=true
Cihaz hedefleme yapılandırması XML dosyası oluşturma
Cihaz hedefleme yapılandırma dosyası, özel cihaz gruplarınızı tanımladığınız bir XML dosyasıdır. Örneğin, en az 8 GB RAM'e sahip tüm cihazları içeren high_ram
adlı bir cihaz grubu tanımlayabilirsiniz:
<config:device-targeting-config
xmlns:config="http://schemas.android.com/apk/config">
<config:device-group name="high_ram">
<config:device-selector ram-min-bytes="8000000000"/>
</config:device-group>
</config:device-targeting-config>
Cihaz grubu, en fazla 5 cihaz seçiciden oluşur. Bir cihaz, cihaz seçicilerinden herhangi birini karşılıyorsa cihaz grubuna dahil edilir.
Cihaz seçici bir veya daha fazla cihaz özelliğine sahip olabilir. Bir cihaz, seçicinin tüm cihaz özellikleriyle eşleşirse seçilir.
Kullanılabilir cihaz özellikleri
- device_ram: Cihazın RAM gereksinimleri
- min_bytes (dahildir): Gerekli minimum RAM (bayt cinsinden)
- max_bytes (özel): Gerekli maksimum RAM (bayt cinsinden)
- included_device_ids: Bu seçiciye dahil edilecek cihaz modelleri(grup başına en fazla 10.000 device_id). Cihaz, listedeki bir device_id ile eşleşirse bu özellik karşılanır.
- build_brand: Cihaz üreticisi
- build_device: Cihaz modeli kodu
- excluded_device_ids: Bu seçicide hariç tutulacak cihaz modelleri(grup başına en fazla 10.000 device_id). Cihaz, listedeki hiçbir device_id ile eşleşmezse bu özellik karşılanır.
- build_brand: Cihaz üreticisi
- build_device: Cihaz modeli kodu
required_system_features: Bu seçici tarafından dahil edilmesi gereken özellikler (grup başına en fazla 100 özellik). Bu özelliği karşılamak için cihazın bu listedeki tüm sistem özelliklerine sahip olması gerekir.
Sistem özellik referansı
- ad: Sistem özelliği
forbidden_system_features: Bu seçici tarafından cihaza dahil edilmesi gerekmeyen özellikler (grup başına en fazla 100 özellik). Bu listedeki sistem özelliklerinden herhangi birine sahip olan cihazlar bu özelliği karşılamıyordur.
Sistem özellik referansı
- ad: Sistem özelliği
system-on-chip: Bu seçiciye eklenecek çip üzerinde sistemler. Bu özelliği karşılamak için cihazın bu listedeki bir çipe sahip olması gerekir. Sistem çipleri yalnızca API düzeyi en az 31 olan cihazlarda hedeflenmelidir.
- manufacturer: Çip üzerinde sistem üreticisi
- model: Çip üzerinde sistem modeli
Tek bir seçiciye birden fazla mülk eklemek mantıksal bir VE koşulu oluşturur. Örneğin:
<config:device-selector ram-min-bytes="7000000000">
<config:included-device-id brand="google" device="flame"/>
</config:device-selector>
7 GB'tan fazla RAM'e sahip VE Pixel 4 olan tüm cihazlar için koşulu oluşturur. Bu koşul aşağıdaki şekilde de yazılabilir:
VEYA koşulu istiyorsanız tek bir cihaz grubunda ayrı seçiciler oluşturun. Örneğin:
<config:device-selector ram-min-bytes="7000000000"/>
<config:device-selector>
<config:included-device-id brand="google" device="flame"/>
</config:device-selector>
koşulunu oluşturur. Bu koşul, 7 GB'tan fazla RAM'e sahip tüm cihazlar VEYA Pixel 4 için geçerlidir. Bu koşul aşağıdaki şekilde de yazılabilir:
Olası tüm cihaz özelliklerini gösteren bir örnek aşağıda verilmiştir:
<config:device-targeting-config
xmlns:config="http://schemas.android.com/apk/config">
<config:device-group name="myCustomGroup1">
<config:device-selector ram-min-bytes="8000000000">
<config:included-device-id brand="google" device="redfin"/>
<config:included-device-id brand="google" device="sailfish"/>
<config:included-device-id brand="good-brand"/>
<config:excluded-device-id brand="google" device="caiman"/>
<config:system-on-chip manufacturer="Sinclair" model="ZX80"/>
<config:system-on-chip manufacturer="Commodore" model="C64"/>
</config:device-selector>
<config:device-selector ram-min-bytes="16000000000"/>
</config:device-group>
<config:device-group name="myCustomGroup2">
<config:device-selector ram-min-bytes="4000000000" ram-max-bytes="8000000000">
<config:required-system-feature name="android.hardware.bluetooth"/>
<config:required-system-feature name="android.hardware.location"/>
<config:forbidden-system-feature name="android.hardware.camera"/>
<config:forbidden-system-feature name="mindcontrol.laser"/>
</config:device-selector>
</config:device-group>
</config:device-targeting-config>
Resmî cihaz üreticisi ve cihaz modeli kodları
Google Play Console'daki cihaz kataloğunu kullanarak cihaz üreticisi ve model kodu için doğru biçimlendirmeyi aşağıdaki yöntemlerden birini kullanarak bulabilirsiniz:
Cihaz Kataloğu'nu kullanarak cihazları tek tek inceleyin ve aşağıdaki örnekte gösterilen konumlarda üretici ile model kodunu bulun (Google Pixel 4a için üretici "Google", model kodu ise "sunfish"tir):
Desteklenen cihazların CSV dosyasını indirip build_brand ve build_device alanları için sırasıyla Üretici ve Model Kodu'nu kullanın.
Cihaz hedefleme yapılandırma dosyanızı uygulama paketinize ekleme
Ana modülünüzün build.gradle
dosyasına aşağıdakileri ekleyin:
android {
...
bundle {
deviceTargetingConfig = file('device_targeting_config.xml')
deviceGroup {
enableSplit = true // split bundle by #group
defaultGroup = "other" // group used for standalone APKs
}
}
...
}
device_targeting_config.xml
, yapılandırma dosyanızın ana modüle göre yoludur. Bu işlem, yapılandırma dosyanızın uygulama paketinizle birlikte paketlenmesini sağlar.
deviceGroup
yan tümcesi, paketinizden oluşturulan APK'ların cihaz gruplarına göre bölünmesini sağlar.
Play Feature Delivery için cihaz hedefleme
Play Feature Delivery ile cihaz hedeflemeyi kullanmak için koşullu yayınlama dokümanlarını inceleyin.