אזהרה: התכונה 'Google Play ללא התקנה' לא תהיה זמינה יותר. החל מדצמבר 2025, לא תהיה אפשרות לפרסם אפליקציות ללא התקנה דרך Google Play, וכל ממשקי Instant API של Google Play Services יפסיקו לפעול. המשתמשים לא יקבלו יותר אפליקציות מיידיות מ-Play באמצעות מנגנון כלשהו.
אנחנו מבצעים את השינוי הזה על סמך משוב שקיבלנו ממפתחים וההשקעות המתמשכות שלנו בשיפור הסביבה העסקית מאז השקת Google Play ללא התקנה.
כדי להמשיך לבצע אופטימיזציה לצמיחת מספר המשתמשים, אנחנו ממליצים למפתחים להפנות את המשתמשים לגרסה הרגילה של האפליקציה או המשחק באמצעות קישורי עומק, כדי להפנות אותם למסלולים או לתכונות ספציפיים כשזה רלוונטי.
כדי ליצור חוויה מבוססת על טכנולוגיית 'Google Play ללא התקנה', צריך לכלול אותה כחלק מקובץ Android App Bundle. חבילה כזו נקראת חבילת App Bundle שמופעלת ללא התקנה. במסמך הזה מוסבר איך להגדיר את סביבת הפיתוח לקובצי App Bundle שמופעלים ללא התקנה, וגם איך להגדיר, ליצור, לבדוק ולפרסם קובץ App Bundle שמופעל ללא התקנה.
אם יש לכם פרויקט קיים של אפליקציה ללא התקנה שמשתמש בתוסף התכונות שהוצא משימוש (com.android.feature
), כדאי לקרוא איך להעביר את האפליקציה ללא התקנה כדי לתמוך ב-Android App Bundle.
הגדרת סביבת פיתוח
כדי לספק חוויה ללא התקנה בתוך חבילת אפליקציות, צריך לקבל גישה ל-Google Play Instant Development SDK. אפשר להתקין את ה-SDK באחת מהדרכים הבאות:
- מתקינים את Android Studio 3.6 או גרסה מתקדמת יותר. אחרי שפותחים את Android Studio, מורידים את Google Play Instant Development SDK מהכרטיסייה SDK Tools ב-SDK Manager.
התקנה משורת הפקודה:
cd path/to/android/sdk/tools/bin && \ ./sdkmanager 'extras;google;instantapps'
בנוסף, אם רוצים לבדוק את החוויה המיידית באופן מקומי, צריך לקבל גישה למכשיר פיזי או וירטואלי.
מידע על תנאי ההפעלה הנדרשים
אפליקציות ללא התקנה ב-Google Play מריצות חבילות של אפליקציות ללא התקנה בסוג מיוחד של ארגז חול של SELinux, כדי להוסיף אבטחה. ארגז החול הזה מאפשר להשתמש בחלק מההרשאות, וגם בסוגים מוגבלים של אינטראקציות עם אפליקציות אחרות. בקטעים הבאים מוסברות התכונות של ארגז החול הזה בפירוט רב יותר.
הרשאות ופעולות נתמכות
קובצי App Bundle בגרסה ללא התקנה יכולים להשתמש רק בהרשאות מהרשימה הבאה:
ACCESS_COARSE_LOCATION
ACCESS_FINE_LOCATION
ACCESS_NETWORK_STATE
-
BILLING
– הוצא משימוש החל מ-Play Billing Library 1.0. CAMERA
-
INSTANT_APP_FOREGROUND_SERVICE
– רק ב-Android מגרסה 8.0 (רמת API 26) ומעלה. INTERNET
-
READ_PHONE_NUMBERS
– רק ב-Android מגרסה 8.0 (רמת API 26) ומעלה. RECORD_AUDIO
VIBRATE
WAKE_LOCK
טיפול בהרשאות נפוצות שלא נתמכות
בהמשך מפורטת רשימה של הרשאות נפוצות שלא נתמכות, שצריך להסיר מהאפליקציה, ומוסבר איך מומלץ לבצע את ההעברה בכל מקרה:
-
ACCESS_WIFI_STATE
: משתמשים ב-ACCESS_NETWORK_STATE
, שאמור לספק מידע דומה לזה שלACCESS_WIFI_STATE
. -
BILLING
: זו הרשאה שיצאה משימוש. להשתמש בספריית החיובים ב-Google Play, שלא נדרשת בה יותר ההרשאהcom.android.vending.BILLING
. -
READ/WRITE_EXTERNAL_STORAGE
: לאפליקציות ללא התקנה אין גישה לאחסון חיצוני. במקום זאת, צריך להשתמש באחסון פנימי. -
com.google.android.c2dm.permission.RECEIVE
ו-permission.C2D_MESSAGE
: השירות C2DM הוצא משימוש. מעבר אל העברת הודעות בענן ב-Firebase (FCM). כדי ש-FCM יפעל, לא צריך הרשאות נוספות.
בנוסף, חבילות App Bundle שמופעלות ללא התקנה לא יכולות:
- שימוש בשירותים שפועלים ברקע.
- שליחת התראות כשהאפליקציה פועלת ברקע.
גישה לאפליקציות מותקנות
כשמפתחים חוויה ללא התקנה, חשוב לזכור שאי אפשר ליצור אינטראקציה עם אפליקציות מותקנות במכשיר, אלא אם אחד מהתנאים הבאים מתקיים:
- באחת או יותר מהפעילויות באפליקציה מותקנת, האלמנט
android:visibleToInstantApps
הוגדר לערךtrue
– האלמנט הזה זמין לאפליקציות שפועלות ב-Android מגרסה 8.0 (רמת API 26) ואילך. - אפליקציה מותקנת מכילה מסנן Intent שכולל את
CATEGORY_BROWSABLE
. - חוויית השימוש המיידי שולחת כוונת שימוש באמצעות הפעולה
ACTION_SEND
,ACTION_SENDTO
אוACTION_SEND_MULTIPLE
.
הגדרת הפרויקט ליצירת חוויות מיידיות
כדי שהאפליקציה תהיה תואמת ל-Google Play ללא התקנה, צריך להגדיר בקפידה כמה היבטים של חבילת האפליקציה שמופעלת ללא התקנה. בקטעים הבאים נרחיב על השיקולים האלה.
הצהרה על יחסי תלות של הפרויקט במשאבים
כדי להשתמש בממשקי ה-API של Google Play ללא התקנה באפליקציה, צריך לכלול את ההצהרה הבאה בקובץ ההגדרות build.gradle
של מודול האפליקציה:
מגניב
implementation "com.google.android.gms:play-services-instantapps:17.0.0"
Kotlin
implementation("com.google.android.gms:play-services-instantapps:17.0.0")
הגדרת קודי הגרסה הנכונים
קוד הגרסה של האפליקציה ללא התקנה צריך להיות קטן מקוד הגרסה של האפליקציה שניתנת להתקנה. המטרה היא שהמשתמשים יעברו מהאפליקציה ללא התקנה ב-Google Play להורדה ולהתקנה של האפליקציה במכשיר שלהם. במסגרת Android, המעבר הזה נחשב לעדכון של האפליקציה.
כדי לוודא שאתם פועלים לפי תוכנית ניהול הגרסאות שהמשתמשים מצפים לה, אתם יכולים לפעול לפי אחת מהאסטרטגיות הבאות:
- מפעילים מחדש את קודי הגרסה של חוויית השימוש באפליקציה ללא התקנה ב-Google Play, החל מ-1.
- כדי לוודא שיש מספיק מקום למספר הגרסה של האפליקציה ללא התקנה, צריך להגדיל את קוד הגרסה של ה-APK שניתן להתקנה במספר גדול, כמו 1,000.
אפשר לפתח את האפליקציה ללא התקנה ואת האפליקציה להתקנה בשני פרויקטים נפרדים ב-Android Studio. אבל אם תעשו את זה, תצטרכו לבצע את הפעולות הבאות כדי לפרסם את האפליקציה ב-Google Play:
- משתמשים באותו שם חבילה בשני הפרויקטים ב-Android Studio.
- ב-Google Play Console, מעלים את שני הווריאנטים לאותה אפליקציה.
פרטים נוספים על הגדרת הגרסה של האפליקציה זמינים במאמר בנושא הגדרת גרסה לאפליקציה.
עדכון גרסת ארגז החול של היעד
צריך לעדכן את קובץ AndroidManifest.xml
של האפליקציה המיידית כדי לטרגט את סביבת הארגז חול שנתמכת על ידי Google Play Instant. כדי להשלים את העדכון, מוסיפים את המאפיין android:targetSandboxVersion
לרכיב <manifest>
של האפליקציה, כמו בקטע הקוד הבא:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
...
android:targetSandboxVersion="2" ...>
מידע נוסף זמין במאמר בנושא מאפיין targetSandboxVersion
.
הצהרה על מודולים של אפליקציות ללא התקנה
אפשר להצהיר שחבילת האפליקציה תומכת בחוויות מיידיות באחת מהשיטות הבאות:
אם יש לכם קובץ App Bundle קיים שמכיל רק מודול בסיסי, אתם יכולים להפעיל את האפשרות 'אפליקציה ללא התקנה' בקובץ App Bundle באופן הבא:
- פותחים את החלונית Project (פרויקט) על ידי בחירה באפשרות View > Tool Windows > Project (תצוגה > חלונות כלים > פרויקט) בסרגל התפריטים.
- לוחצים לחיצה ימנית על מודול הבסיס, שבדרך כלל נקרא 'app', ובוחרים באפשרות Refactor > Enable Instant Apps Support (שינוי מבנה > הפעלת תמיכה באפליקציות מיידיות).
- בתיבת הדו-שיח שמופיעה, בוחרים את מודול הבסיס מהתפריט הנפתח.
- לוחצים על אישור.
Android Studio מוסיף את ההצהרה הבאה למניפסט של המודול:
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" /> ... </manifest>
אם יש לכם חבילת App Bundle קיימת שמכילה כמה מודולים, אתם יכולים ליצור מודול תכונות שמופעל ללא התקנה. במהלך התהליך הזה, מופעל באופן מיידי גם מודול הבסיס של האפליקציה, כך שאפשר לתמוך בכמה נקודות כניסה מיידיות באפליקציה.
הוספת תמיכה בכניסה לחשבון
אם חוויית השימוש המיידית מאפשרת למשתמשים להיכנס לחשבון, חבילת האפליקציה ללא התקנה חייבת לתמוך ב-Smart Lock לסיסמאות ב-Android. אם אתם מפתחים משחק "משחק מיידי", אתם צריכים להשתמש בכניסה באמצעות Google Play Games Services במקום זאת.
תמיכה בסביבת ההפעלה
כדי שהאפליקציה תהיה תואמת לארגז החול של SELinux שבו פועלות חוויות מיידיות, חשוב לזכור את הנקודות הבאות כשיוצרים קובץ App Bundle שמופעל ללא התקנה:
- אל תשתפו את הערך של
myUid()
, שהוא ה-UID שהוקצה לגרעין של תהליך האפליקציה. - אם האפליקציה שלכם מטרגטת Android 8.1 (רמת API 27) או גרסה מוקדמת יותר, צריך ליצור קובץ Network Security Config ולהגדיר את
cleartextTrafficPermitted
ל-false
. אין תמיכה בתנועת HTTP בחוויות מיידיות. באפליקציות שמטרגטות ל-Android מגרסה 9 ואילך, תנועה לא מוצפנת מושבתת כברירת מחדל. החוויה המיידית נשארת בהורדה במכשיר של המשתמש עד שמנקים את המטמון של החוויה המיידית. הניקוי מתבצע באחד מהמקרים הבאים:
- המטמון של החוויה המיידית עובר איסוף אשפה כי הזיכרון הזמין במכשיר נמוך.
- המשתמש מפעיל מחדש את המכשיר.
אם אחד מהתהליכים האלה מתרחש, המשתמש צריך להוריד מחדש את חוויית השימוש המיידי כדי ליצור איתה אינטראקציה.
אם נפח האחסון במערכת נמוך מאוד, יכול להיות שנתוני המשתמשים של החוויה המיידית יוסרו מהאחסון הפנימי. לכן, מומלץ לסנכרן מעת לעת את נתוני המשתמשים עם השרת של האפליקציה כדי לשמור על ההתקדמות של המשתמש.
הוספת לוגיקה לתהליכי עבודה של חוויות מיידיות
אחרי שמגדירים את ה-App Bundle כך שיתמוך בחוויות מיידיות, מוסיפים את הלוגיקה שמוצגת בקטעים הבאים.
איך בודקים אם האפליקציה מפעילה חוויה מיידית
אם חלק מהלוגיקה של האפליקציה תלוי בשאלה אם המשתמש פעיל בחוויה המיידית, צריך להפעיל את השיטה isInstantApp()
. השיטה הזו מחזירה true
אם התהליך שפועל כרגע הוא חוויה מיידית.
הצגת בקשה להתקנה
אם אתם מפתחים גרסת ניסיון של האפליקציה או המשחק שלכם, Google Play ללא התקנה מאפשר לכם להציג הנחיה בחוויה המיידית שלכם, שמזמינה את המשתמשים להתקין את הגרסה המלאה במכשיר שלהם. כדי להציג את ההנחיה הזו, משתמשים בשיטה InstantApps.showInstallPrompt()
, כמו שמוצג בקטע הקוד הבא:
Kotlin
class MyInstantExperienceActivity : AppCompatActivity { // ... private fun showInstallPrompt() { val postInstall = Intent(Intent.ACTION_MAIN) .addCategory(Intent.CATEGORY_DEFAULT) .setPackage(your-installed-experience-package-name) // The request code is passed to startActivityForResult(). InstantApps.showInstallPrompt(this@MyInstantExperienceActivity, postInstall, request-code, /* referrer= */ null) } }
Java
public class MyInstantExperienceActivity extends AppCompatActivity { // ... private void showInstallPrompt() { Intent postInstall = new Intent(Intent.ACTION_MAIN) .addCategory(Intent.CATEGORY_DEFAULT) .setPackage(your-installed-experience-package-name); // The request code is passed to startActivityForResult(). InstantApps.showInstallPrompt(MyInstantExperienceActivity.this, postInstall, request-code, /* referrer= */ null); } }
העברת נתונים לחוויה מותקנת
אם המשתמש נהנה מהחוויה המיידית, הוא עשוי להחליט להתקין את האפליקציה. כדי לספק חוויית משתמש טובה, חשוב שהנתונים של המשתמש יועברו מהחוויה המיידית לגרסה המלאה של האפליקציה.
אם המשתמש משתמש במכשיר עם Android בגרסה 8.0 (רמת API 26) ואילך, ואם האפליקציה שלך מציינת targetSandboxVersion
של 2
, הנתונים של המשתמש מועברים באופן אוטומטי לגרסה המלאה של האפליקציה. אחרת, צריך להעביר את הנתונים באופן ידני. כדי לעשות זאת, אפשר להשתמש באחד מממשקי ה-API הבאים:
- למשתמשים במכשירים עם Android מגרסה 8.0 (רמת API 26) ומעלה, צריך להשתמש ב-Cookie API – אפליקציה לדוגמה
- אם המשתמשים יכולים ליצור אינטראקציה עם החוויה שלכם במכשירים שמריצים Android 7.1 (API ברמה 25) ומטה, צריך להוסיף תמיכה ב-Storage API – אפליקציה לדוגמה
הרכבת קובץ App Bundle
אפשר להשתמש ב-Android Studio או בממשק שורת הפקודה כדי ליצור את קובץ ה-App Bundle של האפליקציה המיידית.
Android Studio
כדי ליצור את קובץ ה-App Bundle באמצעות Android Studio, בוחרים באפשרות Build > Build Bundle(s) / APK(s) > Build Bundle(s). מידע נוסף על בניית הפרויקט זמין במאמר בניית הפרויקט.
ממשק שורת הפקודה (CLI)
אפשר גם ליצור את חבילת האפליקציה משורת הפקודה באמצעות Gradle.
תמיכה בארכיטקטורות 64 ביט
אפליקציות שמתפרסמות ב-Google Play צריכות לתמוך בארכיטקטורות של 64 ביט. הוספה של גרסת 64 ביט לאפליקציה משפרת את הביצועים ומכינה אתכם למכשירים עם חומרה שתומכת ב-64 ביט בלבד. מידע נוסף על תמיכה ב-64 ביט
בדיקת חוויית השימוש המיידית
לפני שמפרסמים את קובץ ה-App Bundle של האפליקציה שמופעלת ללא התקנה, אפשר לבדוק את חוויית השימוש באפליקציה ללא התקנה באחד מהמקומות הבאים כדי לוודא שהיא פועלת:
- מתקינים במכשיר מקומי באמצעות Android Studio.
- התקנה במכשיר מקומי באמצעות ממשק שורת הפקודה.
- מפרסמים במסלול ההפצה לבדיקה פנימית ב-Google Play Console.
Android Studio
כדי לבדוק את חוויית השימוש המיידית באפליקציה במחשב מקומי באמצעות Android Studio, פועלים לפי השלבים הבאים:
- אם במכשיר הבדיקה מותקנת גרסה של האפליקציה, צריך להסיר אותה.
- ב-Android Studio, באפשרויות ההתקנה שמופיעות בכרטיסייה General בתיבת הדו-שיח Run/Debug Configurations, מסמנים את התיבה Deploy as instant app.
- בסרגל התפריטים, בוחרים באפשרות הפעלה > הפעלה או לוחצים על הפעלה
בסרגל הכלים, ואז בוחרים את המכשיר שבו רוצים לבדוק את החוויות המיידיות של האפליקציה. החוויה המיידית של האפליקציה נטענת במכשיר הבדיקה שבחרתם.
ממשק שורת הפקודה (CLI)
כדי לבדוק את חוויית השימוש המיידית באפליקציה במחשב מקומי באמצעות שורת הפקודה, צריך לבצע את השלבים הבאים:
- אם במכשיר הבדיקה מותקנת גרסה של האפליקציה, צריך להסיר אותה.
- מבצעים Sideloading ומריצים את האפליקציה ללא התקנה במכשיר הבדיקה באמצעות הפקודה הבאה:
ia run output-from-build-command
מסלול לבדיקה פנימית
כדי לבדוק את החוויה המיידית של האפליקציה מחנות Play או מבאנר באתר, צריך לפרסם את האפליקציה במסלול הבדיקה הפנימי ב-Play Console.
כדי לפרסם את האפליקציה במסלול הבדיקה הפנימי, מבצעים את השלבים הבאים:
- מעלים את קובץ ה-App Bundle לפי השלבים במדריך העלאת קובץ App Bundle ל-Play Console.
- מכינים את ה-App Bundle שהועלה לפרסום במסלול הבדיקה הפנימית. מידע נוסף זמין במאמר התמיכה בנושא הכנה והשקה של גרסאות.
נכנסים לחשבון של בודק פנימי במכשיר, ואז מפעילים את החוויה המיידית מאחד המקומות הבאים:
- הלחצן אפשר לנסות עכשיו בדף האפליקציה בחנות Play.
- קישור מבאנר באתר של האפליקציה.
פרסום קובץ ה-App Bundle במסלול לסביבת הייצור
כדי לפרסם חבילת אפליקציות עם אפליקציות מיידיות, פועלים לפי השלבים הבאים:
- אם עדיין לא עשיתם זאת, חתמו על ה-App Bundle באמצעות מפתח להפצה והעלו את ה-App Bundle ל-Play Console.
- ב-Play Console, פותחים את ניהול הפצה > אפליקציות מיידיות ל-Android, ואז עוברים אל מסלול הפקה של אפליקציה מיידית.
- בוחרים באפשרות עדכון מהספרייה ואז בוחרים בחבילת האפליקציות עם ההפעלה המיידית שהעליתם.
בחירת המיקום לפרסום החוויה המיידית
אפשר להפעיל חוויה מיידית של האפליקציה רק בחלק מהמדינות והאזורים שבהם אנשים יכולים להתקין את האפליקציה. האפשרות הזו שימושית במקרים שבהם רוצים לקדם את החוויה המיידית של האפליקציה למשתמשים שמתגוררים בקבוצה מסוימת של מדינות ואזורים.
מקורות מידע נוספים
מידע נוסף על יצירת חוויות מיידיות וקובצי Android App Bundle זמין במקורות המידע הבאים:
- סרטון: איך מאגדים אפליקציה באפליקציה ללא התקנה
- בסרטון הזה מ-Android Dev Summit 2018 מוסבר איך להוסיף חוויה מיידית לחבילת אפליקציות ל-Android.
- סרטון: פרסום אפליקציות קטנות יותר באמצעות קובץ Android App Bundle
- איך חבילות App Bundle עוזרות לפתח את האפליקציה מהר יותר וליצור קובצי APK קטנים יותר למשתמשים
- Codelab: Your First Android App Bundle
- מדריך מפורט ליצירת קובץ Android App Bundle ולהוספת תכונות אליו
- הפורמט של קובץ Android App Bundle
- מידע נוסף על האופן שבו תוכנית שורת הפקודה
bundletool
מארגנת חבילת אפליקציות מקוד האפליקציה והמשאבים שלה