מודל אספקת האפליקציות של Google Play משתמש בקובצי Android App Bundle כדי ליצור ולספק קובצי APK שעברו אופטימיזציה לכל תצורת מכשיר של משתמש, כך שהמשתמשים מורידים רק את הקוד והמשאבים שהם צריכים כדי להפעיל את האפליקציה.
הפצת פיצ'רים ב-Play משתמשת ביכולות מתקדמות של חבילות App Bundle, ומאפשרת להעביר תכונות מסוימות של האפליקציה לפי תנאי או להוריד אותן לפי דרישה. כדי לעשות את זה, קודם צריך להפריד את התכונות האלה מאפליקציית הבסיס למודולים של תכונות.
הגדרת build של מודול של תכונות
כשיוצרים מודול של תכונות חדש באמצעות Android Studio, סביבת הפיתוח המשולבת (IDE) מחילה את פלאגין Gradle הבא על הקובץ build.gradle של המודול.
// The following applies the dynamic-feature plugin to your feature module.
// The plugin includes the Gradle tasks and properties required to configure and build
// an app bundle that includes your feature module.
plugins {
id 'com.android.dynamic-feature'
}
רבים מהמאפיינים שזמינים לתוסף האפליקציה הרגיל זמינים גם למודול של תכונות. בקטעים הבאים מוסבר אילו מאפיינים צריך לכלול בתצורת ה-build של מודול התכונה, ואילו מאפיינים אסור לכלול.
מה לא לכלול בהגדרת ה-build של מודול התכונות
מכיוון שכל מודול של תכונות תלוי במודול הבסיס, הוא גם יורש הגדרות מסוימות. לכן, צריך להשמיט את השורות הבאות בקובץ build.gradle של מודול התכונות:
- הגדרות חתימה: חתימה על חבילות אפליקציות מתבצעת באמצעות הגדרות חתימה שאתם מציינים במודול הבסיס.
- המאפיין
minifyEnabled: אפשר להפעיל את כיווץ הקוד לכל פרויקט האפליקציה רק מתוך תצורת ה-build של מודול הבסיס. לכן, צריך להשמיט את המאפיין הזה ממודולים של תכונות. עם זאת, אפשר לציין כללי ProGuard נוספים לכל מודול של תכונות. versionCodeו-versionName: כשיוצרים App Bundle, Gradle משתמש בפרטי גרסת האפליקציה שמסופקים על ידי מודול הבסיס. צריך להשמיט את המאפיינים האלה מקובץbuild.gradleשל מודול התכונות.
יצירת קשר עם מודול הבסיס
כש-Android Studio יוצר מודול של תכונות, הוא מוסיף את המאפיין android.dynamicFeatures לקובץ build.gradle של מודול הבסיס, וכך הופך את מודול של התכונות לגלוי למודול הבסיס, כמו שמוצג בהמשך:
// In the base module’s build.gradle file.
android {
...
// Specifies feature modules that have a dependency on
// this base module.
dynamicFeatures = [":dynamic_feature", ":dynamic_feature2"]
}
בנוסף, Android Studio כולל את מודול הבסיס כתלות של מודול של תכונות, כפי שמוצג בהמשך:
// In the feature module’s build.gradle file:
...
dependencies {
...
// Declares a dependency on the base module, ':app'.
implementation project(':app')
}
ציון כללי ProGuard נוספים
למרות שרק ב<term ref="build configuration">תצורת build</term> של מודול הבסיס מופעלת האפשרות ל<term ref="code shrinking">כיווץ קוד</term> בפרויקט האפליקציה, אפשר לספק כללי ProGuard <term ref="customize">מותאמים אישית</term> לכל <term ref="feature module">מודול של תכונות</term> באמצעות המאפיין proguardFiles, כמו שמוצג בהמשך.
android.buildTypes {
release {
// You must use the following property to specify additional ProGuard
// rules for feature modules.
proguardFiles 'proguard-rules-dynamic-features.pro'
}
}
הערה: כללי ProGuard האלה משולבים עם כללים ממודולים אחרים (כולל המודול הבסיסי) משך זמן של תהליך build. לכן, למרות שכל מודול של תכונה עשוי לציין קבוצה חדשה של כללים, הכללים האלה חלים על כל המודולים בפרויקט האפליקציה.
פריסת האפליקציה
במהלך פיתוח האפליקציה עם תמיכה במודולים של תכונות, אפשר לפרוס את האפליקציה למכשיר מחובר כמו שפורסים בדרך כלל, על ידי בחירה באפשרות Run > Run (הפעלה > הפעלה) מסרגל התפריטים (או על ידי לחיצה על Run (הפעלה)
בסרגל הכלים).
אם פרויקט האפליקציה כולל מודול תכונות אחד או יותר, אפשר לבחור אילו תכונות לכלול כשפורסים את האפליקציה. כדי לעשות זאת, צריך לשנות את ההגדרה הקיימת להרצה/ניפוי באגים באופן הבא:
- בסרגל התפריטים, בוחרים באפשרות Run > Edit Configurations (הפעלה > עריכת הגדרות).
- בחלונית הימנית של תיבת הדו-שיח Run/Debug Configurations (הגדרות הרצה/ניפוי באגים), בוחרים את ההגדרה הרצויה של Android App (אפליקציית Android).
- בכרטיסייה כללי, בקטע תכונות דינמיות לפריסה, מסמנים את התיבה לצד כל מודול של תכונות שרוצים לכלול כשפורסים את האפליקציה.
- לוחצים על אישור.
כברירת מחדל, Android Studio לא פורס את האפליקציה באמצעות קובצי App Bundle. במקום זאת, סביבת הפיתוח המשולבת (IDE) יוצרת חבילות APK ומתקינה אותן במכשיר. חבילות ה-APK האלה עוברות אופטימיזציה למהירות הפריסה ולא לגודל ה-APK. כדי להגדיר את Android Studio כך שיבצע build ויפרוס קובצי APK וחוויות מיידיות מ-App Bundle, צריך לשנות את הגדרות ההרצה או הניפוי באגים.
שימוש במודולים של פיצ'רים להפצה מותאמת אישית
יתרון ייחודי של מודולי תכונות הוא היכולת להתאים אישית את האופן והזמן שבהם תכונות שונות של האפליקציה מורדות למכשירים עם Android 5.0 (רמת API 21) ומעלה. לדוגמה, כדי לצמצם את גודל ההורדה הראשוני של האפליקציה, אפשר להגדיר פיצ'רים מסוימים כך שההורדה שלהם תהיה על פי דרישה, או רק במכשירים שתומכים ביכולות מסוימות, כמו היכולת לצלם תמונות או תמיכה בתכונות של מציאות רבודה.
אמנם אתם מקבלים הורדות שעברו אופטימיזציה גבוהה כברירת מחדל כשאתם מעלים את האפליקציה שלכם כ-App Bundle, אבל כדי להשתמש באפשרויות מתקדמות יותר של אספקת תכונות שניתנות להתאמה אישית, צריך לבצע הגדרה נוספת ולחלק את התכונות של האפליקציה למודולים באמצעות מודולים של תכונות. כלומר, מודולים של תכונות מספקים את אבני הבניין ליצירת תכונות מודולריות שאפשר להגדיר כך שכל אחת מהן תורד לפי הצורך.
נניח שיש לכם אפליקציה שמאפשרת למשתמשים לקנות ולמכור מוצרים בזירת מסחר אונליין. אפשר להפוך כל אחת מהפונקציות הבאות של האפליקציה למודול תכונות נפרד:
- התחברות לחשבון ויצירת חשבון
- עיון ב-Marketplace
- העלאת פריט למכירה
- עיבוד תשלומים
בטבלה הבאה מפורטות אפשרויות המסירה השונות שנתמכות במודולים של תכונות, ומוסבר איך אפשר להשתמש בהן כדי לבצע אופטימיזציה של גודל ההורדה הראשוני של אפליקציית השוק לדוגמה.
| אפשרות משלוח | התנהגות | תרחיש שימוש לדוגמה | תחילת העבודה |
|---|---|---|---|
| העברה בזמן ההתקנה | מודולים של תכונות שלא מגדירים אף אחת מאפשרויות המסירה
שמתוארות למעלה יורדים בזמן התקנת האפליקציה, כברירת מחדל. התנהגות כזו חשובה כי היא מאפשרת לכם להטמיע אפשרויות מתקדמות של משלוח בהדרגה. לדוגמה, אפשר להפיק תועלת מהפיכת התכונות של האפליקציה למודולריות ולהפעיל את האפשרות 'הפצה על פי דרישה' רק אחרי שמטמיעים באופן מלא את ההורדות על פי דרישה באמצעות ספריית הפצת פיצ'רים ב-Play.
בנוסף, האפליקציה יכולה לבקש להסיר תכונות בשלב מאוחר יותר. לכן, אם אתם צריכים תכונות מסוימות בזמן התקנת האפליקציה, אבל לא אחרי זה, אתם יכולים לצמצם את גודל ההתקנה על ידי בקשה להסיר את התכונה מהמכשיר. |
אם באפליקציה יש פעילויות הדרכה מסוימות, כמו מדריך אינטראקטיבי לקנייה ולמכירה של פריטים בשוק, אפשר לכלול את התכונה הזו בהתקנת האפליקציה כברירת מחדל.
עם זאת, כדי להקטין את גודל האפליקציה אחרי ההתקנה, האפליקציה יכולה לבקש למחוק את התכונה אחרי שהמשתמש סיים את ההדרכה. |
הפיכת האפליקציה למודולרית באמצעות מודולים של תכונות שלא מוגדרות להם אפשרויות מתקדמות של הצגה.
כדי ללמוד איך להקטין את גודל האפליקציה המותקנת על ידי הסרת מודולים מסוימים של תכונות שהמשתמש כבר לא צריך, אפשר לקרוא את המאמר בנושא ניהול מודולים מותקנים. |
| משלוח על פי דרישה | ההרשאה מאפשרת לאפליקציה לבקש ולהוריד מודולים של תכונות לפי הצורך. | אם רק 20% מהמשתמשים באפליקציית השוק מפרסמים פריטים למכירה, כדאי להציע את הפונקציונליות של צילום תמונות, כולל תיאור הפריט ופרסום הפריט למכירה, כהורדה על פי דרישה. כך אפשר להקטין את גודל ההורדה הראשוני עבור רוב המשתמשים. כלומר, אתם יכולים להגדיר שמודול התכונות של פונקציית המכירה באפליקציה יורד רק כשמשתמש מביע עניין בהעלאת פריטים למכירה ב-Marketplace.
בנוסף, אם המשתמש לא מוכר יותר פריטים אחרי פרק זמן מסוים, האפליקציה יכולה להקטין את הגודל שלה במכשיר על ידי בקשה להסיר את התכונה. |
יוצרים מודול של תכונות ומגדירים העברה לפי דרישה. לאחר מכן, האפליקציה יכולה להשתמש בספריית הפצת פיצ'רים ב-Play כדי לבקש להוריד את המודול לפי דרישה. |
| הצגה מותנית | מאפשר לציין דרישות מסוימות לגבי מכשיר המשתמש, כמו תכונות חומרה, אזור ושפה ורמת API מינימלית, כדי לקבוע אם תכונה מודולרית תורד בזמן התקנת האפליקציה. | אם לאפליקציית המרקטפלייס יש פוטנציאל להגיע לקהל גלובלי, יכול להיות שתצטרכו לתמוך באמצעי תשלום שפופולריים רק באזורים מסוימים או בקרב קהלים מקומיים. כדי לצמצם את גודל ההורדה הראשוני של האפליקציה, אפשר ליצור מודולים נפרדים של תכונות לעיבוד סוגים מסוימים של אמצעי תשלום, ולהתקין אותם באופן מותנה במכשיר של המשתמש בהתאם ללוקאל הרשום שלו. | יוצרים מודול של תכונות ומגדירים מסירה מותנית. |
| משלוח מיידי | Google Play ללא התקנה
מאפשר למשתמשים ליצור אינטראקציה עם האפליקציה שלכם בלי להתקין אותה במכשיר. במקום זאת, הם יכולים להתנסות באפליקציה באמצעות הלחצן 'אפשר לנסות עכשיו' בחנות Google Play או באמצעות כתובת URL שאתם יוצרים. הצורה הזו של הצגת תוכן מקלה עליכם להגביר את המעורבות באפליקציה שלכם.
בעזרת מסירה מיידית, אתם יכולים להשתמש ב-Google Play ללא התקנה כדי לאפשר למשתמשים ליהנות באופן מיידי מתכונות מסוימות באפליקציה שלכם בלי להתקין אותה. |
אפשר לשקול לכלול במשחק מודול של תכונות קל משקל עם כמה רמות ראשונות. אתם יכולים להפעיל את המודול באופן מיידי כדי שהמשתמשים יוכלו לנסות את המשחק באופן מיידי באמצעות קישור לכתובת URL או לחצן 'לניסיון', בלי להתקין את האפליקציה. | יוצרים מודול של תכונות ומגדירים
הורדה מיידית. לאחר מכן, האפליקציה יכולה להשתמש בספריית הפצת פיצ'רים ב-Play כדי לבקש להוריד את המודול לפי דרישה.
חשוב לזכור: חלוקת התכונות של האפליקציה למודולים היא רק הצעד הראשון. כדי לתמוך ב-Google Play ללא התקנה, גודל ההורדה של מודול הבסיס של האפליקציה ושל תכונה מסוימת בגרסה ללא התקנה צריכים לעמוד במגבלות גודל מחמירות. מידע נוסף זמין במאמר איך מקטינים את הגודל של אפליקציה או משחק כדי לאפשר חוויות שימוש מיידי. |
יצירת URI למשאב
אם רוצים לגשת למשאב שמאוחסן במודול של תכונות באמצעות URI, כך יוצרים URI של משאב במודול של תכונות באמצעות Uri.Builder():
Kotlin
val uri = Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) .authority(context.getPackageName()) // Look up the resources in the application with its splits loaded .appendPath(resources.getResourceTypeName(resId)) .appendPath(String.format("%s:%s", resources.getResourcePackageName(resId), // Look up the dynamic resource in the split namespace. resources.getResourceEntryName(resId) )) .build()
Java
String uri = Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) .authority(context.getPackageName()) // Look up the resources in the application with its splits loaded .appendPath(resources.getResourceTypeName(resId)) .appendPath(String.format("%s:%s", resources.getResourcePackageName(resId), // Look up the dynamic resource in the split namespace. resources.getResourceEntryName(resId) )) .build().toString();
כל חלק בנתיב למשאב נוצר בזמן הריצה, וכך מובטח שמרחב השמות הנכון ייווצר אחרי טעינת קובצי ה-APK המפוצלים.
כדוגמה לאופן שבו נוצר ה-URI, נניח שיש לכם אפליקציה ומודולים של תכונות עם השמות הבאים:
- שם החבילה של האפליקציה:
com.example.my_app_package - שם חבילת המשאבים של התכונה:
com.example.my_app_package.my_dynamic_feature
אם resId בקטע הקוד שלמעלה מתייחס למשאב של קובץ גולמי בשם my_video במודול של תכונות, אז הקוד resId שלמעלה יפיק את הפלט הבא:Uri.Builder()
android.resource://com.example.my_app_package/raw/com.example.my_app_package.my_dynamic_feature:my_video
אחרי כן, האפליקציה יכולה להשתמש ב-URI הזה כדי לגשת למשאב של מודול התכונה.
כדי לאמת את הנתיבים ב-URI, אפשר להשתמש בהכלי לניתוח APK כדי לבדוק את קובץ ה-APK של מודול של תכונות ולקבוע את שם החבילה:
שיקולים לגבי מודולים של תכונות
מודולים של תכונות מאפשרים לשפר את מהירות ה-build ואת מהירות הפיתוח, ולהתאים אישית את המסירה של התכונות באפליקציה כדי להקטין את גודל האפליקציה. עם זאת, יש כמה מגבלות ומקרים מיוחדים שכדאי לזכור כשמשתמשים במודולים של תכונות:
- התקנה של 50 מודולים של תכונות או יותר במכשיר יחיד, באמצעות מסירה מותנית או לפי דרישה, עלולה לגרום לבעיות בביצועים. מודולים בזמן ההתקנה שלא מוגדרים כמודולים שאפשר להסיר נכללים אוטומטית במודול הבסיסי, ונספרים רק כמודול של תכונות אחד בכל מכשיר.
- מומלץ להגביל את מספר המודולים שמוגדרים כניתנים להסרה לאספקה בזמן ההתקנה ל-10 או פחות. אחרת, יכול להיות שזמן ההורדה וההתקנה של האפליקציה יתארך.
- רק מכשירים עם Android בגרסה 5.0 (רמת API 21) ומעלה תומכים בהורדה ובהתקנה של תכונות לפי דרישה. כדי שהתכונה תהיה זמינה בגרסאות קודמות של Android, צריך להפעיל את האיחוד כשיוצרים מודול של תכונות.
- מפעילים את SplitCompat כדי שהאפליקציה תוכל לגשת למודולים של תכונות שהורדו ומועברים לפי דרישה.
- במודולים של תכונות לא צריך לציין פעילויות במניפסט עם הערך
trueשלandroid:exported. הסיבה לכך היא שאין ערובה לכך שהמכשיר הוריד את מודול התכונות כשניסו להפעיל את הפעילות מאפליקציה אחרת. בנוסף, האפליקציה צריכה לוודא שתכונה מסוימת הורדה לפני שהיא מנסה לגשת לקוד ולמשאבים שלה. מידע נוסף מופיע במאמר בנושא ניהול מודולים מותקנים. - כדי להשתמש ב-הפצת פיצ'רים ב-Play, צריך לפרסם את האפליקציה באמצעות קובץ Android App Bundle. לכן, חשוב שתכירו את הבעיות הידועות שקשורות לקובצי Android App Bundle.
מסמך עזר בנושא מניפסט של מודול של תכונות
כשיוצרים מודול של תכונות חדש באמצעות Android Studio, סביבת הפיתוח המשולבת (IDE) כוללת את רוב מאפייני המניפסט שהמודול צריך כדי להתנהג כמו מודול של תכונות. בנוסף, חלק מהמאפיינים מוזרקים על ידי מערכת הבנייה בזמן ההידור, כך שאין צורך לציין או לשנות אותם בעצמכם. בטבלה הבאה מתוארים מאפייני המניפסט שחשובים למודולים של תכונות.
| מאפיין | תיאור |
|---|---|
| <manifest | זוהי אבן בניין
<manifest> אופיינית. |
| xmlns:dist="http://schemas.android.com/apk/distribution" | מציין dist: מרחב שמות חדש של XML שמתואר בהמשך. |
| split="split_name" |
כש-Android Studio יוצר את חבילת ה-App Bundle, הוא כולל את המאפיין הזה בשבילכם. לכן, אין לכלול את המאפיין הזה או לשנות אותו בעצמכם.
השם של המודול, שהאפליקציה מציינת כשמבקשים מודול על פי דרישה באמצעות ספריית הפצת פיצ'רים ב-Play. איך Gradle קובע את הערך של המאפיין הזה: כברירת מחדל, כשיוצרים מודול של תכונות באמצעות Android Studio, סביבת הפיתוח המשולבת משתמשת במה שמציינים כשם המודול כדי לזהות את המודול כפרויקט משנה של Gradle ב קובץ ההגדרות של Gradle.
כשיוצרים את קובץ ה-App Bundle, מערכת Gradle משתמשת ברכיב האחרון של נתיב הפרויקט המשני כדי להוסיף את מאפיין המניפסט הזה למניפסט של המודול. לדוגמה, אם יוצרים מודול של תכונות חדש בספרייה |
| android:isFeatureSplit="true | false"> |
כש-Android Studio יוצר את ה-App Bundle שלכם, הוא כולל את המאפיין הזה בשבילכם. לכן, לא כדאי לכלול את המאפיין הזה או לשנות אותו באופן ידני.
מציין שהמודול הזה הוא מודול של תכונות.
במניפסטים במודול הבסיסי ובקובצי ה-APK של ההגדרות, המאפיין הזה מושמט או מוגדר לערך |
| <dist:module | המאפיינים האלה קובעים איך המודול נארז ומופץ כקובצי APK. |
| dist:instant="true | false" |
מציין אם המודול צריך להיות זמין דרך Google Play ללא התקנה כחוויית שימוש מיידי.
אם האפליקציה כוללת מודול תכונות אחד או יותר שמופעלים כאפליקציה ללא התקנה, צריך להפעיל את מודול הבסיס כאפליקציה ללא התקנה. כשמשתמשים ב-Android Studio בגרסה 3.5 ומעלה, סביבת הפיתוח המשולבת (IDE) עושה את זה בשבילכם כשיוצרים מודול של תכונות שמופעל באופן מיידי. אי אפשר להגדיר את רכיב ה-XML הזה ל- |
| dist:title="@string/feature_name"> |
מציינת כותרת שמוצגת למשתמשים עבור המודול. לדוגמה, יכול להיות שהשם הזה יוצג במכשיר כשמבקשים אישור להורדה.
צריך לכלול את משאב המחרוזת של הכותרת הזו בקובץ |
| <dist:fusing dist:include="true | false" /> |
ההגדרה קובעת אם לכלול את המודול בקובצי APK מרובים שמטרגטים מכשירים עם Android 4.4 (רמת API 20) ומטה.
בנוסף, כשמשתמשים ב-
|
| <dist:delivery> | האפשרות הזו כוללת אפשרויות להתאמה אישית של מסירת המודול, כמו שמוצג בהמשך. חשוב לזכור שכל מודול תכונות צריך להגדיר רק סוג אחד של אפשרויות משלוח מותאמות אישית. |
| <dist:install-time> |
מציין שהמודול צריך להיות זמין בזמן ההתקנה. זהו אופן הפעולה שמוגדר כברירת מחדל למודולים של תכונות שלא מצוין בהם סוג אחר של אפשרות מסירה בהתאמה אישית.
מידע נוסף על הורדות בזמן ההתקנה זמין במאמר בנושא הגדרת מסירה בזמן ההתקנה. בצומת הזה אפשר גם לציין תנאים שמגבילים את המודול למכשירים שעומדים בדרישות מסוימות, כמו תכונות המכשיר, המדינה של המשתמש או רמת API מינימלית. מידע נוסף על הגדרת משלוח מותנה |
| <dist:removable dist:value="true | false" /> |
אם לא מגדירים את המאפיין או מגדירים אותו לערך כשהערך של ברירת המחדל היא הערה: התכונה הזו זמינה רק כשמשתמשים בפלאגין של Android Gradle מגרסה 4.2 ואילך, או כשמשתמשים בכלי Bundletool מגרסה 1.0 ואילך משורת הפקודה. |
| </dist:install-time> | |
| <dist:on-demand /> |
המדיניות מציינת שהמודול צריך להיות זמין להורדה על פי דרישה. כלומר, המודול לא זמין בזמן ההתקנה, אבל יכול להיות שהאפליקציה תבקש להוריד אותו בהמשך.
מידע נוסף על הורדות על פי דרישה זמין במאמר בנושא הגדרת משלוח על פי דרישה. |
| </dist:delivery> | |
| </dist:module> | |
| <application
android:hasCode="true | false"> ... </application> |
אם מודול של תכונות לא יוצר קובצי DEX, כלומר הוא לא מכיל קוד שמקומפל בהמשך לפורמט קובץ DEX, צריך לבצע את הפעולות הבאות (אחרת יכול להיות שיוצגו שגיאות בזמן הריצה):
|
| ... </manifest> |
מקורות מידע נוספים
כדי לקבל מידע נוסף על השימוש במודולים של תכונות, אפשר לעיין במקורות המידע הבאים.
פוסטים בבלוגים
- תכונות חדשות שיעזרו לכם לפתח את העסק, להשיק אותו ולהרחיב אותו ב-Google Play
- העדכונים האחרונים של קובץ Android App Bundle, כולל API של שפות נוספות
- Patchwork Plaid — A modularization story
סרטונים
- התאמה אישית של תהליך המסירה באמצעות App Bundle ושיתוף קל של גרסאות build לבדיקה
- כלים חדשים לאופטימיזציה של גודל האפליקציה ולהגדלת מספר ההתקנות ב-Google Play
תנאים והגבלות ובטיחות נתונים
הגישה לספריית הפצת פיצ'רים ב-Play או השימוש בה מבטאים את הסכמתכם לתנאים ולהגבלות של ערכת פיתוח התוכנה Play Core. כדי לקבל גישה לספרייה, עליך לקרוא ולהבין את כל התנאים וההגבלות ותנאי המדיניות החלים.
אבטחת נתונים
ספריות Play Core הן ממשק זמן הריצה של האפליקציה עם חנות Google Play. לכן, כשמשתמשים ב-Play Core באפליקציה, חנות Play מפעילה תהליכים משלה, כולל טיפול בנתונים כפוף לתנאים ולהגבלות של Google Play. בהמשך מוסבר איך ספריות Play Core מטפלות בנתונים כדי לעבד בקשות ספציפיות מהאפליקציה.
Additional languages API
| נתונים שנאספים על השימוש | רשימת השפות המותקנות |
| מטרת איסוף הנתונים | הנתונים שנאספים משמשים להצגת גרסאות שונות של האפליקציה בשפות שונות ולשמירה על השפות המותקנות אחרי עדכון לאפליקציה. |
| הצפנת נתונים | הנתונים מוצפנים. |
| שיתוף נתונים | הנתונים לא מועברים לצדדים שלישיים. |
| מחיקת נתונים | הנתונים נמחקים אחרי תקופת שמירה קבועה. |
הפצת פיצ'רים ב-Play
| נתונים שנאספים על השימוש |
מטא-נתונים של המכשיר גרסת האפליקציה |
| מטרת איסוף הנתונים | הנתונים שנאספים משמשים להצגת המודול הנכון במכשיר ולשמירה של המודולים המותקנים אחרי עדכון, גיבוי ושחזור. |
| הצפנת נתונים | הנתונים מוצפנים. |
| שיתוף נתונים | הנתונים לא מועברים לצדדים שלישיים. |
| מחיקת נתונים | הנתונים נמחקים אחרי תקופת שמירה קבועה. |
המטרה שלנו היא להתנהל בשקיפות רבה ככל האפשר. עם זאת, רק אתם אחראים להחליט איך לענות על השאלות בטופס של סעיף אבטחת הנתונים של Google Play בנוגע לאיסוף נתונים, השיתוף והאבטחה של נתוני המשתמשים באפליקציה.