יצירת App Bundle שמופעלת ללא התקנה

אזהרה: התכונה '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 Instant מריץ קובצי App Bundle שמופעלים ללא התקנה בסוג מיוחד של ארגז חול SELinux, כדי לספק אבטחה נוספת. ארגז החול הזה מאפשר להשתמש בחלק מההרשאות, וגם בסוגים מוגבלים של אינטראקציות עם אפליקציות אחרות. בקטעים הבאים מוסברות התכונות של ארגז החול הזה בפירוט רב יותר.

הרשאות ופעולות נתמכות

קובצי App Bundle בגרסה ללא התקנה יכולים להשתמש רק בהרשאות מהרשימה הבאה:

טיפול בהרשאות נפוצות שלא נתמכות

בהמשך מפורטות הרשאות נפוצות שלא נתמכות, שצריך להסיר מהאפליקציה, ומוסבר איך מומלץ להעביר כל אחת מהן:

  • 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 ללא התקנה, צריך להגדיר בקפידה כמה היבטים של חבילת האפליקציה שמופעלת ללא התקנה. בקטעים הבאים נרחיב על השיקולים האלה.

הצהרה על תלות של הפרויקט במשאבים

כדי להשתמש ב-Google Play Instant APIs באפליקציה, צריך לכלול את ההצהרה הבאה בקובץ ההגדרות build.gradle של מודול האפליקציה:

Groovy

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:

  1. משתמשים באותו שם חבילה בשני הפרויקטים של Android Studio.
  2. ב-Google Play Console, מעלים את שני הווריאנטים לאותה אפליקציה.

פרטים נוספים על הגדרת הגרסה של האפליקציה זמינים במאמר בנושא הגדרת גרסה לאפליקציה.

עדכון גרסת ארגז החול של היעד

צריך לעדכן את קובץ AndroidManifest.xml של האפליקציה ללא התקנה כדי לטרגט את סביבת הארגז חול שנתמכת על ידי Google Play ללא התקנה. כדי להשלים את העדכון הזה, צריך להוסיף את המאפיין android:targetSandboxVersion לרכיב <manifest> של האפליקציה, כמו שמוצג בקטע הקוד הבא:

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

מידע נוסף מופיע במאמר בנושא מאפיין targetSandboxVersion.

הצהרה על מודולים של אפליקציות שמופעלות ללא התקנה

אפשר להצהיר שחבילת האפליקציה תומכת בחוויות מיידיות באחת מהשיטות הבאות:

  • אם יש לכם קובץ App Bundle קיים שמכיל רק מודול בסיסי, אתם יכולים להפעיל את האפשרות 'ללא התקנה' בקובץ App Bundle באופן הבא:

    1. פותחים את החלונית Project (פרויקט) על ידי בחירה באפשרות View > Tool Windows > Project (תצוגה > חלונות כלים > פרויקט) בסרגל התפריטים.
    2. לוחצים לחיצה ימנית על מודול הבסיס, שבדרך כלל נקרא app, ובוחרים באפשרות Refactor > Enable Instant Apps Support (שינוי מבנה > הפעלת תמיכה באפליקציות מיידיות).
    3. בתיבת הדו-שיח שמופיעה, בוחרים את מודול הבסיס מהתפריט הנפתח.
    4. לוחצים על אישור.

    ‫Android Studio מוסיף את ההצהרה הבאה למניפסט של המודול:

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  • אם יש לכם חבילת אפליקציה קיימת שמכילה כמה מודולים, אתם יכולים ליצור מודול תכונות שמופעל ללא התקנה. במהלך התהליך הזה, מופעל באופן מיידי גם מודול הבסיס של האפליקציה, כך שאפשר לתמוך בכמה נקודות כניסה מיידיות באפליקציה.

הוספת תמיכה בכניסה לחשבון

אם חוויית השימוש המיידית מאפשרת למשתמשים להיכנס לחשבון, חבילת האפליקציה ללא התקנה חייבת לתמוך ב-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

כדי לבדוק את חוויית השימוש המיידית באפליקציה במחשב מקומי באמצעות Android Studio, פועלים לפי השלבים הבאים:

  1. אם במכשיר הבדיקה מותקנת גרסה של האפליקציה, צריך להסיר אותה.
  2. ב-Android Studio, באפשרויות ההתקנה שמופיעות בכרטיסייה General בתיבת הדו-שיח Run/Debug Configurations, מסמנים את התיבה Deploy as instant app.
  3. בסרגל התפריטים, בוחרים באפשרות Run > Run (הפעלה > הפעלה), או לוחצים על Run (הפעלה) בסרגל הכלים, ואז בוחרים את המכשיר שבו רוצים לבדוק את החוויות המיידיות של האפליקציה. האפליקציה ללא התקנה תיטען במכשיר הבדיקה שבחרתם.

ממשק שורת הפקודה (CLI)

כדי לבדוק את חוויית השימוש המיידי באפליקציה במחשב מקומי באמצעות שורת הפקודה, צריך לבצע את השלבים הבאים:

  1. אם במכשיר הבדיקה מותקנת גרסה של האפליקציה, צריך להסיר אותה.
  2. מבצעים העברה צדדית של האפליקציה ללא התקנה ומריצים אותה במכשיר הבדיקה באמצעות הפקודה הבאה:
ia run output-from-build-command

מסלול לבדיקה פנימית

כדי לבדוק את החוויה המיידית של האפליקציה מחנות Play או מבאנר באתר, צריך לפרסם את האפליקציה במסלול הבדיקה הפנימי ב-Play Console.

כדי לפרסם את האפליקציה במסלול הבדיקה הפנימי, מבצעים את השלבים הבאים:

  1. מעלים את קובץ ה-App Bundle לפי השלבים במדריך העלאת קובץ App Bundle ל-Play Console.
  2. מכינים את ה-App Bundle שהועלה לפרסום במסלול הבדיקה הפנימית. מידע נוסף זמין במאמר התמיכה בנושא הכנה והשקה של גרסאות.
  3. מתחברים לחשבון של בודק פנימי במכשיר, ואז מפעילים את החוויה המיידית מאחד המקומות הבאים:

    • הלחצן אפשר לנסות עכשיו בדף האפליקציה בחנות Play.
    • קישור מבאנר באתר של האפליקציה.

פרסום קובץ ה-App Bundle במסלול לסביבת הייצור

כדי לפרסם חבילת אפליקציות עם אפליקציות מיידיות, פועלים לפי השלבים הבאים:

  1. אם עדיין לא עשיתם זאת, חתמו על ה-App Bundle באמצעות מפתח הפצה והעלו את ה-App Bundle ל-Play Console.
  2. ב-Play Console, פותחים את ניהול הפצה > אפליקציות מיידיות ל-Android, ואז עוברים אל מסלול הפקה של אפליקציה מיידית.
  3. בוחרים באפשרות עדכון מהספרייה, ואז בוחרים בחבילת האפליקציות עם ההפעלה המיידית שהעליתם.

בחירת המיקום לפרסום החוויה המיידית

אפשר להפעיל חוויה מיידית של האפליקציה בחלק מהמדינות והאזורים שבהם אנשים יכולים להתקין את האפליקציה. האפשרות הזו שימושית במקרים שבהם רוצים לקדם את החוויה המיידית של האפליקציה למשתמשים שמתגוררים בקבוצה מסוימת של מדינות ואזורים.

מקורות מידע נוספים

מידע נוסף על יצירת חוויות מיידיות וקובצי Android App Bundle זמין במקורות המידע הבאים:

סרטון: חבילת אפליקציה באפליקציה ללא התקנה
בסרטון הזה מ-Android Dev Summit ‏2018 מוסבר איך להוסיף חוויה מיידית לחבילת אפליקציות ל-Android.
סרטון: פרסום אפליקציות קטנות יותר באמצעות קובץ Android App Bundle
כאן מוסבר איך חבילות App Bundle עוזרות לפתח את האפליקציה מהר יותר וליצור קובצי APK קטנים יותר למשתמשים.
Codelab: קובץ Android App Bundle ראשון
מדריך מפורט ליצירת קובץ Android App Bundle ולהוספת תכונות אליו
הפורמט של קובץ Android App Bundle
מידע נוסף על האופן שבו תוכנית שורת הפקודה bundletool מארגנת חבילת אפליקציות מתוך הקוד והמשאבים של האפליקציה