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

ما المقصود بميزة "الاستهداف على مستوى الأجهزة"؟

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

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

رحلة مطوّر البرامج

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

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

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

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

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

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

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

مبرّد

بالنسبة إلى الألعاب التي تم إنشاؤها باستخدام 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"

مبرّد

في ملف 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"، وفي حال كنت لا تزال تستخدم الإصدار 1.8.3 أو الإصدارات الأحدث من مكتبة Play الأساسية المتجانسة. ننصحك بالتبديل إلى "مكتبة عرض المواد في Play" والتحديث إلى أحدث إصدار إن أمكن.

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

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

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

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

أداة الحِزم

أنشِئ الحزمة باستخدام أداة الحزم، وأثناء خطوة تخصيص تنسيق AAB، أضِف ما يلي إلى ملف BundleConfig.pb.

{
  ...
  "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)

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

ننصحك قبل المتابعة باختبار حِزمة التطبيق على الجهاز للتأكّد من أنّ كل الأجهزة قد تم إعدادها بشكل صحيح. باستخدام 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 على واجهة AAB المضمّنة.

إنشاء إعدادات على مستوى الجهاز من خلال Google Play Developer API

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

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

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

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

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

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

إنشاء إعدادات على مستوى الجهاز

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

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

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

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

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

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

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

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

  {
    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 (عدد صحيح): معرّف يقابل إعدادات فئة الجهاز هذه.
  • device_groups (كائن): تعريفات المجموعات

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

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

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

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

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

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

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

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

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

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

  • تنزيل ملف CSV للأجهزة المتوافقة، واستخدام Manufacturer وModel Code للحقلين 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 نماذج DTC وتريد الاطّلاع على أحدث 10 رموز DTC التي تم إنشاؤها.
نص الطلب لا ينطبق
نص الاستجابة قائمة بإعدادات مستوى الجهاز

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

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

يتضمّن 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 يتبع بنية النموذج الأوّلي لـ DeviceProperties. على سبيل المثال:

{
  "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 (بالنسبة إلى الرابط الأخير، عليك استخدام واجهات برمجة التطبيقات المتوافقة مع AAB بدلاً من واجهة برمجة التطبيقات المتوافقة مع 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" (التعديلات) لإنشاء تعديل جديد، وتحميل جدول 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 إلى المسار المطلوب (يُنصح باستخدام مسار الاختبار الداخلي للاختبار، ولكن يمكنك قراءة المزيد عن المسارات المختلفة هنا)، نُجري هنا عملية طرح بسيطة بدون ملاحظات الإصدار، ولكن يمكنك قراءة هذه الصفحة لمعرفة المزيد حول كيفية الطرح على مراحل ومسودات الإصدارات وملاحظات الإصدار. إذا كانت هذه هي المرة الأولى التي تستخدم فيها واجهة برمجة تطبيقات الناشر، نقترح عليك إنشاء هذه الواجهة كمسودة إصدار وإكمال الإصدار على 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