استهداف فئات الجهاز

ما هو "الاستهداف حسب فئة الجهاز"؟

يتيح لك "استهداف فئة الأجهزة" تقديم إصدارات مختلفة (مثل درجات الدقة وغيرها) من الأصول نفسها إلى الأجهزة بناءً على أجهزتها. على سبيل المثال، يمكنك اختيار إرسال مواد عرض منخفضة الدقة إلى الأجهزة ذات المواصفات المنخفضة لتحسين الأداء عليها، وإرسال مواد عرض عالية الدقة إلى الأجهزة ذات المواصفات العالية لتحسين جودة الرسومات، وكل ذلك بدون التسبّب في أي زيادة في الحجم الإجمالي للعبة من خلال إرسال مواد العرض الضرورية فقط إلى أجهزة المستخدمين. ويستند ذلك إلى مفهوم حِزم مواد العرض في ميزة عرض المواد في Play. كما سترى أدناه، يمكنك تحديد معايير الفئات (التي تستند الآن إلى ذاكرة الوصول العشوائي أو طُرز أجهزة معيّنة أو ميزات النظام المتاحة)، ويمكنك استخدام ما يصل إلى 5 فئات.

كما هو الحال مع ميزة "عرض المواد في Play"، يتوافق استهداف فئات الأجهزة مع واجهة برمجة التطبيقات 16 (Jelly Bean 4.1) والإصدارات الأحدث، لكن على الأجهزة 19 API (KitKat 4.4.X) والإصدارات الأقدم، يتم تقديم المستوى التلقائي بغض النظر عن إصدار الجهاز.

رحلة المطوّر

على مستوى عالٍ، لدمج DTT في لعبتك الحالية، عليك اتّخاذ الخطوات التالية:

  1. دمج ميزة "استهداف فئات الأجهزة" (وبالتالي ميزة "عرض مواد في Play") داخل لعبتك
    • دمج أداة "عرض المواد في Play" في لعبتك (إذا لم يسبق لك إجراء ذلك)
    • تقسيم مواد العرض إلى حِزم مواد عرض
    • حزِّم الرمز البرمجي ومواد العرض معًا في العنصر المجمَّع النهائي لـ Android App Bundle الذي ستحمّله على Play.
  2. أنشئ إعدادات استهداف فئات الأجهزة لكي يعرف Play كيفية عرض مواد العرض على أجهزة المستخدمين.
    • إعداد Google Play Developer API (إذا لم يسبق لك إكمال ذلك) ، وهي الواجهة التي ستستخدمها لإرسال إعدادات DTT إلى Play
    • اتّبِع الخطوات اللازمة لإنشاء إعدادات DTT.
  3. حمِّل حزمة AAB إلى Play، واختَبرها للتأكّد من أنّه تم ضبط كل الإعدادات بشكل صحيح.

ستلاحظ في القسم الأول أنّ الدليل يتضمّن شوكة بناءً على نظام التصميم الذي تستخدمه. يعتمد النظام الذي تختاره على المحرّك الذي تستخدمه والإعدادات الحالية.

  • Gradle (ننصح به للألعاب المكتوبة بلغة Java والألعاب الأصلية): بالنسبة إلى الألعاب التي تم إنشاؤها باستخدام Gradle، اتّبِع الخطوات التالية لضبط نظام التصميم من أجل إنشاء حِزم APK للتطبيقات القابلة للنشر (AAB) مع إتاحة ميزة DTT.
    • إذا كنت بصدد تصدير لعبتك إلى Gradle ثم إنهاء عملية الإنشاء هناك، ننصحك باتّباع التعليمات التالية (مثل ألعاب Unity المصدَّرة إلى Gradle))
  • مكوّن Unity الإضافي: سنزوّدك بحِزم Unity لاستيرادها إلى مشروعك على Unity، ما سيتيح لك ضبط ملف APK القابل للنشر على جميع الأجهزة (AAB) وإنشاءه مع إتاحة DTT.

إعداد ميزة "الاستهداف حسب فئة الجهاز" في تطبيقك

دمج ميزة "عرض المواد في Play" في لعبتك (إذا لم يسبق لك إكمالها)

تتيح لك ميزة "عرض مواد في Play" (PAD) عرض مواد عرض لعبتك ديناميكيًا في وقت التثبيت أو وقت التشغيل، ويمكنك الاطّلاع على نظرة عامة حولها هنا. من خلال ميزة "الاستهداف حسب فئة الجهاز"، سيقدّم Play حِزم مواد العرض استنادًا إلى إعدادات فئات الأجهزة التي تحدّدها لفئات مختلفة من الأجهزة. ننصحك باتّباع الإرشادات الواردة أدناه ودمج ميزة "الاستهداف حسب فئة الجهاز" في لعبتك (أي إنشاء حِزم مواد عرض وتنفيذ عملية الاسترجاع في لعبتك)، ثم تعديل رمز المشروع لتفعيل ميزة "الاستهداف حسب فئة الجهاز".

Gradle

بالنسبة إلى الألعاب التي تم إنشاؤها باستخدام Gradle، استخدِم التعليمات التالية لإنشاء حِزم مواد العرض باستخدام Gradle، ثم اتّبِع التعليمات لدمج عملية استرداد حِزم مواد العرض في لعبتك:

الانسجام

بالنسبة إلى الألعاب التي تم إنشاؤها باستخدام Unity، عليك ضبط حِزم مواد العرض باستخدام الفئة AssetPackConfig، كما هو موضّح في هذه التعليمات.

إنشاء أدلة خاصة بفئة الجهاز

في حال استخدام Gradle

ستقسّم الآن مواد العرض بين "N" فئة (5 فئات بحد أقصى) ستحدّدها في وقت لاحق. أنشئ أدلة DTT من خلال أخذ أدلة حِزم مواد العرض الحالية التي تم إنشاؤها في الخطوة الأخيرة، وإضافة اللاحقة المناسبة (كما هو موضّح أدناه) إلى #tier_0 و#tier_1 و#tier_2 وغيرها. عند استخدام حِزم مواد العرض في لعبتك، لن تحتاج إلى الإشارة إلى المجلدات باستخدام اللاحقة (بمعنى آخر، تتم إزالة اللاحقة تلقائيًا أثناء عملية الإنشاء).

بعد الخطوة السابقة، قد يبدو الأمر على النحو التالي:

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

عند الوصول إلى الملفات ضمن المجلد، يمكنك استخدام المسار نفسه بدون إضافة أيّ لاحقة (في هذا المثال، يمكنني الإشارة إلى المسار باسم level1/assets/character-textures/ بدون أيّ لاحقات).

في حال استخدام Unity

لإضافة حزمة مواد عرض تستخدِم DTT، يمكنك استخدام الطرق التالية AssetPackConfig:

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

على سبيل المثال، لنفترض أنّ لديك ثلاثة AssetBundles لشخصيتك بمستويات مختلفة من التفاصيل.

لربط AssetBundles هذه بفئة الجهاز المقابلة لها، استخدِم المقتطف التالي.

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

إنشاء حِزم تطبيق Android

Gradle

في ملف build.gradle الخاص بمشروعك، اضبط التبعيات لتضمين الإصدارات أدناه (أو إصدارات أحدث) من المكوّن الإضافي لنظام Gradle المتوافق مع Android وbundletool:

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

ستحتاج أيضًا إلى تحديث إصدار Gradle إلى 6.7.1 أو إصدار أحدث. يمكنك تحديث هذا في gradle/wrapper/gradle-wrapper.properties ضمن مشروعك.

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

أخيرًا، عليك استخدام مكتبة Play Asset Delivery Library. إذا كنت لا تزال تستخدم مكتبة Play Core Library الموحّدة، عليك ترقيتها إلى الإصدار 1.8.3 أو إصدار أحدث. ننصحك بالتبديل إلى "مكتبة عرض مواد في Play" والتحديث إلى أحدث إصدار إذا أمكن.

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

في ملف build.gradle الخاص بوحدة التطبيق الرئيسية، فعِّل تقسيم DTT:

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

أخيرًا، يمكنك إنشاء مجموعة حزمات تطبيق Android (AAB).

Bundletool

أنشئ حِزمك باستخدام أداة bundletool، وأضِف ما يلي إلى ملف BundleConfig.pb أثناء خطوة تخصيص حِزم APK المُعدّة للنشر (AAB).

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

الوحدة

بعد ضبط AssetPackConfig لتضمين حزم DTT، يمكنك ضبط هذا الإعداد في إحدى الطرق التالية لإنشاء 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)

الاختبار المحلي

قبل المتابعة، ننصحك باختبار حِزمة تطبيقك على الجهاز للتأكّد من أنّ كل الإعدادات صحيحة. باستخدام IDE bundletool (الإصدار 1.8.0 أو الإصدارات الأحدث)، يمكنك إنشاء تطبيقك واختباره على الجهاز، مع تحديد فئة الجهاز الصحيحة بشكل صريح. ستستخدم أولاً build-apks لإنشاء مجموعة من ملفات .apks، ثم نشر تطبيقك على جهاز متصل باستخدام install-apks. بإمكانك أيضًا تحديد الفئة التي تريد تثبيتها عبر علامة فئة الجهاز. يمكنك العثور على مزيد من المعلومات حول طريقة الاختبار المحلي هذه هنا (يُرجى العلم أنّ هذه الصفحة لم يتم تعديلها بعد من أجل DTT، وبالتالي لا تتضمّن علامة 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

بدلاً من ذلك: يمكنك أيضًا استخدام extract-apks لاستخراج مجموعة من حِزم APK لجهاز معيّن. ومع ذلك، فإنّ استخدام العلامة get-device-spec مع تحديد فئة الجهاز لهذا الجهاز لن يؤدي إلى النجاح مع العلامة --local-testing، ما يعني أنّه لن تتمكّن من اختبار حِزم مواد العرض التي تتوفّر عند الطلب أو ميزة "العرض السريع".

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

الوحدة

سيؤدي خيار القائمة Google -> الإنشاء والتشغيل إلى إنشاء لعبتك وتشغيلها مع تفعيل العلامة --local-testing. ومع ذلك، لا يسمح لك بتحديد مستوى الجهاز الذي تم تمريره إلى الأمر install-apks.

إذا أردت تحديد فئة جهاز غير 0، عليك اتّباع الخطوات التالية:

  1. أنشئ حِزمة AAB باستخدام خيار القائمة Google -> إنشاء حِزمة تطبيق Android.
  2. اتّبِع التعليمات الواردة في القسم السابق لتشغيل bundletool وbuild-apks وinstall-apks على حزمة تطبيق Android القابلة للنشر التي تم إنشاؤها.

إنشاء إعدادات فئة الأجهزة من خلال Google Play Developer API

بدء استخدام Google Play Developer API (إذا لم يسبق لك إكماله)

لضبط ميزة "الاستهداف على مستوى الأجهزة" (مثل تحديد متطلبات كل فئة)، ستحتاج إلى استخدام واجهة برمجة تطبيقات ناشر Android لتحميل إعداداتك إلى Google Play. يمكنك الاطّلاع على مزيد من المعلومات عن واجهة برمجة التطبيقات على الرابط أعلاه. هناك بعض الخطوات التي عليك اتّباعها للبدء:

  1. أنشئ مشروع واجهة برمجة التطبيقات (إذا لزم الأمر) واربطه بحسابك على Google Play Console.
  2. إعداد برنامج الوصول إلى واجهة برمجة التطبيقات

يمكنك العثور على مرجع واجهة برمجة التطبيقات هنا. في وقت لاحق، إذا اخترت تحميل إصدارك من خلال واجهة برمجة التطبيقات، عليك استخدام طُرق التعديلات. ننصحك أيضًا بمراجعة هذه الصفحة قبل استخدام واجهة برمجة التطبيقات.

استخدام واجهة برمجة التطبيقات Device Tier Configuration API

يمكنك استخدام طلب البيانات التالي من واجهة برمجة التطبيقات لإنشاء إعدادات فئة الجهاز:

إنشاء إعدادات فئة الجهاز

طلب HTTP POST https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs
مَعلمات المسار لا ينطبق
نص الطلب ضبط مستوى الجهاز
نص الاستجابة إعدادات مجموعة الأجهزة
عنصر إعدادات فئة الجهاز

يتألّف تعريف فئات الأجهزة من خطوتَين:

  1. حدِّد مجموعة من مجموعات الأجهزة.
  2. حدِّد مجموعة فئات الأجهزة من خلال منح مستوى لمجموعات الأجهزة.

مجموعة الأجهزة هي مجموعة من الأجهزة التي تتطابق مع المحدّدات التي تحدّدها في الإعداد.

يمكن لأدوات الاختيار تحديد المتطلبات المتعلقة بذاكرة الوصول العشوائي (RAM) للجهاز وطراز الجهاز.

يتم تحديد المجموعات من خلال اسم تختاره، ويُسمح بتداخل المجموعات.

بعد ذلك، يمكنك تحديد مجموعة فئات الأجهزة من خلال ترتيب المجموعات: يتم تحديد كل فئة جهاز حسب مستواها ومجموعة الأجهزة.

إذا تطابق الجهاز مع عدة فئات، سيتم عرض المحتوى عليه للفئة الأعلى مطابقة.

  {
    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]
        }
      ]
    }
  }

الحقول:

  • device_confid_id (عدد صحيح): المعرّف المقابل لإعدادات مستوى أمان هذا الجهاز.
  • مجموعات_الأجهزة (كائن): تعريفات المجموعات

    • name (سلسلة): اسم مجموعة الأجهزة (معرّف سلسلة تحدّده).
    • device_selectors (عنصر): متطلبات الجهاز لكي ينتمي إلى هذه المجموعة.
    • device_ram (كائن): متطلبات ذاكرة الوصول العشوائي للجهاز
      • min_bytes (عدد صحيح، شامل): الحد الأدنى لذاكرة الوصول العشوائي المطلوبة (بالبايت)
      • max_bytes (عدد صحيح، حصري): الحد الأقصى لسعة ذاكرة الوصول العشوائي المطلوبة (بالبايت)
    • included_device_ids (كائن): طُرز الأجهزة التي سيتمّ تضمينها في أداة الاختيار هذه (الحدّ الأقصى 1,0000 رقم تعريف جهاز لكل مجموعة) يجب أن يكون الجهاز في هذه القائمة ليتطابق مع أداة الاختيار. هذا شرط ضروري ولكنه ليس كافيًا لمطابقة العنصر المحدّد بالكامل (راجِع الملاحظة أعلاه حول دمج المتطلبات في عنصر محدّد).
      • build_brand (سلسلة): الشركة المصنّعة للجهاز
      • build_device (سلسلة): رمز طراز الجهاز
    • excluded_device_ids (كائن): طُرز الأجهزة المطلوب استبعادها في أداة الاختيار هذه (الحدّ الأقصى 10,000 رقم تعريف جهاز لكل مجموعة): لن يتطابق جهاز من هذه القائمة مع أداة الاختيار حتى إذا كان يتطابق مع جميع المتطلبات الأخرى في أداة الاختيار.
      • build_brand (سلسلة): الشركة المصنّعة للجهاز
      • build_device (سلسلة): رمز طراز الجهاز
    • required_system_features (عنصر): الميزات التي يحتاج الجهاز إلى تضمينها باستخدام هذا العنصر المحدد (100 ميزة كحد أقصى لكل مجموعة) يجب أن يتضمّن الجهاز جميع ميزات النظام في هذه القائمة لمطابقة المحدّد. هذا شرط ضروري ولكنه ليس كافيًا لمطابقة العنصر المحدّد بالكامل (راجِع الملاحظة أعلاه حول دمج المتطلبات في عنصر محدّد).

      مرجع ميزة النظام

      • name (سلسلة): ميزة نظام
    • forbidden_system_features (عنصر): الميزات التي يجب ألا يتم تضمينها في الجهاز باستخدام هذا العنصر المحدد (100 ميزة كحد أقصى لكل مجموعة) إذا كان الجهاز يتضمّن أيًا من ميزات النظام الواردة في هذه القائمة، لن يكون متوافقًا مع المحدّد، حتى إذا كان متوافقًا مع جميع المتطلبات الأخرى الواردة في المحدّد.

      مرجع ميزة النظام

      • name (سلسلة): ميزة نظام
  • device_tiers (كائن): تعريفات الفئات

    • level (int): مستوى الفئة
    • group_name (صفيف سلاسل): اسم مجموعات الأجهزة التي تنتمي إلى هذا المستوى

يمكنك العثور على التنسيق الصحيح لشركة التصنيع وطراز الجهاز الرمز باستخدام قائمة الأجهزة في Google Play Console، وذلك من خلال:

  • فحص الأجهزة الفردية باستخدام "قائمة الأجهزة" والعثور على رمز الشركة المصنّعة وطراز الجهاز في المواضع الموضّحة في المثال أدناه (بالنسبة إلى Google Pixel 4a، الشركة المصنّعة هي "Google" ورمز الطراز هو "sunfish")

    صفحة Pixel 4a في قائمة الأجهزة

    صفحة Pixel 4a في قائمة الأجهزة

  • تنزيل ملف CSV للأجهزة المتوافقة، واستخدام Manufacturer ورمز الطراز للحقلين build_brand وbuild_device على التوالي.

في ما يلي مثال على إعدادات تتضمّن 3 فئات: تستخدم الفئة 2 مجموعة الأجهزة عالية (التي تتضمّن جميع الأجهزة التي تزيد سعتها عن 7 غيغابايت وجهاز Pixel 4)، بينما تستخدم الفئة 1 مجموعة الأجهزة متوسطة (التي تتضمّن جميع الأجهزة التي تتراوح سعتها بين 4 و7 غيغابايت)، والفئة 0، التي يتم تحديدها ضمنيًا على أنّها مجموعة المحتوى غير المرغوب فيه.

{
  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'
        ]
      }
    ]
  }
}

يمكنك اتّباع التعليمات الواردة أدناه بهدف التحقّق من صحة إعدادات استهداف الأجهزة قبل تحميلها إلى Google Play.

الحصول على إعدادات فئة الجهاز حسب رقم التعريف

يمكنك استرداد إعدادات فئة أجهزة معيّنة حسب رقم التعريف باستخدام السلسلة التالية من الطلبات:

طلب HTTP GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs/{deviceTierConfigId}
مَعلمات المسار لا ينطبق
نص الطلب لا ينطبق
نص الاستجابة إعدادات مجموعة الأجهزة

الحصول على قائمة بإعدادات فئات الأجهزة

يمكنك الحصول على آخر 10 إعدادات لفئة الأجهزة من خلال الطلب التالي (أو تحديد مجموعة من عشرة بشكلٍ مُحسَّن باستخدام مَعلمة طلب البحث page_token):

طلب HTTP GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs
مَعلمات المسار لا ينطبق
مَعلمات طلب البحث page_token (اختيارية): تُستخدَم لتحديد مجموعة محدّدة من 10 بيانات DTC. يكون هذا مفيدًا إذا كنت قد أنشأت أكثر من 10 تجارب مستخدمين ناجحة، وأردت الاطّلاع على تجارب المستخدمين الناجحة التي تم إنشاؤها قبل آخر 10 تجارب.
نص الطلب لا ينطبق
نص الاستجابة قائمة إعدادات فئات الأجهزة

الرمز المميّز للصفحة

التحقّق من إعدادات استهداف الأجهزة

تتضمّن أداة bundletool أمرَين يساعدانك في التحقّق من أنّ إعدادات ميزة "استهداف الأجهزة" تعمل على النحو المطلوب قبل تحميلها إلى Play.

باستخدام bundletool print-device-targeting-config، يمكنك التحقّق من صحة ملف JSON من الناحية النحوية وعرض مجموعات الأجهزة وفئاتها بتنسيق أكثر سهولة في القراءة.

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

باستخدام bundletool evaluate-device-targeting-config، يمكنك تقييم المجموعات والفئة التي تتطابق مع جهاز معيّن. يمكنك إما توصيل الجهاز المستهدف بمحطة العمل واستخدام العلامة --connected-device، أو تجميع ملف JSON يحتوي على خصائص الجهاز يدويًا وتقديمه من خلال العلامة --device-properties.

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

يجب أن يكون ملف خصائص الجهاز ملفًا بتنسيق JSON يتّبع بنية ملف prototyping DeviceProperties protobuf. مثلاً:

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

تحميل حِزمة تطبيق Android إلى Google Play

عبر واجهة برمجة التطبيقات

يمكنك استخدام واجهة برمجة التطبيقات Google Play Developer API لتحميل "مجموعة حزمات تطبيق Android" إلى Google Play وربط إعدادات معيّنة لـ "استهداف فئة الأجهزة" بالتصميم.

يمكنك الاطّلاع على نظرة عامة على طرق التعديلات هنا، بالإضافة إلى أمثلة أكثر تفصيلاً حول الإصدار في مسارات الاختبار المختلفة في Google Play Console (بالنسبة إلى الرابط الأخير، عليك استخدام واجهات برمجة التطبيقات المتوافقة مع ميزة "التحديثات بعد الإصدار" بدلاً من واجهة برمجة التطبيقات المتوافقة مع حِزم APK، المُدرَجة في الصفحة). لتحديد إعدادات فئة الأجهزة لملف APK، أضِف رقم تعريف الإعدادات إلى مَعلمة طلب البحث deviceTierConfigId أثناء استدعاء الأسلوب edits.bundle.upload، على النحو التالي:

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

من خلال Google Play Console

يمكنك اتّباع التعليمات الواردة هنا لتحميل مجموعة حزمات تطبيق Android. سيتم تطبيق أحدث إعدادات DTC على حزمة تطبيقك.

يمكنك التحقّق من أنّه تم إنشاء حِزمة تطبيقك بشكلٍ صحيح من خلال الانتقال إلى مستكشف حزم التطبيقات (مع اختيار الإصدار الصحيح) > الإرسال، والنقر على كل حِزمة مواد عرض. من المفترض أن يعرض لك N فئة أنشأتها. في هذا المثال، يُظهر أنّ لديّ 3 فئات، وهي 0 و1 و2 لحزمة مواد العرض main_asset.

حزمة مواد عرض تتضمّن ثلاث فئات

جارٍ التحقّق من إرسال الفئة الصحيحة

استخدِم الطريقة التالية للتأكّد من إرسال الفئة الصحيحة فقط إلى الجهاز.

adb shell pm path {packageName}

من المفترض أن يظهر لك محتوى مثل:

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

مساعد

البدء السريع باستخدام Curl

في ما يلي مثال (باستخدام أداة سطر الأوامر curl) على إنشاء إعدادات جديدة لفئة الأجهزة، و استخدام Edits API لإنشاء تعديل جديد، وتحميل حزمة AAB جديدة (وربطها بإعدادات فئة أجهزة معيّنة)، وضبط إعدادات الإصدار/المسار، وإرسال التعديل. (وبالتالي يصبح التغيير متاحًا للجميع). تأكَّد من توفُّر الموقع الجغرافي لكلّ ممّا يلي:

أولاً، أنشئ إعدادًا لفئة الأجهزة، وراقِب الرمز المميّز deviceTierConfigId الذي ستتلقّاه عند إتمام المكالمة بنجاح.

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

بدء تعديل - ستتلقى معرّفًا ووقت انتهاء صلاحية التعديل. احفظ رقم التعريف للمكالمات التالية.

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

حمِّل حِزمة AAB، مع تحديد إعدادات فئة الأجهزة كمَعلمة طلب بحث. إذا تمت المكالمة بنجاح، سيظهر لك رمز الإصدار وsha1 وsha256 للإصدار. احفظ رمز الإصدار للمكالمة التالية.

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

تحديد مسار الإصدار التلقائي للتطبيقات (AAB) للمسار المطلوب (ننصح باستخدام مسار الاختبار الداخلي لأغراض الاختبار، ولكن يمكنك قراءةالمزيد من المعلومات عن المسارات المختلفة هنا)، ننفّذ هنا عملية طرح بسيطة بدون ملاحظات الإصدار، ولكن يمكنك قراءةهذه الصفحة للاطّلاع على مزيد من المعلومات عن كيفية إجراء عمليات الطرح على مراحل ومسودات الإصدارات وملاحظات الإصدار. إذا كانت هذه هي المرة الأولى التي تستخدم فيها Publisher API، ننصحك بإنشاء هذه الإصدارة كمسودة إصدار وإكمال الإصدار على Google Play Console للتأكّد من ضبط كل الإعدادات بشكل صحيح.

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}

إرفاق التغييرات (يجب اتّخاذ الحذر، لأنّ سيؤدي ذلك إلى نشر جميع التغييرات على Play في قناة الإصدار المطلوبة)

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