هدفگیری دستگاه به شما کنترل دقیقتری بر روی بخشهایی از بسته برنامه شما به دستگاههای خاص تحویل میدهد. برای مثال، میتوانید اطمینان حاصل کنید که یک دارایی بزرگ فقط به دستگاههایی با RAM بالا تحویل داده میشود، یا میتوانید نسخههای مختلف یک دارایی را به دستگاههای مختلف تحویل دهید.
شما می توانید ویژگی های دستگاه مانند:
- مدل دستگاه
- رم دستگاه
- ویژگی های سیستم
- سیستم روی تراشه (برای دستگاههایی با سطح API حداقل 31)
مروری بر مراحل مورد نیاز
مراحل زیر برای فعال کردن هدف گذاری دستگاه مورد نیاز است:
- گروه های دستگاه خود را در یک فایل XML تعریف کنید.
- مشخص کنید کدام بخش از بسته شما باید به کدام گروه دستگاه برود.
- [اختیاری] پیکربندی خود را به صورت محلی آزمایش کنید.
- بسته نرم افزاری خود (حاوی فایل XML) را در Google Play آپلود کنید.
نسخه پلاگین Android Gradle را بررسی کنید
برای استفاده از هدف گیری دستگاه، مطمئن شوید که نسخه پلاگین Android Gradle (AGP) شما حداقل 8.10.0-alpha01 باشد. این با Android Studio Meerkat 2 و بالاتر بسته بندی شده است.
هدف گذاری دستگاه را در افزونه Gradle Android فعال کنید
هدف گذاری دستگاه باید به صراحت در فایل gradle.properties
شما فعال باشد:
android.experimental.enableDeviceTargetingConfigApi=true
یک فایل XML پیکربندی هدفمند دستگاه ایجاد کنید
فایل پیکربندی هدف گیری دستگاه یک فایل XML است که در آن گروه های دستگاه سفارشی خود را تعریف می کنید. به عنوان مثال، می توانید یک گروه دستگاه به نام high_ram
تعریف کنید که شامل تمام دستگاه هایی با حداقل 8 گیگابایت رم باشد:
<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>
یک گروه دستگاه از حداکثر 5 انتخابگر دستگاه تشکیل شده است. یک دستگاه در صورتی در گروه دستگاه گنجانده می شود که هر یک از انتخابگرهای دستگاه خود را برآورده کند.
انتخابگر دستگاه می تواند یک یا چند ویژگی دستگاه داشته باشد. دستگاهی انتخاب می شود که با تمام ویژگی های دستگاه انتخابگر مطابقت داشته باشد.
ویژگی های دستگاه موجود
- device_ram : مورد نیاز رم دستگاه
- min_bytes ( شامل) : حداقل RAM مورد نیاز (بر حسب بایت)
- max_bytes ( انحصاری) : حداکثر RAM مورد نیاز (بر حسب بایت)
- include_device_ids : مدلهای دستگاهی که باید در این انتخابگر گنجانده شوند (حداکثر 10000 دستگاه_ids در هر گروه) . اگر دستگاه با هر ID_ID موجود در لیست مطابقت داشته باشد، این ویژگی برآورده می شود.
- build_brand : سازنده دستگاه
- build_device : کد مدل دستگاه
- excluded_device_ids : مدلهای دستگاهی که در این انتخابگر حذف میشوند (حداکثر 10000 دستگاه_ids در هر گروه) . اگر دستگاه با هیچ device_id در لیست مطابقت نداشته باشد، این ویژگی برآورده می شود.
- build_brand : سازنده دستگاه
- build_device : کد مدل دستگاه
require_system_features : ویژگی هایی که یک دستگاه باید توسط این انتخابگر گنجانده شود (حداکثر 100 ویژگی در هر گروه) . یک دستگاه باید تمام ویژگی های سیستم را در این لیست داشته باشد تا این ویژگی را برآورده کند.
مرجع ویژگی های سیستم
- نام : یک ویژگی سیستم
forbidden_system_features : ویژگی هایی که یک دستگاه نباید توسط این انتخابگر گنجانده شود (حداکثر 100 ویژگی در هر گروه) . اگر دستگاهی دارای یکی از ویژگی های سیستم در این لیست باشد، این ویژگی را برآورده نمی کند.
مرجع ویژگی های سیستم
- نام : یک ویژگی سیستم
system-on-chip : سیستم روی تراشههایی که باید در این انتخابگر گنجانده شود. یک دستگاه باید هر چیپ را در این لیست داشته باشد تا این ویژگی را برآورده کند. سیستم روی تراشه ها را فقط می توان روی دستگاه هایی با سطح API حداقل 31 هدف قرار داد.
- سازنده : سیستم روی تراشه سازنده
- مدل : مدل سیستم روی تراشه
گنجاندن چندین ویژگی در یک انتخابگر، یک AND منطقی ایجاد می کند، به عنوان مثال:
<config:device-selector ram-min-bytes="7000000000">
<config:included-device-id brand="google" device="flame"/>
</config:device-selector>
این شرایط را برای همه دستگاههای دارای رم > 7 گیگابایت ایجاد میکند و پیکسل 4 است، همچنین به صورت زیر نوشته شده است:
اگر یک شرط OR می خواهید، انتخابگرهای جداگانه در یک گروه دستگاه ایجاد کنید، به عنوان مثال:
<config:device-selector ram-min-bytes="7000000000"/>
<config:device-selector>
<config:included-device-id brand="google" device="flame"/>
</config:device-selector>
این شرایط را برای همه دستگاههای دارای رم > 7 گیگابایت یا پیکسل 4 ایجاد میکند، همچنین به صورت زیر نوشته شده است:
در اینجا یک مثال نشان می دهد که تمام ویژگی های ممکن دستگاه را نشان می دهد:
<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>
کدهای رسمی سازنده دستگاه و مدل دستگاه
میتوانید قالببندی صحیح سازنده دستگاه و کد مدل را با استفاده از کاتالوگ دستگاه در کنسول Google Play، با یکی از موارد زیر پیدا کنید:
بازرسی دستگاههای جداگانه با استفاده از کاتالوگ دستگاه، و یافتن کد سازنده و مدل در مکانهایی که در مثال زیر نشان داده شده است (برای Google Pixel 4a، سازنده «Google» و کد مدل «sunfish» است):
دانلود CSV دستگاههای پشتیبانیشده و استفاده از کد سازنده و مدل کد به ترتیب برای فیلدهای build_brand و build_device .
فایل پیکربندی هدفمندی دستگاه خود را در بسته برنامه خود قرار دهید
موارد زیر را به فایل build.gradle
ماژول اصلی خود اضافه کنید:
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
مسیر فایل پیکربندی شما نسبت به ماژول اصلی است. این تضمین می کند که فایل پیکربندی شما با بسته نرم افزاری شما بسته بندی شده است.
بند deviceGroup
تضمین میکند که فایلهای APK تولید شده از بسته شما بر اساس گروههای دستگاه تقسیم میشوند.
هدفگیری دستگاه برای تحویل ویژگی Play
برای استفاده از هدفگیری دستگاه با «تحویل ویژگی Play»، به مستندات تحویل مشروط مراجعه کنید.