מהו טירגוט לפי מכשיר במודולים מותנים?
טירגוט לפי מכשיר מאפשר לכם לבצע מודולים של תכונות מותנות בהתאם החומרה שלהם. לדוגמה, תוכל לבחור להציג תכונה מסוימת רק למכשירים מתקדמים ולא לספק אותה למכשירים לא יכולים להשתמש בתכונה הזו (כלומר, חיסכון במקום במכשירים האלה). הזה מתבסס על הרעיון של מודולים של פיצ'רים העברת פיצ'רים של Play. בדיוק כמו שלמטה, יש לכם סמכות להגדיר את קריטריוני הטירגוט (בשלב הזה) על סמך זיכרון RAM, דגמי מכשירים ספציפיים או תכונות מערכת זמינות), וגם לטרגט מודולים לקבוצות מכשירים ספציפיות.
התהליך למפתחים
ברמה גבוהה, כדי לשלב טירגוט לפי מכשיר יהיה עליך לבצע את השלבים הבאים:
- פיתוח תכונה שברצונך לספק לקבוצה של מכשירים בלבד
בחומרה שלהם.
- הטמעת התכונה הזו בתור מודול של תכונות
- יש לציין בקטע של תנאי המודול בקובץ AndroidManifest.xml כדי אילו קבוצות מכשירים צריך לשלוח.
- לקבוע הגדרות טירגוט לפי מכשיר, כדי שמערכת Play תדע איך
להעביר את המודולים של התכונות למכשירים של המשתמשים
- להגדיר את ממשק ה-API של Google Play למפתחים (אם עדיין לא השלמתם אותו), הוא האמצעי שבו משתמשים כדי לשלוח את הגדרות ה-DT ל-Play
- מבצעים את השלבים ליצירת הגדרת ה-DT.
- צריך להעלות את קובץ ה-AAB ל-Play ולבדוק אם הכול תקין הוגדר כראוי
במסמך הזה מוסבר איך להוסיף טירגוט לפי מכשיר בהצגה מותנית באמצעות הפלאגין Android Gradle.
יצירת מודול של תכונות מותנות עם טירגוט לפי מכשיר
הוספת מודול של תכונה לאפליקציה
באמצעות Play Feature Delivery אפשר לספק תכונות מסוימות של האפליקציה. באופן מותנה או על פי דרישה, ניתן לקרוא סקירה כללית בנושא. עם טירגוט לפי מכשיר אפשר לספק תכונה למכשירים באופן מותנה שהוקצו לקבוצות הרלוונטיות.
כדי להשתמש ב-DT למסירה מותנית, צריך להשתמש
bundletool
גרסה 1.7.0 ואילך.
לשם כך צריך לציין במפורש את גרסת Bundletool עבור
פלאגין Android Gradle. אפשר לעשות זאת ברמה הבסיסית (root) build.gradle
קטע buildscript של קובץ:
buildscript {
dependencies {
classpath "com.android.tools.build:bundletool:1.7.0"
...
}
...
}
כדי ליצור מודול של תכונה, פועלים לפי ההוראות הבאות כדי ליצור מודולריזציה של אפליקציה ל-Android.
לאחר השלמת פיתוח התכונה, תוכלו להגדיר מסירה
לתנאים על סמך טירגוט לפי מכשיר בAndroidManifest.xml
של התכונה.
צריך לציין תנאי של קבוצת מכשירים בתוך dist:conditions
מתוך רכיב dist:module
. יש מידע כללי על התנאים
כאן. למכשיר
קיימים תנאים חדשים שבהם אפשר לציין את כל הקבוצות
יש לשלוח את התכונה הזו אל:
<dist:device-groups>
<dist:device-group dist:name="..." />
<dist:device-group dist:name="..." />
...
</dist:device-groups>
לדוגמה, נניח שהגדרתם קבוצת מכשירים בשם
_my_group1 (תלמדו איך להגדיר אותה בקטע
יצירה של הגדרת טירגוט לפי מכשיר
למטה). אם צריך לשלוח את המודול של התכונה רק למכשירים ששייכים לו
אל מכשירי _my_group1, ה-AndroidManifest.xml
שלו צריך להיראות כך:
<manifest ...>
...
<dist:module dist:title="...">
<dist:delivery>
<dist:install-time>
<dist:conditions>
<dist:device-groups>
<dist:device-group dist:name="my_group_1"/>
</dist:device-groups>
...
</dist:conditions>
</dist:install-time>
</dist:delivery>
</dist:module>
...
</manifest>
בתכונה שמטרגטת גם את _my_group1 וגם את _my_group2, הפונקציה
AndroidManifest.xml
נראה כך:
<manifest ...>
...
<dist:module dist:title="...">
<dist:delivery>
<dist:install-time>
<dist:conditions>
<dist:device-groups>
<dist:device-group dist:name="my_group_1"/>
<dist:device-group dist:name="my_group_2"/>
</dist:device-groups>
...
</dist:conditions>
</dist:install-time>
</dist:delivery>
</dist:module>
...
</manifest>
לאחר מכן, תוכלו ליצור את קובץ ה-Android App Bundle (AAB).
בדיקות מקומיות
לפני שממשיכים, מומלץ לבדוק באופן מקומי את ה-App Bundle כדי
מוודאים שהכול מוגדר כמו שצריך. באמצעות
bundletool
שאתם מפתחים באופן מקומי
לבדוק את האפליקציה ולציין במפורש את קבוצת המכשירים הנכונה. קודם כול
אפשר להשתמש ב-build-apks
כדי ליצור
קבוצה של קובצי .APK ולאחר מכן לפרוס את האפליקציה במכשיר מחובר באמצעות
install-apks
שלך
ניתן גם לציין אילו קבוצות ברצונך להתקין באמצעות device-groups
לסמן. מידע נוסף על השיטה הזו לבדיקה מקומית
כאן. שימו לב
הדף הזה עדיין לא עודכן לפורמט DT ולכן חסר בו
סימון device-groups.
bundletool build-apks --bundle=/path/to/app.aab --output=/path/to/app.apks --local-testingbundletool install-apks --apks=/path/to/app.apks --device-groups=my_group_1,my_group_2
לחלופין: אפשר גם להשתמש
extract-apks
כדי לחלץ
קבוצת חבילות APK למכשיר ספציפי (באמצעות
get-device-spec
וגם ציון קבוצות המכשירים של המכשיר הזה).
bundletool get-device-spec --output=/path/to/device-spec.json --device-groups=my_group_1,my_group_2bundletool 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 Play Developer API
תחילת העבודה עם ממשק ה-API של Google Play למפתחים (אם עדיין לא השלמתם אותו)
כדי להגדיר טירגוט לפי מכשיר (הגדרת קבוצות מכשירים), צריך כדי להשתמש ב-Android Publisher API כדי להעלות את התצורה שלך ל-Google Play. מידע נוסף על ה-API זמין בכתובת הקישור שלמעלה – יש כמה השלבים שצריך לבצע כדי להתחיל:
מידע על ה-API
כאן -
אם תבחרו להעלות את ה-build דרך ה-API, תשתמשו
Edits
methods.
בנוסף, מומלץ
לקריאת הדף הזה
לפני השימוש ב-API.
שימוש ב-Device Targeting Configuration API
כדי ליצור טירגוט לפי מכשיר, אפשר להשתמש בקריאה הבאה ל-API תצורה:
יצירת הגדרת טירגוט לפי מכשיר
בקשת HTTP | POST https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs |
פרמטרים של נתיב | לא רלוונטי |
גוף הבקשה | הגדרות הטירגוט לפי מכשיר |
גוף התשובה | הגדרות הטירגוט לפי מכשיר |
אובייקט של הגדרת טירגוט לפי מכשיר
{
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_config_id (מספר שלם): המזהה שתואם למכשיר הזה הגדרות טירגוט
device_groups (אובייקט): הגדרות קבוצה
- name (מחרוזת): השם של קבוצת המכשירים (מזהה מחרוזת שהגדרתם)
- device_selectors (אובייקט): דרישות המכשיר למכשיר כדי: שייכים לקבוצה הזו.
- device_ram (אובייקט): דרישות לגבי זיכרון RAM של המכשיר
- min_bytes (מספר שלם): זיכרון RAM מינימלי שנדרש (בבייטים)
- max_bytes (מספר שלם): נפח זיכרון RAM מקסימלי נדרש (בבייטים)
- included_device_ids (אובייקט): דגמי מכשירים להכללה
בבורר הזה (עד 10,000 מזהי מכשירים לכל קבוצה). מכשיר A
כדי להתאים לבורר, הם צריכים להיות ברשימה הזו. זהו צורך
אבל אין מספיק תנאי כדי להתאים לבורר המלא (ראו הערה
בהמשך מוסבר על שילוב דרישות בבורר).
- build_brand (מחרוזת): יצרן המכשיר
- build_device (מחרוזת): קוד של דגם המכשיר.
- excluded_device_ids (אובייקט): דגמי מכשירים להחרגה
בבורר הזה (עד 10,000 מזהי מכשירים לכל קבוצה). מכשיר A
מהרשימה הזו לא תתאים לבורר, גם אם הוא תואם לכל
ודרישות נוספות בבורר.
- build_brand (מחרוזת): יצרן המכשיר
- build_device (מחרוזת): קוד של דגם המכשיר.
required_system_features (אובייקט): תכונות שמכשיר צריך להיכלל בבורר הזה (עד 100 תכונות לכל קבוצה). מכשיר צריך לכלול את כל תכונות המערכת כדי להתאים לבורר. זהו צורך אך לא מספיק תנאי כדי להתאים לבורר המלא (ראו הערה למטה לגבי שילוב ומילות המפתח בבורר).
הפניית תכונות של המערכת
- name (מחרוזת): תכונה של מערכת
forbidden_system_features (אובייקט): תכונות שמכשיר אינו חייב להיכלל על ידי בורר זה (עד 100 תכונות לכל קבוצה). אם במכשיר יש אחת מתכונות המערכת הוא לא תואם לבורר, גם אם הוא תואם לכל שאר בבורר.
הפניית תכונות של המערכת
- name (מחרוזת): תכונה של מערכת
אפשר למצוא את הפורמט הנכון לפי יצרן המכשיר והדגם באמצעות קטלוג המכשירים ב-Google Play Console, אפשר לבצע אחת מהפעולות הבאות:
בדיקה של מכשירים ספציפיים באמצעות קטלוג המכשירים, היצרן וקוד הדגם במיקומים, כפי שמוצג בדוגמה הבאה (בטלפון מדגם Google Pixel 4a, היצרן הוא Google וקוד הדגם הוא 'דג שמש')
הורדת קובץ CSV של מכשירים נתמכים באמצעות היצרן Model Code (קוד המודל) בשדות build_brand ו-build_device, בהתאמה.
לדוגמה, הקבוצה הבאה תואמת לכל המכשירים שיש בהם יותר מ-4GB של RAM, מלבד Pixel 5 (google Redfin) ו-Pixel 3 (Google Blueline, שכולל פחות מ-4GB של זיכרון RAM).
device_groups: [
{
name: "my_group_1",
device_selectors: [
{
device_ram: {
min_bytes: 4294967296
},
excluded_device_ids: [
{
build_brand: "google",
build_device: "redfin"
}
]
},
{
included_device_ids: [
{
build_brand: "google",
build_device: "blueline"
}
]
}
]
}
]
אפשר לקרוא את זה בתור:
[ (RAM > 4GB) AND NOT (google redfin) ] OR [ (google blueline) ]
אפשר לפעול לפי ההוראות הבאות כדי אימות הגדרות הטירגוט לפי מכשיר לפני להעלות אותו ל-Google Play.
אחזור של הגדרת טירגוט לפי מכשיר לפי מזהה
ניתן לאחזר הגדרות ספציפיות של טירגוט לפי מכשיר לפי מזהה באמצעות הקריאה הבאה:
בקשת HTTP | GEThttps://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs/{deviceTierConfigId} |
פרמטרים של נתיב | לא רלוונטי |
גוף הבקשה | לא רלוונטי |
גוף התשובה | הגדרות הטירגוט לפי מכשיר |
קבלת רשימה של הגדרות טירגוט לפי מכשיר
ניתן לקבל את 10 ההגדרות האחרונות של טירגוט לפי מכשיר, לפי ההגדרות הבאות קריאה (או לציין באופן אופטימלי קבוצה של עשר באמצעות page_token פרמטר של שאילתה):
בקשת HTTP | GEThttps://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs |
פרמטרים של נתיב | לא רלוונטי |
פרמטרים של שאילתה | page_token (אופציונלי) – משמש לציון קבוצה ספציפית של 10 המרות דיגיטליות. האפשרות הזו שימושית אם יצרת יותר מ-10 המרות מסוג DTC, ואני רוצה לראות את אלה שנוצרו לפני כן 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 שמופיע אחרי מאפייני מכשיר למבנה של אב טיפוס. לדוגמה:
{
"ram": 2057072640,
"device_id": {
"build_brand":"google",
"build_device":"redfin"
},
"system_features": [
{
"name":"android.hardware.bluetooth"
},
{
"name":"android.hardware.camera"
}
]
}
מתבצעת העלאה של קובץ Android App Bundle ל-Google Play
דרך API
אפשר להשתמש ב-Google Play Developer API כדי להעלות את קובץ Android App Bundle ל-Google Play ולקשר הגדרה ספציפית של טירגוט לפי מכשיר את ה-build שלך.
יש
סקירה כללית על שיטות העריכה,
וגם
דוגמאות מעמיקות יותר להשקה לטראקים השונים ב-Google Play Console
(בקישור האחרון מומלץ להשתמש
ממשקי API ידידותיים ל-AAB
במקום
API ידידותי ל-APK
שמפורטות בדף). כדי לציין את הגדרת הטירגוט למכשיר עבור
את ה-build, עליכם להוסיף את מזהה ההגדרה לשאילתה deviceTierConfigId
כשקוראים לפונקציה
edits.bundle.upload
למשל:
https://androidpublisher.googleapis.com/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles?deviceTierConfigId="{deviceTierConfigId}"
מ-Google Play Console
כאן אפשר למצוא את ההוראות כדי להעלות את קובץ Android App Bundle. ההגדרה האחרונה של ה-DTC תהיה הוחל על קובץ ה-App Bundle.
עזר
התחלה מהירה באמצעות Curl
הנה דוגמה (באמצעות curl של כלי שורת הפקודה) של יצירת הגדרה חדשה של טירגוט לפי מכשיר, ומשתמשים בממשק ה-API של העריכות כדי ליצור עריכה חדשה, מעלים AAB חדש (משייך אותו עם תצורה ספציפית של מיקוד למכשיר), קבע את תצורת המסלול/ההפצה, ולבצע את העריכה (כך הופכים את השינוי לגלוי לכולם). עליך לוודא המיקום של:
- המפתח שתואם ללקוח ה-API שלכם
- שם החבילה של האפליקציה
קודם כול, יוצרים הגדרת טירגוט לפי מכשיר ומעיינים deviceTierConfigId שמתקבל בשיחה מוצלחת.
curl -H "$(oauth2l header --json $HOME/{apiKey} androidpublisher)" -XPOST -H "Content-Type: application/json" -d "{ device_groups: [ { name: "my_group_1", device_selectors: [ { device_ram: { min_bytes: 4294967296 }, excluded_device_ids: [ { build_brand: "google", build_device: "redfin" } ] }, { included_device_ids: [ { build_brand: "google", build_device: "blueline" } ] } ] } ] }" 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. ציון הגדרת הטירגוט לפי מכשיר (deviceTierConfigId) כשאילתה פרמטר - אם הקריאה בוצעה בהצלחה, יופיע קוד גרסה, sha1 ו-sha256 של ה-build. צריך לשמור את קוד הגרסה לשיחה הבאה.
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="{deviceTierConfigId}
מקצים את ה-AAB לטראק הרצוי (לצורך בדיקה, מומלץ להשתמש במסלול הבדיקה הפנימית, אבל אפשר אפשר לקרוא מידע נוסף על הטראקים השונים כאן), כאן אנחנו מבצעים השקה פשוטה ללא נתוני גרסה, אבל אפשר לקריאת הדף הזה לקבלת מידע נוסף על השקות מדורגות, גרסאות טיוטה ונתוני גרסה. אם זו הפעם הראשונה שאתם משתמשים ב-Publisher API, מומלץ ליצור זו כגרסת טיוטה, והשלמת הגרסה ב-Google Play Console כדי לוודא שהכול הוגדר בצורה נכונה.
curl -H "$(oauth2l header --json $HOME/{apiKey} androidpublisher)" -XPUT -H "Content-Type: application/json" -d "{ releases: [{status: '{status}', versionCodes: ['{versionCode}'] }]}" 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