המרה של משחק קיים למשחק ללא התקנה

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

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

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

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

אפשר לפתח משחקים ל-Google Play ללא התקנה באמצעות Unity (עם או בלי התוסף Google Play ללא התקנה Unity),‏ Cocos2D,‏ Android Studio או מנוע מותאם אישית משלכם.

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

בנוסף, לפני פרסום משחק שאפשר להריץ ב-Google Play Instant, כדאי לעיין ברשימת המשימות של הדרישות הטכניות.

פעילות שכוללת את מסנן הכוונות הבא הופכת לנקודת הכניסה לחוויית Google Play ללא התקנה:

<activity android:name=".GameActivity">
   <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

הפעילות הזו מופעלת כשמשתמש מקיש על הלחצן אפשר לנסות ב-Play Store או על הלחצן הפעלה מיידית באפליקציית Google Play Games. אפשר גם להפעיל את הפעילות הזו ישירות באמצעות deep link API.

הגדרת קודי הגרסה הנכונים

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

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

  • מפעילים מחדש את קודי הגרסה של חוויית השימוש באפליקציה ללא התקנה ב-Google Play, החל מ-1.
  • כדי לוודא שיש מספיק מקום להגדלת מספר הגרסה של האפליקציה ללא התקנה, צריך להגדיל את קוד הגרסה של האפליקציה להתקנה במספר גדול, כמו 1,000.

אפשר לפתח את המשחק ללא התקנה ואת המשחק שניתן להתקנה בשני פרויקטים נפרדים ב-Android Studio. עם זאת, אם תעשו זאת, תצטרכו לבצע את הפעולות הבאות כדי לפרסם את המשחק ב-Google Play:

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

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

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

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

ביטול ההסכמה לשימוש בתנועה בטקסט גלוי

משחקים ב-Google Play ללא התקנה לא תומכים בתנועת HTTP. אם המשחק שלכם מיועד ל-Android 9 (רמת API‏ 28) או לגרסה מתקדמת יותר, מערכת Android משביתה את התמיכה בטקסט גלוי במשחק כברירת מחדל.

עם זאת, אם המשחק שלכם מטרגט Android 8.1 (רמת API ‏27) ומטה, אתם צריכים ליצור קובץ Network Security Config. בקובץ הזה, מגדירים את cleartextTrafficPermitted ל-false, כמו בקטע הקוד הבא:

res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

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

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

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

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

לא להסתמך על נוכחות של מטמון או נתוני אפליקציה

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

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

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

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

צמצום גודל האפליקציה

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

כלים

רשימת הכלים הבאה יכולה לעזור לכם לקבוע מה תורם לגודל המשחק:

  • הכלי לניתוח APK: מספק תצוגה הוליסטית של התוכן של APK שעבר קומפילציה. בתצוגה הזו אפשר לראות את מספר הבייטים שכל רכיב תורם לגודל הכולל. אפשר להשתמש בכלי הזה כדי לבדוק במהירות את הגודל של המשאבים, הנכסים, הלוגיקה והספריות המקוריות שבהם המשחק משתמש.
  • Bloaty McBloatface: מציג את פרופיל הגודל של קבצים בינאריים.
  • Android GPU Inspector: אפשר לראות את ההשפעה של הקטנת גודל הטקסטורה על גודל הקובץ בלי להדר מחדש את המשחק.

טכניקות

ריכזנו כאן כמה שיטות שיעזרו לכם להקטין את הגודל של המשחק:

  • כדאי לחלץ חלק מהלוגיקה של המשחק ולהציב אותה במודולים של תכונות, שלא נכללים במגבלת הגודל.
  • להקטין את הרזולוציה של הטקסטורות במשחק.
  • כדאי להשתמש בפורמט WebP, במיוחד אם אתם משתמשים בטקסטורות לא דחוסות ב-GPU. פורמט WebP יוצר תמונות באיכות זהה לתמונות JPEG, אבל בגודל קטן יותר ב-15% עד 30%. למרות שלוקח יותר זמן לבצע דקומפרסיה של תמונות WebP, זמן הדקומפרסיה הזה עדיין קצר משמעותית מזמן ההורדה של הטקסטורות במשחק. בנוסף, Google שילבה את הפורמט במנוע משחקים בקוד פתוח.
  • דחיסה או שימוש חוזר בצלילים ובמוזיקה.
  • כדי להקטין את הקובץ הבינארי, אפשר להשתמש בדגלי קומפילציה שונים:
    • -fvisibility=hidden – החשוב ביותר. ב-cmake, אפשר לציין את זה באופן הבא:
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz – חשוב גם להקטנת הגודל. אם אתם מבצעים קומפילציה באמצעות gcc, אתם צריכים להשתמש ב--Os.
    • -flto – לפעמים מקטין את גודל הקובץ.
    • דגלי מקשר – משתמשים בדגל --gc-sections בשילוב עם דגלי קומפיילר, כמו -ffunction-sections ו--fdata-sections.
  • אפשר להשתמש ב-Proguard כדי לצמצם את הקוד והמשאבים.
  • כדי ליצור קובצי DEX קטנים יותר, צריך להשתמש ב-Gradle גרסה 4.4 ואילך.
  • הטמעה של העברת נכסים בענן.

חלוקת משחק גדול למספר קובצי APK

יכול להיות שיהיה קשה לבצע אופטימיזציה של חוויית השימוש באפליקציה ללא התקנה ב-Google Play כדי שהמשחק יתאים לקובץ APK יחיד בגודל 15 MB, גם אחרי שמיישמים את ההמלצות להקטנת גודל ה-APK. כדי להתמודד עם הבעיה הזו, אפשר לחלק את המשחק לכמה חבילות APK. השחקנים מתחילים בהורדה של קובץ ה-APK הראשי והבסיסי. בזמן שהם משחקים, שאר חבילות ה-APK המפוצלות זמינות למשחק ברקע.

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

אימוץ שיטות מומלצות לחוויית משתמש

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

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

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

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

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

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

הצגת בקשה להתקנה

אם יצרתם חוויית ניסיון של Google Play ללא התקנה, בשלב מסוים המשחק צריך להציג לשחקן הנחיה להתקין את הגרסה המלאה במכשיר שלו. כדי לעשות את זה, משתמשים ב-method ‏showInstallPrompt() ב-Google APIs for Android.

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

העברת נתונים לחוויה מותקנת

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

אם המשחק שלכם מציין targetSandboxVersion בסך 2, ההתקדמות של השחקן מועברת אוטומטית לגרסה המלאה של המשחק. אחרת, תצטרכו להעביר את הנתונים שקשורים להתקדמות השחקן באופן ידני. כדי לעשות זאת, משתמשים ב-Cookie API – אפליקציה לדוגמה

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

מידע נוסף על Google Play Instant זמין במקורות הבאים:

Codelab: Build Your First Instant App
הוספת תמיכה ב-Google Play ללא התקנה לאפליקציה קיימת.
Codelab: Build a Multi-Feature Instant App
הפיכת אפליקציה עם כמה תכונות למודולרית.