هدف‌یابی دستگاه (بتا)

هدف‌یابی دستگاه به شما امکان می‌دهد کنترل دقیق‌تری بر اینکه کدام بخش‌های دسته برنامه‌تان به دستگاه‌های خاصی ارائه شود داشته باشید. برای مثال، می‌توانید مطمئن شوید که یک دارایی بزرگ فقط به دستگاه‌هایی با RAM بالا ارسال می‌شود، یا می‌توانید نسخه‌های مختلفی از یک دارایی را به دستگاه‌های مختلف ارسال کنید.

می‌توانید ویژگی‌های دستگاه را هدف‌یابی کنید، ازجمله:

  • مدل دستگاه
  • حافظه دسترسی تصادفی دستگاه
  • ویژگی‌های سیستم
  • SoC (برای دستگاه‌هایی با سطح میانای برنامه‌سازی کاربردی حداقل ۳۱)

نمای کلی مراحل لازم

مراحل زیر برای فعال کردن هدف‌یابی دستگاه لازم است:

  1. گروه‌های دستگاهتان را در فایل پیکربندی هدف‌یابی دستگاه تعریف کنید.
  2. مشخص کنید کدام بخش‌های دسته‌تان باید به کدام گروه‌های دستگاه برود.
  3. اختیاری: پیکربندی‌تان را به‌صورت محلی آزمایش کنید.
  4. دسته (حاوی فایل پیکربندی) را در Google Play بارگذاری کنید.

افزایه Android Gradle درمقابل افزایه Play Unity

مراحل دقیق موردنیاز بسته به اینکه برنامه‌تان را با «افزونه Android Gradle» یا «افزونه Play Unity» می‌سازید متفاوت است. قبل‌از ادامه دادن، تنظیمات ساخت را انتخاب کنید:

بررسی نسخه افزایه Android Gradle

برای استفاده از هدف‌یابی دستگاه، مطمئن شوید که نسخه «افزایه Android Gradle» (AGP) شما حداقل 8.10.0-alpha01 باشد. این ابزار با «استودیو Android» نسخه Meerkat 2 و بالاتر بسته‌بندی شده است.

فعال کردن هدف‌یابی دستگاه در «افزایه Android Gradle»

هدف‌یابی دستگاه باید به‌طور صریح در فایل gradle.properties شما فعال شود:

android.experimental.enableDeviceTargetingConfigApi=true

ایجاد فایل XML پیکربندی هدف‌یابی دستگاه

فایل پیکربندی هدف‌یابی دستگاه یک فایل XML است که در آن گروه‌های دستگاه سفارشی خود را تعریف می‌کنید. برای مثال، می‌توانید گروه دستگاهی به‌نام high_ram تعریف کنید که شامل همه دستگاه‌های دارای حداقل ۸ گیگابایت حافظه دسترسی تصادفی باشد:

<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>

گروه دستگاه از حداکثر ۵ انتخاب‌گر دستگاه تشکیل شده است. اگر دستگاهی با هرکدام از انتخاب‌کننده‌های دستگاه در گروه دستگاه مطابقت داشته باشد، در آن گروه دستگاه قرار می‌گیرد.

انتخاب‌گر دستگاه می‌تواند یک یا چند ویژگی دستگاه داشته باشد. اگر دستگاهی با همه ویژگی‌های دستگاه انتخاب‌کننده مطابقت داشته باشد، انتخاب می‌شود.

ویژگی‌های دردسترس دستگاه

  • device_ram: الزامات حافظه دسترسی تصادفی دستگاه
    • min_bytes (شامل): حداقل RAM موردنیاز (به بایت)
    • max_bytes (انحصاری): حداکثر حافظه دسترسی تصادفی موردنیاز (به بایت)
  • included_device_ids: مدل‌های دستگاهی که باید در این انتخابگر گنجانده شوند (حداکثر ۱۰۰۰۰ شناسه دستگاه در هر گروه). اگر دستگاه با هرکدام از device_idهای موجود در فهرست مطابقت داشته باشد، این ویژگی برآورده می‌شود.
    • build_brand: سازنده دستگاه
    • build_device: کد مدل دستگاه
  • excluded_device_ids: مدل‌های دستگاهی که باید در این انتخابگر مستثنی شوند (حداکثر ۱۰۰۰۰ شناسه دستگاه در هر گروه). اگر دستگاه با هیچ‌کدام از device_idهای موجود در فهرست مطابقت نداشته باشد، این ویژگی برآورده می‌شود.
    • build_brand: سازنده دستگاه
    • build_device: کد مدل دستگاه
  • required_system_features: ویژگی‌هایی که دستگاه باید داشته باشد تا در این انتخابگر گنجانده شود (حداکثر ۱۰۰ ویژگی برای هر گروه). دستگاه باید همه ویژگی‌های سیستم را در این فهرست داشته باشد تا این ویژگی را برآورده کند.

    مرجع ویژگی سیستم

    • نام: ویژگی سیستم
  • forbidden_system_features: ویژگی‌هایی که دستگاه نباید داشته باشد تا توسط این انتخابگر اضافه شود (حداکثر ۱۰۰ ویژگی برای هر گروه). اگر دستگاهی هریک از ویژگی‌های سیستم را در این فهرست داشته باشد، این ویژگی را برآورده نمی‌کند.

    مرجع ویژگی سیستم

    • نام: ویژگی سیستم
  • system-on-chip: سیستم روی تراشه‌هایی که باید در این انتخابگر گنجانده شوند. دستگاه باید یکی از تراشه‌های این فهرست را داشته باشد تا این ویژگی را برآورده کند. سیستم روی تراشه را فقط می‌توان در دستگاه‌های دارای سطح میانای برنامه‌سازی کاربردی حداقل ۳۱ هدف‌یابی کرد.

گنجاندن چند ویژگی در یک گزینشگر، یک «و» منطقی ایجاد می‌کند، برای مثال:

  <config:device-selector ram-min-bytes="7000000000">
      <config:included-device-id brand="google" device="flame"/>
  </config:device-selector>

شرط را برای همه دستگاه‌های دارای بیش‌از ۷ گیگابایت حافظه دسترسی تصادفی و Pixel 4 ایجاد می‌کند، که به‌صورت زیر نیز نوشته می‌شود:

اگر شرط «یا» می‌خواهید، انتخابگرهای جداگانه‌ای در یک گروه دستگاه ایجاد کنید، برای مثال:

  <config:device-selector ram-min-bytes="7000000000"/>
  <config:device-selector>
        <config:included-device-id brand="google" device="flame"/>
  </config:device-selector>

شرط را برای همه دستگاه‌های دارای بیش‌از ۷ گیگابایت حافظه دسترسی تصادفی یا Pixel 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» است):

    صفحه pixel 4a در فهرست دستگاه‌ها

    صفحه pixel 4a در فهرست دستگاه‌ها

  • بارگیری فایل 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»، سند مربوط به تحویل مشروط را ببینید.

هدف‌گیری دستگاه برای «ارائه دارایی‌های Play»

برای استفاده از هدف‌یابی دستگاه با «ارائه دارایی‌های Play»، اسناد مربوط به بسته‌های دارایی را ببینید.

هدف‌گیری دستگاه برای ارائه مدل هوشواره‌ای درون‌دستگاهی

برای استفاده از هدف‌یابی دستگاه با Play ویژه هوش مصنوعی درون‌دستگاهی، اسناد مربوط به بسته‌های هوش مصنوعی را ببینید.

گزارش اشکال

هرگونه اشکال را در Issue Tracker عمومی گزارش کنید.