פתרון בעיות במשחק ל-Android

הדף הזה מסביר איך לפתור בעיות שאתם עשויים להיתקל בהן במהלך הפיתוח של Android משחקים עם Play Games SDK.

לא ניתן להיכנס

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

בדיקה של תגי המטא-נתונים

AndroidManifest.xml חייב להכיל תג מטא-נתונים של משחקים. כדי לאמת זאת תגי המטא-נתונים שלכם מוגדרים בצורה תקינה:

  1. פותחים את AndroidManifest.xml ומוודאים שהוא מכיל תג meta-data כמו שמוצג בהמשך:

    <meta-data android:name="com.google.android.gms.games.APP_ID"
        android:value="@string/app_id" />
    
  2. מאתרים את ההגדרה של המשאב @string/app_id. בדרך כלל מוגדר בקובץ XML נמצאים בספרייה res/xml, לדוגמה res/xml/strings.xml או res/xml/ids.xml.

  3. מוודאים שהערך של המשאב @string/app_id תואם למזהה המספרי של האפליקציה. הערך של המשאב הזה יכול להכיל רק ספרות. לדוגמה:

    <string name="app_id">123456789012</string>
    

בדיקת שם החבילה

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

  1. צריך לפתוח את AndroidManifest.xml ולוודא ששם החבילה של המשחק נכון. החבילה name הוא הערך של המאפיין package בתג manifest.
  2. צריך לאמת את שם החבילה שסיפקתם כשיצרתם את מזהה הלקוח. כדי לאמת את שם החבילה ב Google Play Console, עוברים אל Google Play Console ולוחצים על הרשומה המתאימה למשחק. עוברים לכרטיסייה אפליקציות מקושרות ובודקים את הרשימה של מזהי הלקוח. צריך להיות קישור ל-Android האפליקציה ברשימה הזו ששם החבילה שלה תואם לשם החבילה בAndroidManifest.xml.
  3. אם יש חוסר התאמה, צריך ליצור מזהה לקוח חדש עם שם החבילה הנכון ולנסות להיכנס שוב.

בדיקה של טביעת האצבע לאישור

האישור שאיתו מתבצעת חתימה על המשחק צריך להיות תואם לטביעת האצבע של האישור המשויך למזהה הלקוח שלך. כדי לוודא זאת, קודם צריך לבדוק את טביעת האצבע ב-SHA1 של האישור:

  1. מאתרים את קובץ האישור ומשיגים את טביעת האצבע מסוג SHA1. כדי לקבל את טביעת אצבע SHA1, מריצים את הפקודה הבאה:

    keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
    
  2. חשוב לשים לב לרצף הספרות ההקסדצימליות שמסומנות בתווית SHA1: הפלט. זו טביעת האצבע של האישור.

בשלב הבא, צריך לוודא שכלי ה-build משתמש באישור הזה:

  1. יוצרים את ה-APK של המשחק מכלי ה-build וחותמים עליו עם אישור. מעתיקים את ה-APK שנוצר לספרייה זמנית.
  2. בספרייה הזמנית, מריצים את הפקודה הבאה כדי לחלץ את קובץ ה-APK.

    unzip YourGame.apk
    
  3. יצירת מפתח פרטי באמצעות קובץ אישור RSA:

    keytool -printcert -file META-INF/CERT.RSA
    

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

    keytool -printcert -file META-INF/CERT.DSA
    
  4. חשוב לשים לב לרצף של הספרות ההקסדצימליות בשורה SHA1:.

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

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

  1. פותחים את Google Play Console ועוברים למשחק.
  2. בדף פרטי המשחק, גוללים לחלק התחתון ולוחצים על הקישור לפרויקט Google Cloud Platform שמקושר.
  3. ב-Google Cloud Platform, בוחרים את הפרויקט.
  4. בסרגל הצד שמימין, בוחרים באפשרות APIs & auth. צריך לוודא שהאלמנטים הסטטוס של ה-API של Google Play Games Services הוא מופעל ברשימה שמוצגת של ממשקי ה-API.
  5. בסרגל הצד שמימין, בוחרים באפשרות אפליקציות רשומות.
  6. מרחיבים את הקטע 'מזהה לקוח של OAuth 2.0' ומעיינים באישור טביעת אצבע (SHA1).

אם טביעת האצבע הזו לא תואמת לטביעת האצבע של האישור את השלבים הקודמים, צריך ליצור מזהה לקוח חדש עם האישור הנכון טביעת אצבע. צריך ליצור את מזהה הלקוח החדש ב-Google Play Console, לא ב- ב-Google Cloud Platform.

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

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

  1. פותחים את Google Play Console ועוברים למשחק.
  2. פותחים את הכרטיסייה בדיקות.
  3. יש לוודא שהחשבון שאיתו מנסים להיכנס נמצא ברשימת הבודקים.

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

בעיות הגנה

אם משתמשים ב-ProGuard ומופיעות שגיאות ב-APK המעורפל, צריך לבדוק את רמת ה-API המטורגטת במכשיר AndroidManifest.xml. חשוב להגדיר אותה לערך 17 ומעלה.

סיבות אחרות לבעיות בהגדרה

מחפשים סיבות נפוצות נוספות לשגיאות:

  • אם המשחק שלכם פורסם, ודאו שגם הגדרות המשחק מתפרסמות (ייתכן ש לפרסם את האפליקציה בלי לפרסם את הגדרות המשחקים). כדי לעשות את זה, נכנסים אל עוברים לאפליקציה Google Play Console, עוברים לאפליקציה ומוודאים שהתיבה לצד שם המשחק מציינת שהיא פורסמה. אם מצוין שהוא במצב אחר, למשל 'מוכן לפרסום' או "Ready to Test" (מוכן לבדיקה), לוחצים על התיבה ובוחרים באפשרות Publish Game (פרסום המשחק).
  • אם לא ניתן לפרסם את המשחק, יש לוודא שבדיוק אחד ממזהי הלקוח מכיל את המזהה האפליקציה הזו האפשרות המועדפת להתקנות חדשות מופעלת.

מאזינים אנונימיים

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

    ImageManager im = ...;

    // Anonymous listener -- dangerous:
    im.loadImage(new ImageManager.OnImageLoadedListener() {
        @Override
        public void onImageLoaded(Uri uri, Drawable drawable) {
            // ...code...
        }
    }

מאזינים אנונימיים לא מהימנים כי ה-SDK של Play Games שומר אותם כקובצי עזר חלשים, כלומר, יכול להיות שהם ייאספו על ידי אוסף האשפה לפני שהם הופעלה. במקום זאת, צריך להטמיע את ה-listener באמצעות אובייקט קבוע כמו Activity.

    public class MyActivity extends Activity
            implements ImageManager.OnImageLoadedListener {

        private void loadOurImages() {
            ImageManager im = ...;
            im.loadImage(this);
        }

        @Override
        public void onImageLoaded(Uri uri, Drawable drawable) {
            // ...code...
        }
    }