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

שימו לב: התכונה 'Google Play ללא התקנה' לא תהיה זמינה יותר. החל מדצמבר 2025, לא תהיה אפשרות לפרסם אפליקציות ללא התקנה דרך Google Play, וכל ממשקי Instant API של Google Play Services יפסיקו לפעול. המשתמשים לא יקבלו יותר אפליקציות מיידיות מ-Play באמצעות מנגנון כלשהו.

אנחנו מבצעים את השינוי הזה על סמך משוב שקיבלנו ממפתחים וההשקעות המתמשכות שלנו בשיפור הסביבה העסקית מאז השקת Google Play ללא התקנה.

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

כדי ליצור חוויית שימוש מיידי ב-Google Play, צריך לכלול אותה כחלק מקובץ Android App Bundle. חבילה כזו נקראת קובץ AAB בגרסה ללא התקנה. במאמר הזה מוסבר איך להגדיר את סביבת הפיתוח לקובצי AAB של גרסאות ללא התקנה, וגם איך להגדיר, ליצור, לבדוק ולפרסם קובץ AAB של גרסה ללא התקנה.

אם יש לכם פרויקט קיים של אפליקציה ללא התקנה שמשתמש בתוסף התכונות שהוצא משימוש (com.android.feature), כדאי לקרוא איך להעביר את האפליקציה ללא התקנה כדי לתמוך ב-Android App Bundle.

הגדרת סביבת פיתוח

כדי לספק חוויית שימוש מיידי בתוך קובץ AAB, צריך לקבל גישה ל-SDK של Google Play ללא התקנה. אפשר להתקין את ה-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 ללא התקנה מריצה חבילות 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 Cloud Messaging ‏ (FCM). כדי ש-FCM יפעל, לא נדרשות הרשאות נוספות.

בנוסף, חבילות App Bundle בגרסה ללא התקנה לא יכולות:

גישה לאפליקציות מותקנות

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

  • באחת או יותר מהפעילויות באפליקציה שהתקנת, הרכיב android:visibleToInstantApps הוגדר לערך trueהרכיב הזה זמין לאפליקציות שפועלות ב-Android 8.0 (רמת API‏ 26) ומעלה.
  • אפליקציה מותקנת מכילה מסנן Intent שכולל את CATEGORY_BROWSABLE.
  • חוויית השימוש המיידי שולחת כוונה באמצעות הפעולה ACTION_SEND, ACTION_SENDTO או ACTION_SEND_MULTIPLE.

הגדרת הפרויקט ליצירת חוויות מיידיות

כדי שהאפליקציה שלכם תהיה תואמת ל-Google Play ללא התקנה, אתם צריכים להגדיר בקפידה כמה היבטים של קובץ ה-AAB שמופעל ללא התקנה. בקטעים הבאים נפרט את השיקולים האלה.

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

כדי להשתמש ב-Google Play ללא התקנה APIs באפליקציה, צריך לכלול את ההצהרה הבאה בקובץ ההגדרות 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:

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

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

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

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

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

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

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

אפשר להצהיר שקובץ ה-AAB של האפליקציה תומך בחוויות שימוש מיידי באחת מהדרכים הבאות:

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

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

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

אם חוויית השימוש המיידית מאפשרת למשתמשים להיכנס לחשבון, חבילת האפליקציות בגרסה ללא התקנה חייבת לתמוך ב-Smart Lock לסיסמאות ב-Android. אם אתם מפתחים משחק "משחק מיידי", אתם צריכים להשתמש בכניסה באמצעות Google Play Games Services במקום זאת.

תמיכה בסביבת ההפעלה

כדי שהאפליקציה תהיה תואמת לארגז החול של SELinux שבו פועלות חוויות שימוש מיידי, חשוב לזכור את הנקודות הבאות כשיוצרים קובץ AAB שמופעל ללא התקנה:

  • אל תשתפו את הערך של myUid(), שהוא מזהה המשתמש (UID) שהוקצה לגרעין של תהליך האפליקציה.
  • אם האפליקציה שלכם מיועדת ל-Android 8.1 (רמת API‏ 27) או לגרסאות קודמות, צריך ליצור קובץ Network Security Config ולהגדיר את cleartextTrafficPermitted ל-false. אין תמיכה בתנועת HTTP בחוויות מיידיות. באפליקציות שמטרגטות ל-Android מגרסה 9 ואילך, תעבורת טקסט גלוי מושבתת כברירת מחדל.
  • החוויה המיידית תישאר במכשיר של המשתמש עד שהמטמון של החוויה המיידית יימחק. זה קורה באחד מהמקרים הבאים:

    • המטמון של חוויית השימוש המיידי עובר איסוף אשפה כי הזיכרון הזמין במכשיר נמוך.
    • המשתמש מפעיל מחדש את המכשיר.

    אם אחד מהתהליכים האלה מתרחש, המשתמש צריך להוריד מחדש את חוויית השימוש המיידי כדי להשתמש בה.

  • אם נפח האחסון במערכת נמוך מאוד, יכול להיות שנתוני המשתמשים של'החוויה המיידית' יוסרו מהאחסון הפנימי. לכן, מומלץ לסנכרן מעת לעת את נתוני המשתמשים עם השרת של האפליקציה כדי לשמור על ההתקדמות של המשתמש.

הוספת לוגיקה לתהליכי עבודה של חוויית שימוש מיידי

אחרי שמגדירים את קובץ ה-AAB כך שיתמוך בחוויות שימוש מיידיות, מוסיפים את הלוגיקה שמוצגת בקטעים הבאים.

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

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

הרכבת קובץ AAB

אתם יכולים להשתמש ב-Android Studio או בממשק שורת הפקודה כדי ליצור את קובץ ה-AAB של האפליקציה בגרסה ללא התקנה.

Android Studio

כדי ליצור קובץ AAB באמצעות Android Studio, בוחרים באפשרות Build (יצירה) > Build Bundle(s) / APK(s) (יצירת קובצי Bundle או APK) > Build Bundle(s) (יצירת קובצי Bundle). מידע נוסף על בניית הפרויקט זמין במאמר בניית הפרויקט.

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

אפשר גם ליצור את קובץ ה-AAB משורת הפקודה באמצעות Gradle.

תמיכה בארכיטקטורות של 64 ביט

אפליקציות שמתפרסמות ב-Google Play צריכות לתמוך בארכיטקטורות של 64 ביט. הוספה של גרסת 64 ביט לאפליקציה משפרת את הביצועים ומכינה אתכם למכשירים עם חומרה שתומכת ב-64 ביט בלבד. מידע נוסף על תמיכה ב-64 ביט

בדיקת חוויית השימוש המיידית

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

Android Studio

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

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

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

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

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

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

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

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

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

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

פרסום קובץ AAB במסלול לסביבת הייצור

כדי לפרסם קובץ AAB של גרסה ללא התקנה, השלימו את השלבים הבאים:

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

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

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

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

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

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