מודל הצגת האפליקציות של Google Play משתמש בקובצי Android App Bundle כדי ליצור ולהציג קובצי APK שעברו אופטימיזציה לכל תצורת מכשיר של משתמש, כך שהמשתמשים מורידים רק את הקוד והמשאבים שהם צריכים כדי להפעיל את האפליקציה.
Play Feature Delivery משתמש ביכולות מתקדמות של חבילות 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 של מודול התכונות:
- הגדרות חתימה: קובצי App Bundle נחתמים באמצעות הגדרות חתימה שאתם מציינים במודול הבסיס.
- המאפיין
minifyEnabled: אפשר להפעיל את תכונת צמצום הקוד לכל פרויקט האפליקציה רק מתוך הגדרות ה-build של מודול הבסיס. לכן, צריך להשמיט את המאפיין הזה ממודולים של תכונות. עם זאת, אפשר לציין כללי ProGuard נוספים לכל מודול תכונות. -
versionCodeו-versionName: כשיוצרים חבילת אפליקציות, 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 נוספים
למרות שרק בהגדרות הבנייה של מודול הבסיס מופעלת האפשרות לצמצום קוד בפרויקט האפליקציה, אפשר לספק כללי ProGuard מותאמים אישית לכל מודול תכונה באמצעות המאפיין 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 האלה משולבים עם כללים ממודולים אחרים (כולל מודול הבסיס) בזמן הבנייה. לכן, למרות שכל מודול של תכונה עשוי לציין קבוצה חדשה של כללים, הכללים האלה חלים על כל המודולים בפרויקט האפליקציה.
פריסת האפליקציה
במהלך פיתוח האפליקציה עם תמיכה במודולים של תכונות, אפשר לפרוס את האפליקציה למכשיר מחובר כמו שפורסים בדרך כלל, על ידי בחירה באפשרות Run > Run מסרגל התפריטים (או על ידי לחיצה על Run
בסרגל הכלים).
אם פרויקט האפליקציה כולל מודול תכונות אחד או יותר, אפשר לבחור אילו תכונות לכלול כשפורסים את האפליקציה. כדי לעשות זאת, צריך לשנות את ההגדרה הקיימת להרצה/ניפוי באגים באופן הבא:
- בסרגל התפריטים, בוחרים באפשרות Run > Edit Configurations (הפעלה > עריכת הגדרות).
- בחלונית הימנית של תיבת הדו-שיח Run/Debug Configurations (הגדרות הרצה/ניפוי באגים), בוחרים את ההגדרה הרצויה של Android App (אפליקציית Android).
- בכרטיסייה כללי, בקטע תכונות דינמיות לפריסה, מסמנים את התיבה לצד כל מודול תכונות שרוצים לכלול כשפורסים את האפליקציה.
- לוחצים על אישור.
כברירת מחדל, Android Studio לא פורס את האפליקציה באמצעות קובצי App Bundle. במקום זאת, סביבת הפיתוח המשולבת (IDE) יוצרת ומתקינה במכשיר חבילות APK שעברו אופטימיזציה למהירות פריסה, ולא לגודל ה-APK. כדי להגדיר את Android Studio כך שיבצע build ויפרוס קובצי APK וחוויות מיידיות מתוך חבילת אפליקציה, צריך לשנות את הגדרות ההפעלה או הניפוי באגים.
שימוש במודולים של פיצ'רים להפצה מותאמת אישית
יתרון ייחודי של מודולי תכונות הוא היכולת להתאים אישית את האופן והזמן שבהם תכונות שונות של האפליקציה מורדות למכשירים עם Android בגרסה 5.0 (רמת API 21) ומעלה. לדוגמה, כדי לצמצם את גודל ההורדה הראשוני של האפליקציה, אפשר להגדיר פיצ'רים מסוימים כך שההורדה שלהם תהיה על פי דרישה, או רק במכשירים שתומכים ביכולות מסוימות, כמו היכולת לצלם תמונות או תמיכה בתכונות של מציאות רבודה.
אמנם אתם מקבלים הורדות שעברו אופטימיזציה גבוהה כברירת מחדל כשאתם מעלים את האפליקציה שלכם כחבילת אפליקציות, אבל כדי להשתמש באפשרויות מתקדמות יותר של אספקת תכונות שניתנות להתאמה אישית, צריך לבצע הגדרה נוספת ולחלק את התכונות של האפליקציה למודולים באמצעות מודולים של תכונות. כלומר, מודולים של תכונות מספקים את אבני הבניין ליצירת תכונות מודולריות שאפשר להגדיר כך שכל אחת מהן תורד לפי הצורך.
נניח שיש לכם אפליקציה שמאפשרת למשתמשים לקנות ולמכור מוצרים בזירת מסחר אונליין. אפשר להפוך כל אחת מהפונקציות הבאות של האפליקציה למודול תכונות נפרד:
- כניסה לחשבון ויצירת חשבון
- עיון ב-Marketplace
- העלאת פריט למכירה
- עיבוד תשלומים
בטבלה הבאה מפורטות אפשרויות המסירה השונות שנתמכות במודולים של תכונות, ומוסבר איך אפשר להשתמש בהן כדי לבצע אופטימיזציה של גודל ההורדה הראשוני של אפליקציית השוק לדוגמה.
| אפשרות משלוח | התנהגות | תרחיש שימוש לדוגמה | תחילת העבודה |
|---|---|---|---|
| העברה בזמן ההתקנה | מודולים של תכונות שלא מגדירים אף אחת מאפשרויות המסירה
שמתוארות למעלה יורדים בזמן התקנת האפליקציה, כברירת מחדל. התנהגות כזו חשובה כי היא מאפשרת לכם להטמיע אפשרויות מתקדמות של הצגת מודעות בהדרגה. לדוגמה, תוכלו ליהנות מיתרונות המודולריזציה של התכונות באפליקציה ולהפעיל את האפשרות 'הורדה לפי דרישה' רק אחרי שתטמיעו באופן מלא את ההורדות לפי דרישה באמצעות ספריית Play Feature Delivery.
בנוסף, האפליקציה יכולה לבקש להסיר תכונות בשלב מאוחר יותר. לכן, אם אתם צריכים תכונות מסוימות בזמן התקנת האפליקציה, אבל לא אחרי כן, אתם יכולים לצמצם את גודל ההתקנה על ידי בקשה להסיר את התכונה מהמכשיר. |
אם באפליקציה יש פעילויות הדרכה מסוימות, כמו מדריך אינטראקטיבי לקנייה ולמכירה של פריטים בשוק, אפשר לכלול את התכונה הזו כברירת מחדל בהתקנת האפליקציה.
עם זאת, כדי להקטין את גודל האפליקציה אחרי ההתקנה, האפליקציה יכולה לבקש למחוק את התכונה אחרי שהמשתמש סיים את ההדרכה. |
הפיכת האפליקציה למודולרית באמצעות מודולים של תכונות שלא מוגדרות להם אפשרויות מתקדמות של מסירה.
כדי ללמוד איך להקטין את גודל ההתקנה של האפליקציה על ידי הסרת מודולים מסוימים של תכונות שהמשתמש כבר לא צריך, אפשר לקרוא את המאמר בנושא ניהול מודולים מותקנים. |
| משלוח על פי דרישה | ההרשאה מאפשרת לאפליקציה לבקש ולהוריד מודולים של תכונות לפי הצורך. | אם רק 20% מהמשתמשים באפליקציית השוק מפרסמים פריטים למכירה, כדאי להפוך את הפונקציונליות של צילום תמונות, כולל תיאור הפריט ופרסום הפריט למכירה, לזמינה להורדה לפי דרישה. כך אפשר לצמצם את גודל ההורדה הראשוני עבור רוב המשתמשים. כלומר, אתם יכולים להגדיר את מודול התכונות של פונקציית המכירה באפליקציה כך שהוא יורד רק כשמשתמש מביע עניין בהעלאת פריטים למכירה ב-Marketplace.
בנוסף, אם המשתמש לא מוכר יותר פריטים אחרי פרק זמן מסוים, האפליקציה יכולה להקטין את הגודל שלה במכשיר על ידי בקשה להסיר את התכונה. |
יוצרים מודול תכונה ומגדירים העברה לפי דרישה. לאחר מכן, האפליקציה יכולה להשתמש בספריית העברת התכונות ב-Play כדי לבקש להוריד את המודול לפי דרישה. |
| הצגה מותנית | מאפשר לציין דרישות מסוימות לגבי מכשיר המשתמש, כמו תכונות חומרה, אזור ושפה ורמת API מינימלית, כדי לקבוע אם תכונה מודולרית תורד בזמן התקנת האפליקציה. | אם לאפליקציית ה-Marketplace יש פוטנציאל להגיע לקהל בינלאומי, יכול להיות שתצטרכו לתמוך באמצעי תשלום פופולריים רק באזורים מסוימים או בקרב לקוחות מקומיים. כדי לצמצם את גודל ההורדה הראשוני של האפליקציה, אפשר ליצור מודולים נפרדים של תכונות לעיבוד סוגים מסוימים של אמצעי תשלום, ולהגדיר שהם יותקנו באופן מותנה במכשיר של המשתמש בהתאם ללוקאל הרשום שלו. | יוצרים מודול של תכונות ומגדירים הפצה מותנית. |
| משלוח מיידי | Google Play ללא התקנה
מאפשר למשתמשים ליצור אינטראקציה עם האפליקציה שלכם בלי להתקין אותה
במכשיר שלהם. במקום זאת, הם יכולים לנסות את האפליקציה באמצעות הלחצן 'אפשר לנסות עכשיו' בחנות Google Play או באמצעות כתובת URL שאתם יוצרים. הצורה הזו של הצגת תוכן מקלה עליכם להגביר את רמת המעורבות באפליקציה שלכם.
בעזרת מסירה מיידית, אתם יכולים להשתמש ב-Google Play ללא התקנה כדי לאפשר למשתמשים ליהנות באופן מיידי מתכונות מסוימות באפליקציה שלכם בלי להתקין אותה. |
אפשר לשקול להוסיף למשחק מודול תכונות קל משקל שכולל את כמה הרמות הראשונות של המשחק. אפשר להפעיל את המודול באופן מיידי כדי שהמשתמשים יוכלו לנסות את המשחק באופן מיידי באמצעות קישור לכתובת URL או לחצן 'לניסיון', בלי להתקין את האפליקציה. | יוצרים מודול של תכונות ומגדירים
העברה מיידית. לאחר מכן, האפליקציה יכולה להשתמש בספריית העברת התכונות ב-Play כדי לבקש להוריד את המודול לפי דרישה.
חשוב לזכור שפיצול התכונות של האפליקציה למודולים הוא רק השלב הראשון. כדי לתמוך ב-Google Play Instant, גודל ההורדה של מודול הבסיס של האפליקציה ושל תכונה מסוימת שמופעלת ב-Instant צריכים לעמוד במגבלות גודל מחמירות. מידע נוסף זמין במאמר איך מקטינים את הגודל של אפליקציות או משחקים כדי לאפשר חוויות מיידיות. |
יצירת 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 במודול התכונה, אז הקוד Uri.Builder() שלמעלה יפיק את הפלט הבא:
android.resource://com.example.my_app_package/raw/com.example.my_app_package.my_dynamic_feature:my_video
אחרי כן, האפליקציה יכולה להשתמש ב-URI הזה כדי לגשת למשאב של מודול התכונה.
כדי לאמת את הנתיבים ב-URI, אפשר להשתמש בכלי לניתוח קובצי APK כדי לבדוק את ה-APK של מודול התכונות ולקבוע את שם החבילה:
שיקולים לגבי מודולים של תכונות
מודולים של תכונות מאפשרים לשפר את מהירות הבנייה ואת מהירות הפיתוח, ולהתאים אישית את המסירה של התכונות באפליקציה כדי להקטין את גודל האפליקציה. עם זאת, יש כמה מגבלות ומקרים מיוחדים שכדאי לזכור כשמשתמשים במודולים של תכונות:
- התקנה של 50 מודולים של תכונות או יותר במכשיר יחיד, באמצעות מסירה מותנית או לפי דרישה, עלולה לגרום לבעיות בביצועים. מודולים בזמן ההתקנה שלא מוגדרים כמודולים שאפשר להסיר נכללים אוטומטית במודול הבסיסי, ונספרים רק כמודול תכונה אחד בכל מכשיר.
- מומלץ להגביל את מספר המודולים שמוגדרים כניתנים להסרה לאספקה בזמן ההתקנה ל-10 או פחות. אחרת, יכול להיות שזמן ההורדה וההתקנה של האפליקציה יתארך.
- רק מכשירים עם Android בגרסה 5.0 (רמת API 21) ומעלה תומכים בהורדה ובהתקנה של תכונות לפי דרישה. כדי שהתכונה תהיה זמינה בגרסאות קודמות של Android, צריך להפעיל את האפשרות Fusing כשיוצרים מודול תכונות.
- מפעילים את SplitCompat כדי שהאפליקציה תוכל לגשת למודולים של תכונות שהורדו ומסופקים על פי דרישה.
- במודולים של תכונות לא צריך לציין פעילויות במניפסט עם הערך
trueשלandroid:exported. הסיבה לכך היא שאין ערובה לכך שהמכשיר הוריד את מודול התכונה כשניסו להפעיל את הפעילות מאפליקציה אחרת. בנוסף, האפליקציה צריכה לוודא שתכונה מסוימת הורדה לפני שהיא מנסה לגשת לקוד ולמשאבים שלה. מידע נוסף זמין במאמר בנושא ניהול מודולים מותקנים. - מכיוון ש-Play Feature Delivery מחייב פרסום של האפליקציה באמצעות קובץ 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 יוצר את חבילת האפליקציות, הוא כולל את המאפיין הזה בשבילכם. לכן, אין לכלול את המאפיין הזה או לשנות אותו בעצמכם.
המאפיין הזה מגדיר את שם המודול, שהאפליקציה מציינת כשמבקשים מודול על פי דרישה באמצעות Play Feature Delivery Library. איך Gradle קובע את הערך של המאפיין הזה: כברירת מחדל, כשיוצרים מודול תכונות באמצעות Android Studio, סביבת הפיתוח המשולבת (IDE) משתמשת במה שמציינים כשם המודול כדי לזהות את המודול כפרויקט משנה של Gradle ב קובץ ההגדרות של Gradle.
כשיוצרים את קובץ ה-App Bundle, מערכת Gradle משתמשת ברכיב האחרון של נתיב הפרויקט המשני כדי להוסיף את מאפיין המניפסט הזה למניפסט של המודול. לדוגמה, אם יוצרים מודול תכונות חדש בספרייה |
| android:isFeatureSplit="true | false"> |
כש-Android Studio יוצר את חבילת האפליקציות, הוא כולל את המאפיין הזה בשבילכם. לכן, לא כדאי לכלול את המאפיין הזה או לשנות אותו באופן ידני.
מציין שהמודול הזה הוא מודול תכונות.
במניפסטים במודול הבסיסי ובקובצי ה-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 Feature Delivery או השימוש בה מבטאים את הסכמתכם לתנאים ולהגבלות של ערכת פיתוח התוכנה Play Core. כדי לקבל גישה לספרייה, עליך לקרוא ולהבין את כל התנאים וההגבלות ותנאי המדיניות החלים.
אבטחת נתונים
ספריות Play Core הן ממשק זמן הריצה של האפליקציה עם חנות Google Play. לכן, כשמשתמשים ב-Play Core באפליקציה, חנות Play מפעילה תהליכים משלה, כולל טיפול בנתונים בהתאם לתנאים ולהגבלות של Google Play. בהמשך מפורט איך ספריות הליבה של Google Play מטפלות בנתונים כדי לעבד בקשות ספציפיות מהאפליקציה שלכם.
Additional languages API
| נתונים שנאספים על השימוש | רשימת השפות המותקנות |
| מטרת איסוף הנתונים | הנתונים שנאספים משמשים להצגת גרסאות שונות של האפליקציה בשפות שונות ולשמירה על השפות המותקנות אחרי עדכון האפליקציה. |
| הצפנת נתונים | הנתונים מוצפנים. |
| שיתוף נתונים | הנתונים לא מועברים לצדדים שלישיים. |
| מחיקת נתונים | הנתונים נמחקים אחרי תקופת שמירה קבועה. |
הפצת פיצ'רים ב-Play
| נתונים שנאספים על השימוש |
מטא-נתונים של המכשיר גרסת האפליקציה |
| מטרת איסוף הנתונים | הנתונים שנאספים משמשים להצגת המודול הנכון במכשיר ולשמירה על המודולים המותקנים אחרי עדכון, גיבוי ושחזור. |
| הצפנת נתונים | הנתונים מוצפנים. |
| שיתוף נתונים | הנתונים לא מועברים לצדדים שלישיים. |
| מחיקת נתונים | הנתונים נמחקים אחרי תקופת שמירה קבועה. |
המטרה שלנו היא להתנהל בשקיפות רבה ככל האפשר. עם זאת, רק אתם אחראים להחליט איך לענות על השאלות בטופס אבטחת הנתונים של Google Play בנוגע לאיסוף הנתונים של משתמשי הקצה, לשיתוף הנתונים האלה ולנוהלי האבטחה באפליקציה.