Nhắm mục tiêu theo thiết bị (thử nghiệm)

Tính năng nhắm mục tiêu theo thiết bị giúp bạn kiểm soát chi tiết hơn về những phần của gói ứng dụng được phân phối đến các thiết bị cụ thể. Ví dụ: bạn có thể đảm bảo rằng một thành phần lớn chỉ được phân phối cho các thiết bị có RAM cao hoặc bạn có thể phân phối nhiều phiên bản của một thành phần cho nhiều thiết bị.

Bạn có thể nhắm đến các thuộc tính thiết bị như:

  • Mẫu thiết bị
  • RAM thiết bị
  • Tính năng của hệ thống
  • Hệ thống trên chip (dành cho các thiết bị có cấp độ API tối thiểu là 31)

Tổng quan về các bước bắt buộc

Bạn cần thực hiện các bước sau để bật tính năng nhắm mục tiêu theo thiết bị:

  1. Xác định nhóm thiết bị trong tệp XML.
  2. Chỉ định phần nào của gói sẽ thuộc nhóm thiết bị nào.
  3. [Không bắt buộc] Kiểm thử cấu hình cục bộ.
  4. Tải gói (chứa tệp XML) lên Google Play.

Kiểm tra phiên bản Trình bổ trợ Android cho Gradle

Để sử dụng tính năng nhắm mục tiêu theo thiết bị, hãy đảm bảo rằng phiên bản Trình bổ trợ Android cho Gradle (AGP) của bạn là tối thiểu 8.10.0-alpha01. Tính năng này được đóng gói với Android Studio Meerkat 2 trở lên.

Bật tính năng nhắm mục tiêu theo thiết bị trong Trình bổ trợ Android cho Gradle

Bạn phải bật tính năng nhắm mục tiêu theo thiết bị một cách rõ ràng trong tệp gradle.properties:

android.experimental.enableDeviceTargetingConfigApi=true

Tạo tệp XML cấu hình nhắm mục tiêu theo thiết bị

Tệp cấu hình nhắm mục tiêu theo thiết bị là tệp XML mà bạn dùng để xác định các nhóm thiết bị tuỳ chỉnh. Ví dụ: bạn có thể xác định một nhóm thiết bị có tên là high_ram chứa tất cả thiết bị có RAM tối thiểu là 8 GB:

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

Nhóm thiết bị bao gồm tối đa 5 bộ chọn thiết bị. Một thiết bị được đưa vào nhóm thiết bị nếu thiết bị đó đáp ứng bất kỳ bộ chọn thiết bị nào.

Một bộ chọn thiết bị có thể có một hoặc nhiều thuộc tính thiết bị. Một thiết bị sẽ được chọn nếu thiết bị đó khớp với tất cả các thuộc tính thiết bị của bộ chọn.

Các thuộc tính thiết bị có sẵn

  • device_ram: Yêu cầu về RAM của thiết bị
    • min_bytes (bao gồm): Dung lượng RAM bắt buộc tối thiểu (tính bằng byte)
    • max_bytes (không bao gồm): Dung lượng RAM bắt buộc tối đa (tính bằng byte)
  • included_device_ids: Các kiểu thiết bị cần đưa vào bộ chọn này (tối đa 10000 device_ids cho mỗi nhóm). Thuộc tính này được đáp ứng nếu thiết bị khớp với bất kỳ device_id nào trong danh sách.
    • build_brand: Nhà sản xuất thiết bị
    • build_device: Mã kiểu thiết bị
  • excluded_device_ids: Các mẫu thiết bị cần loại trừ trong bộ chọn này (tối đa 10000 device_ids cho mỗi nhóm). Thuộc tính này được đáp ứng nếu thiết bị không khớp với mã thiết bị nào trong danh sách.
    • build_brand: Nhà sản xuất thiết bị
    • build_device: Mã kiểu thiết bị
  • required_system_features: Các tính năng mà thiết bị cần phải có để có mặt trong bộ chọn này (tối đa 100 tính năng cho mỗi nhóm). Thiết bị cần có tất cả các tính năng hệ thống trong danh sách này để đáp ứng thuộc tính này.

    Tài liệu tham khảo về tính năng của hệ thống

    • name: Một tính năng của hệ thống
  • forbidden_system_features: Các tính năng mà bộ chọn này không được đưa vào thiết bị (tối đa 100 tính năng cho mỗi nhóm). Nếu có bất kỳ tính năng hệ thống nào trong danh sách này, thì thiết bị sẽ không đáp ứng thuộc tính này.

    Tài liệu tham khảo về tính năng của hệ thống

    • name: Một tính năng của hệ thống
  • system-on-chip: Hệ thống trên chip sẽ được đưa vào bộ chọn này. Thiết bị cần có bất kỳ khối nào trong danh sách này để đáp ứng thuộc tính này. Bạn chỉ có thể nhắm đến hệ thống trên chip trên các thiết bị có cấp độ API tối thiểu là 31.

Việc đưa nhiều thuộc tính vào một bộ chọn sẽ tạo ra một hàm logic AND, ví dụ:

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

sẽ tạo điều kiện cho mọi thiết bị có RAM > 7 GB VÀ là Pixel 4, cũng được viết như sau:

Nếu bạn muốn có điều kiện OR, hãy tạo các bộ chọn riêng biệt trong một nhóm thiết bị, ví dụ:

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

sẽ tạo điều kiện cho mọi thiết bị có RAM > 7 GB HOẶC là Pixel 4, cũng được viết như sau:

Dưới đây là ví dụ cho thấy tất cả thuộc tính thiết bị có thể có:

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

Mã nhà sản xuất thiết bị và mã kiểu thiết bị chính thức

Bạn có thể tìm định dạng đúng cho mã nhà sản xuất và mã kiểu thiết bị bằng cách sử dụng Danh mục thiết bị trên Google Play Console, bằng một trong hai cách sau:

  • Kiểm tra từng thiết bị bằng Danh mục thiết bị, đồng thời tìm nhà sản xuất và mã kiểu thiết bị ở những vị trí như trong ví dụ dưới đây (Đối với Google Pixel 4a, nhà sản xuất là "Google" và mã kiểu thiết bị là "sunfish"):

    trang pixel 4a trong danh mục thiết bị

    trang pixel 4a trong danh mục thiết bị

  • Tải tệp CSV (chứa các thiết bị được hỗ trợ) xuống, sau đó nhập giá trị Nhà sản xuất vào trường build_brand và nhập giá trị Mã kiểu thiết bị vào trường build_device.

Đưa tệp cấu hình nhắm mục tiêu theo thiết bị vào gói ứng dụng

Thêm nội dung sau vào tệp build.gradle của mô-đun chính:

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 là đường dẫn của tệp cấu hình tương ứng với mô-đun chính. Điều này đảm bảo rằng tệp cấu hình của bạn được đóng gói cùng với gói ứng dụng.

Mệnh đề deviceGroup đảm bảo rằng các tệp APK được tạo từ gói của bạn được phân tách theo nhóm thiết bị.

Nhắm mục tiêu theo thiết bị cho Play Feature Delivery

Để sử dụng tính năng nhắm mục tiêu theo thiết bị bằng Play Feature Delivery, hãy xem tài liệu về việc phân phối có điều kiện.