排解 Android 遊戲問題

本頁說明如何排解開發 Android 時可能遇到的問題 遊戲。

無法登入

如果您無法讓玩家登入遊戲,首先請確認您已按照 有關建立用戶端 ID設定遊戲服務。如果您仍遇到登入問題 錯誤訊息,請檢查下列項目,確認遊戲設定正確無誤。

檢查中繼資料標記

您的 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 資源的定義。這項定義通常位於 res/xml 目錄的特定 XML 檔案中,例如 res/xml/strings.xmlres/xml/ids.xml

  3. 確認 @string/app_id 資源的值與應用程式的數字 ID 相符。此資源的值只能包含數字。例如:

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

檢查套件名稱

您遊戲的套件名稱必須與用戶端 ID 的套件名稱相符。如何驗證套件名稱:

  1. 開啟 AndroidManifest.xml 並確認遊戲套件名稱是否正確。包裹 name 是 manifest 標記中 package 屬性的值。
  2. 建立用戶端 ID 時,請確認您提供的套件名稱。如何確認 前往 Google Play 管理中心,按一下與遊戲對應的項目。 前往「Linked Apps」分頁,檢查用戶端 ID 清單。必須連結 Android 應用程式,其套件名稱與 AndroidManifest.xml 中的套件名稱相符。
  3. 如果套件名稱不符,請使用正確的套件名稱建立新用戶端 ID,然後嘗試登入 可以選取「重新建立」,再次生成新的提示

檢查憑證指紋

用來簽署遊戲的憑證必須與憑證指紋相符 。如要驗證身分,請先檢查憑證的 SHA1 指紋:

  1. 找到您的憑證檔案並取得其 SHA1 指紋。若要取得 SHA1 指紋,請執行以下指令:

    keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
    
  2. 記下字串中標示為 SHA1: 的十六進位數列 輸出內容此數字即為憑證的指紋。

接著,檢查建構工具是否使用這個憑證:

  1. 透過建構工具產生遊戲的 APK,並使用要驗證的憑證簽署 APK。將產生的 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: 的行,並記下其中的十六進位數列。

    此數列應該與 上一個步驟如果不相符,代表建構工具或系統未設定為使用憑證簽署應用程式。在這種情況下,請參閱建構環境的說明文件,瞭解如何正確設定建構環境,然後再次嘗試登入。

接著,檢查憑證指紋是否與設定的指紋相符 。步驟如下:

  1. 開啟 Google Play 管理中心,前往您的遊戲。
  2. 在「遊戲詳細資料」頁面中,往下捲動到底部,按一下指向已連結 Google Cloud Platform 專案的連結。
  3. 在 Google Cloud Platform 中選取專案。
  4. 點選左側欄的「APIs & auth」。查看系統顯示的 API 清單,並確認 Google Play Games Services API 的狀態是「ON」
  5. 點選左側欄的「Registered apps」。
  6. 展開 OAuth 2.0 用戶端 ID 區段,然後記下憑證 指紋 (SHA1)。

如果這個指紋與您在前幾個步驟中取得的憑證指紋不相符,則必須使用正確的憑證指紋建立新用戶端 ID。您必須透過 Google Play 管理中心 (而非 Google Cloud Platform

檢查測試帳戶是否已啟用

發布遊戲之前,您透過 Google Play 管理中心建立遊戲時所用的帳戶也必須 啟用並做為測試人員如要檢查設定是否正確,請按照下列步驟操作:

  1. 開啟 Google Play 管理中心,前往您的遊戲。
  2. 開啟「測試」分頁。
  3. 檢查您嘗試用來登入的帳戶是否在測試人員清單中。

如果您嘗試登入的帳戶不在清單中,請將其加入清單中,稍待幾分鐘 然後再次嘗試登入。

Proguard 問題

如果您使用 Proguard 而且模糊 APK 會顯示錯誤訊息,請檢查目標 API 級別 「AndroidManifest.xml」。並確實將其設為 17 以上。

其他造成設定問題的原因

檢查其他造成錯誤的常見原因:

  • 如果您已經發布遊戲,請檢查遊戲設定是否也發布完成 (也可能是 並在不發布遊戲設定的情況下發布應用程式)。方法是前往 Google Play 管理中心,然後前往您的應用程式,勾選遊戲名稱旁邊的方塊中指出的 發布後的畫面如果指出應用程式處於其他狀態,例如「已可發布」或「可供測試」,請按一下方塊並選取「發布遊戲」
  • 如果無法發布遊戲,請確認只有一個用戶端 ID 啟用了「這個應用程式適合新的使用者優先安裝」選項。

匿名事件監聽器

請勿使用匿名事件監聽器。匿名事件監聽器是定義為內嵌的事件監聽器介面實作項目,如以下所示。

    ImageManager im = ...;

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

Play 遊戲 SDK 會將匿名事件監聽器認定為弱式參照,表示垃圾收集器可能會在您叫用之前就回收這些事件監聽器,因此並不可靠。相反地,您應該使用永久物件實作事件監聽器 例如 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...
        }
    }