Nhắm mục tiêu theo cấp thiết bị

Nhắm mục tiêu theo cấp thiết bị (DTT) là gì?

Tính năng Nhắm mục tiêu theo cấp thiết bị cho phép bạn phân phối các phiên bản khác nhau (ví dụ: độ phân giải, v.v.) của cùng một tài sản cho các thiết bị dựa trên phần cứng của chúng. Ví dụ: bạn có thể chọn phân phối tài sản có độ phân giải thấp cho các thiết bị cấu hình thấp để cải thiện hiệu suất và phân phối tài sản có độ phân giải cao đến các thiết bị cao cấp hơn để cải thiện chất lượng đồ hoạ – mà không làm tăng kích thước tổng thể của trò chơi bằng cách chỉ phân phối các tài sản cần thiết đến thiết bị của người dùng. Phương pháp này dựa trên khái niệm về gói tài sản trong Play Asset Delivery. Như sẽ thấy dưới đây, bạn có thể xác định tiêu chí theo cấp (hiện dựa trên RAM, các mẫu thiết bị cụ thể hoặc các tính năng hệ thống có sẵn) và có thể sử dụng tối đa 5 cấp.

Giống như Play Asset Delivery, tính năng Nhắm mục tiêu theo cấp thiết bị hỗ trợ API 16 (Jelly Bean 4.1) trở lên. Tuy nhiên, trên các thiết bị API 19 (KitKat 4.4.X) trở xuống, theo mặc định, cấp được phân phối tài sản bất kể bản dựng thiết bị.

Hành trình của nhà phát triển

Nhìn tổng quat, bạn cần làm theo những bước sau để tích hợp DTT vào trò chơi hiện có của mình:

  1. Tích hợp tính năng Nhắm mục tiêu theo cấp thiết bị (và cả Play Asset Delivery) trong trò chơi
    • Tích hợp Play Asset Delivery vào trò chơi (nếu bạn chưa làm vậy)
    • Chia tài sản thành các gói tài sản
    • Tập hợp mã và tài sản lại để tạo cấu phần phần mềm Android App Bundle (AAB) cuối cùng mà bạn sẽ tải lên Play.
  2. Tạo cấu hình Nhắm mục tiêu theo cấp thiết bị để Play biết cách phân phối tài sản của bạn tới thiết bị của người dùng.
    • Thiết lập API Nhà phát triển Google Play (nếu chưa hoàn tất) mà bạn sẽ sử dụng để gửi các cấu hình DTT tới Play.
    • Làm theo các bước để tạo cấu hình DTT.
  3. Tải AAB lên Play rồi thử nghiệm để đảm bảo mọi thứ được định cấu hình một cách chính xác

Bạn sẽ nhận thấy trong phần đầu tiên, có các nhánh phát triển trong hướng dẫn tuỳ thuộc vào hệ thống xây dựng mà bạn sử dụng. Hệ thống mà bạn chọn phụ thuộc vào công cụ mà bạn đang dùng và thông tin thiết lập hiện tại của bạn.

  • Gradle (nên dùng cho các trò chơi gốc và phát triển bằng Java): Đối với các trò chơi được tạo bằng Gradle, hãy làm theo các bước này để định cấu hình hệ thống xây dựng nhằm xây dựng AAB của bạn với sự hỗ trợ của DTT.
    • Nếu xuất trò chơi sang Gradle rồi hoàn thành bản dựng, bạn nên làm theo những hướng dẫn sau (ví dụ: Trò chơi của Unity đã xuất sang Gradle))
  • Trình bổ trợ Unity: Chúng tôi sẽ cung cấp cho bạn các gói Unity để nhập dự án Unity, nhờ đó, bạn có thể định cấu hình và tạo AAB với sự hỗ trợ của DTT.

Thiết lập tính năng Nhắm mục tiêu theo cấp thiết bị trong ứng dụng

Tích hợp Play Asset Delivery vào trò chơi (nếu chưa hoàn tất)

Play Asset Delivery (PAD) cho phép bạn linh động phân phối nội dung trong trò chơi tại thời điểm cài đặt hoặc thời gian chạy. Bạn có thể đọc hướng dẫn tổng quan về Play Asset Delivery tại đây. Với tính năng Nhắm mục tiêu theo cấp thiết bị, Play sẽ phân phối các gói tài sản dựa trên các cấu hình theo cấp thiết bị mà bạn quy định cho các cấp thiết bị. Bạn nên làm theo hướng dẫn dưới đây và tích hợp PAD vào trò chơi (tức là tạo gói tài sản, triển khai truy xuất trong trò chơi), sau đó sửa đổi mã dự án để bật tính năng Nhắm mục tiêu theo cấp thiết bị.

Gradle

Đối với các trò chơi được tạo bằng Gradle, hãy sử dụng các hướng dẫn sau để tạo gói tài sản bằng Gradle, sau đó làm theo hướng dẫn để tích hợp hoạt động truy xuất gói tài sản trong trò chơi của bạn:

Unity

Đối với trò chơi được dựng trong Unity, bạn sẽ định cấu hình các gói tài sản của mình bằng cách sử dụng lớp AssetPackConfig, như đã nêu trong các hướng dẫn này.

Tạo thư mục cụ thể theo cấp thiết bị

Nếu sử dụng Gradle

Bây giờ, bạn sẽ chia tài sản của mình thành N cấp (tối đa 5 cấp) mà bạn sẽ xác định sau. Tạo các thư mục DTT bằng cách lấy các thư mục gói tài sản hiện có đã tạo ở bước vừa rồi, sau đó thêm hậu tố #tier_0, #tier_1, #tier_2, v.v vào thư mục phù hợp (như mô tả bên dưới). Khi sử dụng gói tài sản trong trò chơi, bạn không cần xác định thư mục bằng hậu tố (nói cách khác, hệ thống sẽ tự động gỡ bỏ hậu tố trong quy trình xây dựng).

Sau bước trước, bước này có thể hiển thị như sau:

...
.../level1/src/main/assets/character-textures#tier_2/
.../level1/src/main/assets/character-textures#tier_1/
.../level1/src/main/assets/character-textures#tier_0/
...

Khi truy cập vào các tệp trong thư mục đó, bạn có thể sử dụng cùng một đường dẫn mà không cần thêm hậu tố (trong ví dụ này, tôi sẽ dùng đường dẫn là level1/assets/character-textures/ mà không thêm bất kỳ hậu tố nào).

Nếu sử dụng Unity

Để thêm một gói tài sản sử dụng DTT, bạn có thể sử dụng các phương thức AssetPackConfig dưới đây:

/// Package the specified raw assets in the specified folders,
/// keyed by DeviceTier, in an AssetPack with the specified delivery mode.
public void AddAssetsFolders(
    string assetPackName,
    IDictionary<DeviceTier, string> deviceTierToAssetPackDirectoryPath,
    AssetPackDeliveryMode deliveryMode)

/// Package the specified AssetBundle files, which vary only by DeviceTier,
/// in an AssetPack with the specified delivery mode.
public void AddAssetBundles(
    IDictionary<DeviceTier, string> deviceTierToAssetBundleFilePath,
    AssetPackDeliveryMode deliveryMode)

Ví dụ: giả sử bạn có 3 AssetBundles cho nhân vật của mình ở nhiều mức độ chi tiết.

Để liên kết AssetBundles này với cấp thiết bị tương ứng, hãy sử dụng đoạn mã sau.

var assetPackConfig = new AssetPackConfig();
var tiers = new Dictionary<DeviceTier, string>
{
    {0, "Assets/LowPoly/Character"},
    {1, "Assets/Mid/Character"},
    {2, "Assets/Detailed/Character"}
};
assetPackConfig.AddAssetBundles(tiers, AssetPackDeliveryMode.OnDemand);

Xây dựng tệp Android App Bundle

Gradle

Trong tệp build.gradle của dự án, hãy định cấu hình các phần phụ thuộc để có các phiên bản bên dưới (hoặc cao hơn) cho trình bổ trợ Android cho Gradlebundletool:

buildscript {
  dependencies {
    classpath 'com.android.tools.build:gradle:4.2.0'
    classpath "com.android.tools.build:bundletool:1.7.1"
    ...
  }
  ...
}

Bạn cũng cần cập nhật Gradle lên phiên bản 6.7.1 trở lên. Bạn có thể cập nhật Gradle trong gradle/wrapper/gradle-wrapper.properties trong dự án của mình.

distributionUrl=https://services.gradle.org/distributions/gradle-6.7.1-all.zip

Cuối cùng, bạn cần sử dụng Thư viện Play Asset Delivery. Nếu bạn vẫn đang dùng Thư viện Play Core một khối (monolithic), hãy cập nhật lên phiên bản 1.8.3 trở lên. Bạn nên chuyển sang Thư viện Play Asset Delivery và cập nhật lên phiên bản mới nhất nếu có thể.

dependencies {
  implementation 'com.google.android.play:asset-delivery:2.0.1'
  ...
}

Trong tệp build.gradle của mô-đun ứng dụng chính, hãy bật tính năng phân tách DTT:

android {
  bundle {
    deviceTier {
      enableSplit true
    }
    ...
  }
  ...
}

Cuối cùng, bạn có thể xây dựng Android App Bundle (AAB).

Bundletool

Xây dựng gói bằng bundletooltrong khi ở bước tuỳ chỉnh AAB, hãy thêm đoạn mã sau vào tệp BundleConfig.pb.

{
  ...
  "optimizations": {
    "splitsConfig": {
      "splitDimension": [
      ...
      {
        "value": "DEVICE_TIER",
        "negate": false,
        "suffixStripping": {
          "enabled": true,
        }
      }],
    }
  }
}

Unity

Sau khi định cấu hình AssetPackConfig để bao gồm các gói DTT, bạn có thể truyền cấu hình đó vào một trong các phương thức bên dưới để tạo AAB:

// Configures the build system to use the newly created assetPackConfig when
// calling Google > Build and Run or Google > Build Android App
Bundle.AssetPackConfigSerializer.SaveConfig(assetPackConfig);
// Alternatively, use BundleTool.BuildBundle to build an App Bundle from script
BuildBundle(new buildPlayerOptions(), assetPackConfig)

Thử nghiệm cục bộ

Trước khi tiếp tục, bạn nên thử nghiệm cục bộ gói ứng dụng của mình để đảm bảo mọi thứ được thiết lập chính xác. Bạn có thể sử dụng bundletool (1.8.0 trở lên) để tạo và thử nghiệm cục bộ ứng dụng, chỉ định rõ cấp chính xác của thiết bị. Trước tiên, bạn sẽ sử dụng build-apks để tạo nhóm tệp .apks, sau đó triển khai ứng dụng trên một thiết bị đã kết nối bằng install-apks. Bạn cũng có thể chỉ định cấp mà bạn muốn cài đặt thông qua cờ device-tier. Bạn có thể tìm thêm thông tin về phương pháp kiểm thử cục bộ này tại đây (xin lưu ý rằng trang này chưa được cập nhật cho DTT nên thiếu cờ device-tier).

bundletool build-apks --bundle=/path/to/app.aab --output=/path/to/app.apks --local-testing
bundletool install-apks --apks=/path/to/app.apks --device-tier=1

Cách khác: Bạn cũng có thể sử dụng extract-apks để trích xuất nhóm tệp APK cho một thiết bị cụ thể. Tuy nhiên, việc sử dụng get-device-spec đồng thời với việc chỉ định bậc thiết bị cho thiết bị này sẽ không hoạt động cùng với cờ--local-testing, nghĩa là bạn sẽ không thử nghiệm được các gói tài sản fast-follow hoặc on-demand.

bundletool get-device-spec --output=/path/to/device-spec.json --device-tier=1
bundletool 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

Unity

Tuỳ chọn trình đơn Google -> Build and Run (Google -> Xây dựng và chạy) sẽ tạo và chạy trò chơi của bạn bằng cách bật cờ --local-testing. Tuy nhiên, tuỳ chọn này không cho phép bạn chỉ định cấp thiết bị được chuyển vào lệnh install-apks.

Nếu muốn chỉ định cấp thiết bị khác 0, bạn nên:

  1. Tạo AAB bằng cách sử dụng tuỳ chọn trình đơn Google -> Build Android App Bundle (Google -> Tạo Android App Bundle).
  2. Làm theo hướng dẫn trong phần trước để chạy bundletool, build-apksinstall-apks trên AAB đã tạo.

Tạo cấu hình theo cấp thiết bị thông qua API Nhà phát triển Google Play

Bắt đầu sử dụng API Nhà phát triển Google Play (nếu chưa hoàn tất)

Để định cấu hình Nhắm mục tiêu theo cấp thiết bị (ví dụ: Xác định các yêu cầu cho từng cấp), bạn cần sử dụng Android Publisher API (API nhà xuất bản Android) để tải cấu hình của mình lên Google Play. Bạn có thể đọc thêm về API này tại đường liên kết ở trên – bạn cần thực hiện một số bước để bắt đầu:

  1. Tạo (nếu cần) và liên kết dự án API với Google Play Console.
  2. Thiết lập một ứng dụng truy cập API.

Bạn có thể tìm thấy tài liệu tham khảo API tại đây – sau này, nếu chọn tải bản dựng của bạn lên thông qua API, bạn sẽ sử dụng phương thức Edits. Ngoài ra, bạn nên xem lại trang này trước khi sử dụng API.

Sử dụng Device Tier Configuration API

Bạn có thể sử dụng lệnh gọi API sau đây để tạo cấu hình theo cấp thiết bị:

Tạo cấu hình theo cấp thiết bị

Yêu cầu HTTP POST https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs
Tham số đường dẫn Không áp dụng
Nội dung yêu cầu Cấu hình theo cấp thiết bị
Nội dung phản hồi Cấu hình theo cấp thiết bị
Đối tượng cấu hình theo cấp thiết bị

Quá trình xác định cấp thiết bị bao gồm 2 bước:

  1. Xác định nhóm thiết bị.
  2. Xác định nhóm cấp thiết bị bằng cách chỉ định cấp cho nhóm thiết bị của bạn.

Nhóm thiết bị là một tập hợp các thiết bị khớp với bộ chọn mà bạn xác định trong cấu hình.

Bộ chọn có thể xác định các yêu cầu về RAM thiết bị và kiểu thiết bị.

Các nhóm được xác định bằng tên mà bạn chọn; nhóm được phép trùng lặp.

Tiếp theo, bạn có thể xác định nhóm cấp thiết bị bằng cách xếp hạng các nhóm: mỗi cấp thiết bị được xác định theo cấp và nhóm thiết bị.

Nếu một thiết bị khớp với nhiều cấp, thì thiết bị đó sẽ được phân phát nội dung cho cấp cao nhất khớp với thiết bị.

  {
    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
              }
            ]
          }
        ]
      }
    ],
    device_tier_set: {
      device_tiers: [
        {
          level: int,
          device_group_names: [string]
        }
      ]
    }
  }

Trường:

  • device_confid_id (số nguyên): Mã nhận dạng tương ứng với cấu hình theo cấp thiết bị này.
  • device_groups (đối tượng): Định nghĩa nhóm

    • name (chuỗi): Tên của nhóm thiết bị (chuỗi mã nhận dạng mà bạn xác định).
    • device_selectors (đối tượng): Các yêu cầu đối với thiết bị để thuộc về nhóm này.
    • device_ram (đối tượng): Yêu cầu về RAM của thiết bị
      • min_bytes (số nguyên, bao gồm): Dung lượng RAM bắt buộc tối thiểu (tính bằng byte)
      • max_bytes (số nguyên, loại trừ): Dung lượng RAM bắt buộc tối đa (tính bằng byte)
    • included_device_ids (đối tượng): Các kiểu thiết bị sẽ được đưa vào bộ chọn này (tối đa 10000 device_ids cho mỗi nhóm) Thiết bị cần nằm trong danh sách này để khớp với bộ chọn. Đây là điều kiện cần nhưng chưa đủ để khớp với bộ chọn đầy đủ (xem lưu ý ở trên về cách kết hợp các yêu cầu trong một bộ chọn)
      • build_brand (chuỗi): Nhà sản xuất thiết bị
      • build_device (chuỗi): Mã kiểu thiết bị
    • excluded_device_ids (đối tượng): Các kiể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) Một thiết bị trong danh sách này sẽ không khớp với bộ chọn ngay cả khi nó khớp với mọi yêu cầu khác trong bộ chọn này.
      • build_brand (chuỗi): Nhà sản xuất thiết bị
      • build_device (chuỗi): Mã kiểu thiết bị
    • required_system_features (đối tượng): 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 để khớp với bộ chọn. Đây là điều kiện cần nhưng chưa đủ để khớp với bộ chọn đầy đủ (xem lưu ý ở trên về cách kết hợp các yêu cầu trong một bộ chọn).

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

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

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

      • name (chuỗi): Một tính năng của hệ thống
  • device_tiers (đối tượng): Định nghĩa về cấp

    • level (int): Cấp của cấp
    • group_name (mảng chuỗi): Tên của các nhóm thiết bị thuộc cấp này

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.

Dưới đây là ví dụ về cấu hình với 3 cấp – cấp 2 sử dụng nhóm thiết bị high (cao) (bao gồm mọi thiết bị có RAM trên 7 GB và Pixel 4), cấp 1 sử dụng nhóm thiết bị medium (trung bình) (bao gồm mọi thiết bị có RAM từ 4 đến 7 GB) và cấp 0, được ngầm xác định là nhóm bao gồm tất cả thiết bị.

{
  device_groups: [
    {
      name: 'high',
      device_selectors: [
        {
          device_ram: {
            min_bytes: 7516192768
          },
        },
        {
          included_device_ids: [
            {
              build_brand: 'google',
              build_device: 'flame'
            }
          ],
        }
      ]
    },
    {
      name: 'medium',
      device_selectors: [
        {
          device_ram: {
            min_bytes: 4294967296,
            max_bytes: 7516192768
          },
        }
      ]
    }
  ],
  device_tier_set: {
    device_tiers: [
      {
        level: 1,
        device_group_names: [
          'medium'
        ]
      },
      {
        level: 2,
        device_group_names: [
          'high'
        ]
      }
    ]
  }
}

Bạn có thể làm theo hướng dẫn bên dưới để xác thực Cấu hình nhắm mục tiêu theo thiết bị trước khi tải lên Google Play.

Nhận cấu hình theo cấp thiết bị theo mã nhận dạng

Bạn có thể truy xuất cấu hình theo cấp thiết bị cụ thể theo mã nhận dạng bằng cách sử dụng lệnh gọi sau:

Yêu cầu HTTP GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs/{deviceTierConfigId}
Tham số đường dẫn Không áp dụng
Nội dung yêu cầu Không áp dụng
Nội dung phản hồi Cấu hình theo cấp thiết bị

Nhận danh sách Cấu hình theo cấp thiết bị

Bạn có thể nhận 10 cấu hình theo cấp thiết bị gần đây nhất cho lệnh gọi sau (hoặc chỉ định tối ưu một tập hợp 10 cấu hình bằng cách sử dụng tham số truy vấn page_token):

Yêu cầu HTTP GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs
Tham số đường dẫn Không áp dụng
Tham số truy vấn page_token (không bắt buộc) – Dùng để chỉ định một nhóm cụ thể gồm 10 DTC. Cách này hữu ích nếu bạn đã tạo hơn 10 DTC và muốn xem những DTC được tạo trước 10 DTC gần đây nhất.
Nội dung yêu cầu Không áp dụng
Nội dung phản hồi Danh sách các cấu hình theo cấp thiết bị

page_token

Xác thực Cấu hình nhắm mục tiêu theo thiết bị

bundletool bao gồm 2 lệnh giúp bạn xác thực rằng Cấu hình nhắm mục tiêu theo thiết bị hoạt động như dự kiến trước khi tải lên Play.

Với bundletool print-device-targeting-config, bạn có thể xác thực rằng tệp JSON có cú pháp chính xác và trực quan hoá các cấp cũng như nhóm thiết bị của bạn ở định dạng dễ đọc hơn.

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

Với bundletool evaluate-device-targeting-config, bạn có thể đánh giá những nhóm và cấp nào sẽ khớp với một thiết bị cụ thể. Bạn kết nối thiết bị mục tiêu với máy trạm và sử dụng cờ --connected-device; hoặc bạn biên dịch thủ công một tệp JSON chứa thuộc tính thiết bị và cung cấp tệp đó thông qua cờ --device-properties.

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

Tệp thuộc tính thiết bị phải là tệp JSON theo cấu trúc protobuf DeviceProperties. Ví dụ:

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

Tải Android App Bundle lên Google Play

Qua API

Bạn có thể sử dụng API Nhà phát triển Google Play để tải Android App Bundle lên Google Play và liên kết một cấu hình Nhắm mục tiêu theo cấp thiết bị cụ thể với bản dựng của bạn.

Bạn có thể xem phần tổng quan chung về các phương thức Edits tại đây, cùng với các ví dụ chi tiết hơn về cách phát hành lên nhiều kênh trong Google Play Console (đối với đường liên kết cuối cùng, bạn cần sử dụng API thân thiện với AAB thay vì API thân thiện với APK, được liệt kê trong trang). Để chỉ định cấu hình theo cấp thiết bị cho bản dựng, bạn sẽ thêm mã nhận dạng cấu hình vào tham số truy vấn deviceTierConfigId trong khi gọi phương thức edits.bundle.upload, như sau:

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

Qua Google Play Console

Bạn có thể làm theo hướng dẫn tại đây để tải Android App Bundle lên. Cấu hình DTC mới nhất sẽ áp dụng cho App Bundle của bạn.

Bạn có thể xác minh rằng gói của mình được xây dựng một cách chính xác bằng cách truy cập vào Trình khám phá gói ứng dụng (đã chọn đúng bản dựng) > Phân phối và nhấp vào từng gói tài sản. Cột này sẽ cho thấy bạn có N cấp đã tạo. Ví dụ dưới đây cho thấy tôi có 3 cấp – 0, 1 và 2 cho gói tài sản main_asset của tôi.

gói tài sản có 3 cấp

Xác minh cấp chính xác đang được phân phối

Hãy sử dụng phương thức sau đây để đảm bảo chỉ phân phối đúng cấp cho thiết bị

adb shell pm path {packageName}

Bạn sẽ thấy một số dòng mã như sau:

package:{...}/base.apk
package:{...}/split_config.en.apk
package:{...}/split_config.xxhdpi.apk
package:{...}/split_main_asset.apk
package:{...}/split_main_asset.config.tier_2.apk

Phụ trợ

Bắt đầu nhanh bằng Curl

Dưới đây là ví dụ (sử dụng curl công cụ dòng lệnh) của việc tạo cấu hình mới theo cấp thiết bị và sử dụng Edits API (API chỉnh sửa) để tạo bản chỉnh sửa mới, tải AAB mới lên (liên kết AAB này với một cấu hình theo cấp thiết bị cụ thể), thiết lập cấu hình theo dõi/phát hành và thực hiện chỉnh sửa. (từ đó sẽ công khai nội dung thay đổi). Hãy đảm bảo bạn có vị trí của:

Trước tiên, hãy tạo một cấu hình cấp thiết bị rồi ghi lại deviceTierConfigId mà bạn sẽ nhận được khi có lệnh gọi thành công.

curl -H "$(oauth2l header --json $HOME/{apiKey} androidpublisher)" -XPOST -H "Content-Type: application/json" -d "{ device_groups: [ { name: 'high', device_selectors: [ { device_ram: { min_bytes: 7516192768 }, }, { included_device_ids: [ { build_brand: 'google', build_device: 'flame' } ], } ] }, { name: 'medium', device_selectors: [ { device_ram: { min_bytes: 4294967296, max_bytes: 7516192768 }, } ] } ], device_tier_set: { device_tiers: [ { level: 1, device_group_names: [ 'medium' ] }, { level: 2, device_group_names: [ 'high' ] } ] } }" https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs

Bắt đầu chỉnh sửa – bạn sẽ nhận được mã nhận dạng và thời gian hết hạn chỉnh sửa. Lưu mã nhận dạng cho các lệnh gọi sau đây.

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

Tải AAB lên, trong đó chỉ định cấu hình theo cấp thiết bị làm tham số truy vấn. Nếu lệnh gọi thành công, bạn sẽ thấy mã phiên bản, sha1 và sha256 của bản dựng. Lưu mã phiên bản cho lệnh gọi tiếp theo.

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="{dttConfigID}"

Chỉ định AAB cho kênh thử nghiệm mong muốn (để thử nghiệm, bạn nên sử dụng kênh thử nghiệm nội bộ, nhưng có thể đọc thêm về các kênh thử nghiệm khác tại đây), tại đây, chúng tôi thực hiện một bản phát hành đơn giản mà không cần ghi chú phát hành, nhưng bạn có thể đọc trang này để tìm hiểu thêm về cách phát hành theo giai đoạn, bản phát hành nháp và ghi chú phát hành. Nếu đây là lần đầu tiên sử dụng Publisher API (API Nhà xuất bản), bạn nên tạo phiên bản này dưới dạng bản phát hành nháp và hoàn tất bản phát hành trên Google Play Console để đảm bảo mọi thứ được định cấu hình chính xác.

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

Xác nhận các thay đổi (hãy thận trọng nếu tiếp tục vì thao tác này sẽ khiến mọi thay đổi có hiệu lực trên Play đối với kênh mong muốn)

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