本頁面說明如何疑難排解您在使用 Play Games SDK 開發 Android 遊戲時可能遇到的問題。
無法登入
如果您無法讓玩家登入遊戲,首先請確認您已按照 有關建立用戶端 ID 和 設定遊戲服務。如果您仍遇到登入問題 錯誤訊息,請檢查下列項目,確認遊戲設定正確無誤。
檢查中繼資料標記
您的 AndroidManifest.xml
內必須含有遊戲的中繼資料標記。為了確認
您的中繼資料標記已正確設定:
開啟
AndroidManifest.xml
並確認其中含有meta-data
標記,如下所示:<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
找到
@string/app_id
資源的定義。這項定義通常位於res/xml
目錄的特定 XML 檔案中,例如res/xml/strings.xml
或res/xml/ids.xml
。確認
@string/app_id
資源的值與應用程式的數字 ID 相符。此資源的值只能包含數字。例如:<string name="app_id">123456789012</string>
檢查套件名稱
您遊戲的套件名稱必須與用戶端 ID 的套件名稱相符。如要驗證套件名稱,請按照下列步驟操作:
- 開啟
AndroidManifest.xml
並確認遊戲套件名稱是否正確。套件名稱為manifest
標記中package
屬性的值。 - 建立用戶端 ID 時請確認您提供的套件名稱。如要在 Google Play 管理中心中確認套件名稱,請前往 Google Play 管理中心,然後按一下與您遊戲相應的項目。前往「Linked Apps」分頁,檢查用戶端 ID 清單。必須連結 Android
應用程式,其套件名稱與
AndroidManifest.xml
中的套件名稱相符。 - 如果套件名稱不符,請使用正確的套件名稱建立新用戶端 ID,然後再次嘗試登入。
檢查憑證指紋
用來簽署遊戲的憑證必須與用戶端 ID 相關聯的憑證指紋相符。如要驗證這點,請先檢查憑證的 SHA1 指紋:
找到您的憑證檔案並取得其 SHA1 指紋。若要取得 SHA1 指紋,請執行以下指令:
keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
記下字串中標示為
SHA1:
的十六進位數列 輸出內容此數字即為憑證的指紋。
接著,檢查建構工具是否使用這個憑證:
- 透過建構工具產生遊戲的 APK,並使用要驗證的憑證簽署 APK。將產生的 APK 複製到臨時的目錄。
在該臨時目錄內執行以下指令,以便解壓縮 APK。
unzip YourGame.apk
使用 RSA 憑證檔案產生私密金鑰:
keytool -printcert -file META-INF/CERT.RSA
您也可以使用 DSA 憑證檔案產生私密金鑰:
keytool -printcert -file META-INF/CERT.DSA
找到標示為
SHA1:
的行,並記下其中的十六進位數列。此數列應該與 上一個步驟如果不相符,代表建構工具或系統未設定為使用憑證簽署應用程式。在這種情況下,請參閱建構環境的說明文件,瞭解如何正確設定建構環境,然後再次嘗試登入。
接著,檢查憑證指紋是否與您在用戶端 ID 中設定的指紋相符。操作說明如下:
- 開啟 Google Play 管理中心,前往您的遊戲。
- 在「遊戲詳細資料」頁面中,往下捲動到底部,按一下指向已連結 Google Cloud Platform 專案的連結。
- 在 Google Cloud Platform 中選取專案。
- 點選左側欄的「APIs & auth」。查看系統顯示的 API 清單,並確認 Google Play Games Services API 的狀態是「ON」。
- 點選左側欄的「Registered apps」。
- 展開 OAuth 2.0 用戶端 ID 區段,然後記下憑證指紋 (SHA1)。
如果這個指紋與您在前幾個步驟中取得的憑證指紋不相符,則必須使用正確的憑證指紋建立新用戶端 ID。您必須透過 Google Play 管理中心 (而非 Google Cloud Platform
檢查測試帳戶是否已啟用
發布遊戲之前,您透過 Google Play 管理中心建立遊戲時所用的帳戶也必須 啟用並做為測試人員如要檢查設定是否正確,請按照以下步驟操作:
- 開啟 Google Play 管理中心,前往您的遊戲。
- 開啟「測試」分頁。
- 檢查您嘗試用來登入的帳戶是否在測試人員清單中。
如果您嘗試登入的帳戶不在清單中,請將其加入清單中,稍待幾分鐘 然後再次嘗試登入。
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...
}
}