מודל הצגת האפליקציות של 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 נוספים
למרות שרק תצורת ה-build של מודול הבסיס יכולה להפעיל את כיווץ הקוד בפרויקט של האפליקציה, אתם יכולים לספק כללי 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 מתמזגים עם הכללים של מודולים אחרים (כולל מודול הבסיס) בזמן ה-build. לכן, למרות שכל מודול של תכונות יכול לציין קבוצת כללים חדשה, הכללים האלה חלים על כל המודולים בפרויקט של האפליקציה.
פריסת האפליקציה
בזמן שאתם מפתחים את האפליקציה עם תמיכה במודולים של תכונות, אתם יכולים לפרוס את האפליקציה במכשיר מחובר כרגיל. כדי לעשות את זה, בוחרים באפשרות Run > Run (הפעלה > הפעלה) בסרגל התפריטים (או לוחצים על Run (הפעלה)
בסרגל הכלים).
אם פרויקט האפליקציה כולל מודול אחד או יותר של תכונות, אתם יכולים לבחור אילו תכונות לכלול כשאתם פורסים את האפליקציה. כדי לעשות את זה, אתם צריכים לשנות את הגדרת ההרצה/ניפוי הבאגים הקיימת באופן הבא:
- בסרגל התפריטים, בוחרים באפשרות Run > Edit Configurations.
- בחלונית השמאלית של תיבת הדו-שיח Run/Debug Configurations, בוחרים את ההגדרה הרצויה של Android App.
- בקטע Dynamic features to deploy בכרטיסייה General, מסמנים את התיבה לצד כל מודול של תכונות שרוצים לכלול בפריסת האפליקציה.
- לוחצים על אישור.
כברירת מחדל, Android Studio לא פורס את האפליקציה באמצעות קובצי App Bundle. במקום זאת, סביבת הפיתוח המשולבת (IDE) יוצרת ומתקינה במכשיר קובצי APK שעברו אופטימיזציה למהירות הפריסה, ולא לגודל ה-APK. כדי להגדיר את Android Studio כך שיבנה ויפרוס קובצי APK וחוויות מיידיות מ-App Bundle, צריך לשנות את הגדרת ההרצה/ניפוי הבאגים.
שימוש במודולים של תכונות להצגה בהתאמה אישית
יתרון ייחודי של מודולים של תכונות הוא היכולת להתאים אישית איך ומתי תכונות שונות של האפליקציה יורדו למכשירים עם Android בגרסה 5.0 (רמת API 21) ומעלה. לדוגמה, כדי להקטין את גודל ההורדה הראשונית של האפליקציה, אפשר להגדיר תכונות מסוימות כך שניתן יהיה להוריד אותן לפי הצורך, או רק במכשירים שתומכים ביכולות מסוימות, כמו היכולת לצלם תמונות או לתמוך בתכונות של מציאות רבודה.
כשמעלים את האפליקציה כ-App Bundle, מקבלים כברירת מחדל הורדות שעברו אופטימיזציה ברמה גבוהה. עם זאת, כדי להשתמש באפשרויות המתקדמות יותר להעברת תכונות בהתאמה אישית, צריך להגדיר הגדרות נוספות ולבצע מודולריזציה של תכונות האפליקציה באמצעות מודולים של תכונות. כלומר, מודולים של תכונות מספקים את אבני הבניין ליצירת תכונות מודולריות, שניתן להגדיר כך שכל אחת מהן תורד לפי הצורך.
נניח שיש לכם אפליקציה שמאפשרת למשתמשים לקנות ולמכור מוצרים בזירת מסחר אונליין. אפשר לחלק את הפונקציות הבאות של האפליקציה למודולים נפרדים של תכונות:
- התחברות לחשבון ויצירת חשבון
- גלישה ב-Marketplace
- הצבת פריט למכירה
- עיבוד תשלומים
בטבלה הבאה מתוארות אפשרויות ההצגה השונות שנתמכות במודולים של תכונות, ואיך אפשר להשתמש בהן כדי לבצע אופטימיזציה של גודל ההורדה הראשונית של אפליקציית זירת המסחר לדוגמה.
| אפשרות משלוח | התנהגות | תרחיש לדוגמה | תחילת העבודה |
|---|---|---|---|
| העברה בזמן ההתקנה | מודולים של תכונות שלא מוגדרת בהם אף אחת מאפשרויות ההצגה שתוארו למעלה, יורדו כברירת מחדל בזמן התקנת האפליקציה. זהו מאפיין חשוב, כי הוא מאפשר לכם להטמיע אפשרויות משלוח מתקדמות בהדרגה. לדוגמה, אתם יכולים להפיק תועלת מהפיכת התכונות של האפליקציה למודולריות, ולהפעיל את ההפצה על פי דרישה רק אחרי שהטמעתם באופן מלא את ההורדות על פי דרישה באמצעות ספריית הפצת הפיצ'רים ב-Play.
בנוסף, האפליקציה יכולה לבקש להסיר תכונות במועד מאוחר יותר. לכן, אם אתם צריכים תכונות מסוימות בזמן התקנת האפליקציה, אבל לא אחרי, אתם יכולים להקטין את גודל ההתקנה על ידי בקשה להסרת התכונה מהמכשיר. |
אם באפליקציה יש פעילויות הדרכה מסוימות, כמו מדריך אינטראקטיבי
שמסביר איך לקנות ולמכור פריטים בזירת המסחר, אפשר לכלול את התכונה הזו
בהתקנת האפליקציה, כברירת מחדל.
עם זאת, כדי להקטין את גודל האפליקציה המותקנת, האפליקציה יכולה לבקש למחוק את התכונה אחרי שהמשתמש השלים את ההדרכה. |
להפוך את האפליקציה למודולרית באמצעות מודולים של תכונות שלא מוגדרות בהם אפשרויות מתקדמות להעברה.
כדי ללמוד איך להקטין את גודל האפליקציה המותקנת על ידי הסרת מודולים מסוימים של תכונות שהמשתמש לא צריך יותר, קראו את המאמר ניהול מודולים מותקנים. |
| משלוח על פי דרישה | מאפשר לאפליקציה לבקש ולהוריד מודולים של תכונות לפי הצורך. | אם רק 20% מהמשתמשים באפליקציה של זירת המסחר מפרסמים פריטים למכירה, אסטרטגיה טובה להקטנת גודל ההורדה הראשונית לרוב המשתמשים
היא להפוך את הפונקציונליות של צילום תמונות, כולל תיאור
הפריט, והצבת פריט למכירה לזמינה כהורדה
לפי דרישה. כלומר, אתם יכולים להגדיר את המודול של תכונות המכירה באפליקציה כך שהוא יורד רק כשמשתמש מביע עניין בהצבת פריטים למכירה בזירת המסחר.
בנוסף, אם המשתמש לא מוכר יותר פריטים אחרי פרק זמן מסוים, האפליקציה יכולה להקטין את גודל ההתקנה שלה על ידי בקשה להסרת התכונה. |
יוצרים מודול של תכונות ומגדירים הצגה על פי דרישה. לאחר מכן, האפליקציה יכולה להשתמש בספריית הפצת הפיצ'רים ב-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 נוצר, נניח שיש לכם אפליקציה ומודולים של תכונות עם השמות הבאים:
- שם חבילת ה-APK של האפליקציה:
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 של מודול התכונות ולקבוע את שם החבילה:
שיקולים לגבי מודולים של תכונות
מודולים של תכונות מאפשרים לכם לשפר את מהירות ה-build ואת מהירות ההנדסה, ולהתאים אישית באופן נרחב את הצגת התכונות של האפליקציה כדי להקטין את הגודל שלה. עם זאת, יש כמה מגבלות ומקרי קצה שצריך לזכור כשמשתמשים במודולים של תכונות:
- התקנה של 50 מודולים של תכונות או יותר במכשיר אחד, באמצעות הצגה מותנית או הצגה על פי דרישה, עלולה לגרום לבעיות בביצועים. מודולים שמותקנים בזמן ההתקנה ולא מוגדרים כניתנים להסרה, נכללים באופן אוטומטי במודול הבסיסי ונחשבים רק כמודול אחד של תכונות בכל מכשיר.
- הגבילו את מספר המודולים שאתם מגדירים כניתנים להסרה במסירה בזמן ההתקנה ל-10 או פחות. אחרת, זמן ההורדה וההתקנה של האפליקציה עלול להתארך.
- רק מכשירים עם Android בגרסה 5.0 (רמת API 21) ומעלה תומכים בהורדה ובהתקנה של תכונות על פי דרישה. כדי שהתכונה תהיה זמינה בגרסאות קודמות של Android, צריך להפעיל את האפשרות Fusing כשיוצרים מודול של תכונות.
- מפעילים את SplitCompat, כדי שלאפליקציה תהיה גישה למודולים של תכונות שהורדו ומועברים על פי דרישה.
- במודולים של תכונות לא צריך לציין פעילויות במניפסט שלהם עם
android:exportedשמוגדר כ-true. הסיבה לכך היא שאין ערובה לכך שהמכשיר הוריד את מודול של תכונות כשאפליקציה אחרת מנסה להפעיל את ה-Activity. בנוסף, האפליקציה צריכה לוודא שהתכונה הורדה לפני שהיא מנסה לגשת לקוד ולמשאבים שלה. מידע נוסף זמין במאמר ניהול מודולים מותקנים. - כדי להשתמש בהפצת פיצ'רים ב-Play, צריך לפרסם את האפליקציה באמצעות App Bundle. לכן חשוב להכיר את הבעיות הידועות שקשורות ל-App Bundle.
מסמך עזר בנושא מניפסט של מודול תכונות
כשיוצרים מודול של תכונות חדשות באמצעות Android Studio, סביבת הפיתוח המשולבת (IDE) כוללת את רוב מאפייני המניפסט שהמודול צריך כדי לפעול כמו מודול של תכונות. בנוסף, מערכת ה-build מוסיפה מאפיינים מסוימים בזמן הקימפול, כך שאין צורך לציין או לשנות אותם בעצמכם. בטבלה הבאה מתוארים מאפייני המניפסט שחשובים למודולים של תכונות.
| מאפיין | תיאור |
|---|---|
| <manifest | זהו בלוק
<manifest> אופייני. |
| xmlns:dist="http://schemas.android.com/apk/distribution" | מציין מרחב שמות חדש של dist: XML שמתואר בהמשך. |
| split="split_name" |
כשמפתחים את ה-App Bundle ב-Android Studio, המאפיין הזה נכלל באופן אוטומטי. לכן, אתם לא צריכים לכלול או לשנות את המאפיין הזה בעצמכם.
מגדיר את שם המודול, שהאפליקציה מציינת כשמבקשים מודול על פי דרישה באמצעות ספריית הפצת הפיצ'רים ב-Play. איך Gradle קובע את הערך של המאפיין הזה: כברירת מחדל, כשיוצרים מודול של תכונות באמצעות Android Studio, סביבת הפיתוח המשולבת (IDE) משתמשת בערך שציינתם בתור Module name כדי לזהות את המודול כפרויקט משנה של 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 מטפלות בנתונים כדי לעבד בקשות ספציפיות מהאפליקציה.
API לשפות נוספות
| נתונים שנאספים על השימוש | רשימת השפות המותקנות |
| מטרת איסוף הנתונים | הנתונים שנאספים משמשים כדי לספק גרסאות של האפליקציה בשפות שונות, וכדי לשמור את השפות שהותקנו אחרי עדכון האפליקציה. |
| הצפנת הנתונים | הנתונים מוצפנים. |
| שיתוף נתונים | הנתונים לא מועברים לצדדים שלישיים. |
| מחיקת נתונים | הנתונים נמחקים אחרי תקופת שמירה קבועה. |
הפצת פיצ'רים ב-Play
| נתונים שנאספים על השימוש |
מטא-נתונים של המכשיר גרסת האפליקציה |
| מטרת איסוף הנתונים | הנתונים שנאספים משמשים להצגת המודול המתאים במכשיר ולשמירה על המודולים המותקנים לאחר עדכון, גיבוי ושחזור. |
| הצפנת הנתונים | הנתונים מוצפנים. |
| שיתוף נתונים | הנתונים לא מועברים לצדדים שלישיים. |
| מחיקת נתונים | הנתונים נמחקים אחרי תקופת שמירה קבועה. |
אנחנו שואפים להיות שקופים ככל האפשר, אבל אתם האחראים הבלעדיים להחליט איך לענות על השאלות בטופס של סעיף אבטחת הנתונים ב-Google Play בנוגע לאיסוף, השיתוף והאבטחה של נתוני המשתמשים באפליקציה.