@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 Console에서 패키지 이름을 확인하려면 Play Console로 이동하여 게임에 해당하는 항목을 클릭합니다.
연결된 앱 탭에서 클라이언트 ID 목록을 확인합니다. 목록에 패키지 이름이 AndroidManifest.xml에서의 패키지 이름과 같은 연결된 Android 앱이 있습니다. 일치하지 않는 경우 올바른 패키지 이름으로 클라이언트 ID를 새로 만들고 다시 로그인을 시도합니다.
인증서 지문 확인
게임에 로그인할 때 사용하는 인증서는 클라이언트 ID와 연결된 인증서 지문과 일치해야 합니다. 이를 확인하려면 다음과 같이 먼저 인증서의 SHA1 지문을 확인합니다.
인증서 파일을 찾아 SHA1 지문을 가져옵니다. 다음 명령어를 실행하여 SHA1 지문을 가져올 수 있습니다.
출력 결과에서 SHA1:로 라벨이 지정된 16진수 숫자의 순서를 확인합니다. 이것이 인증서의 지문입니다.
그런 다음 빌드 도구가 이 인증서를 사용하는지 확인합니다.
빌드 도구에서 게임의 APK를 생성하고 원하는 인증서로 서명합니다. 생성된 APK를 임시 디렉터리에 복사합니다.
임시 디렉터리에서 다음 명령어를 실행하여 APK 압축을 풉니다.
unzip YourGame.apk
RSA 인증서 파일을 사용하여 비공개 키를 생성합니다.
keytool-printcert-fileMETA-INF/CERT.RSA
또는 DSA 인증서 파일을 사용하여 비공개 키를 생성할 수 있습니다.
keytool-printcert-fileMETA-INF/CERT.DSA
SHA1:로 라벨이 지정된 행의 16진수 숫자의 순서를 확인합니다.
숫자의 순서는 이전 단계의 인증서 지문과 같아야 합니다. 일치하지 않을 경우 빌드 도구 또는 시스템이 인증서로 애플리케이션에 서명하도록 구성되지 않은 것입니다. 이러한 경우 빌드 환경 문서를 참고하여 올바로 구성하는 방법을 확인하고 다시 로그인을 시도합니다.
그런 다음, 다음과 같이 인증서 지문이 클라이언트 ID에서 구성된 지문과 일치하는지 확인합니다.
Play Console을 열고 게임으로 이동합니다.
게임 세부정보 페이지에서 아래로 스크롤하고 연결된 Google Cloud Platform 프로젝트의 링크를 클릭합니다.
프로젝트를 선택합니다.
왼쪽 사이드바에서 API 및 인증을 선택합니다. 표시된 API 목록에 Google Play 게임즈 서비스 API 상태가 사용으로 설정되어 있는지 확인합니다.
왼쪽 사이드바에서 등록된 앱을 선택합니다.
OAuth 2.0 클라이언트 ID 섹션을 펼치고 인증서 지문(SHA1)을 확인합니다.
이 지문이 이전 단계에서의 인증서 지문과 일치하지 않을 경우 올바른 인증서 지문으로 클라이언트 ID를 새로 만들어야 합니다. Google Cloud Platform 프로젝트가 아닌 Play Console에서 새 클라이언트 ID를 만들어야 합니다.
테스트 계정이 사용 설정되어 있는지 확인
게임을 게시하기 전에 Play Console에서 게임을 만든 계정은 테스터로서도 사용 설정되어 있어야 합니다. 올바르게 구성되었는지 확인하려면 다음 단계를 따르세요.
Play Console을 열고 게임으로 이동합니다.
테스트 탭을 엽니다.
로그인하려는 계정이 테스터 목록에 있는지 확인합니다.
로그인하려는 계정이 목록에 없으면 목록에 그 계정을 추가하고 몇 분 기다린 후에 다시 로그인을 시도합니다.
Proguard 관련 문제
Proguard를 사용하는 경우 난독화된 APK에서 오류가 발생하면 AndroidManifest.xml에서 대상 API 수준을 확인합니다. 17 이상으로 설정되어 있는지 확인합니다.
설정 문제의 기타 원인
오류의 다른 일반적인 원인을 확인합니다.
게임이 게시된 경우 게임 설정도 게시되었는지 확인합니다(게임 설정을 게시하지 않고 애플리케이션을 게시하게 될 수 있습니다). 이렇게 하려면 Google Play Console에서 앱으로 이동한 후 게임 이름 옆의 박스에 게임이 게시되었다는 표시가 있는지 확인합니다. '게시 준비 완료' 또는 '테스트 준비 완료' 등 다른 상태임을 나타내는 경우 그 상자를 클릭하고 게임 게시를 선택합니다.
게임을 게시할 수 없다면 클라이언트 ID 중 정확히 하나만 이 앱은 새 설치에 적합합니다 옵션이 사용 설정되었는지 확인합니다.
익명 리스너
익명 리스너를 사용하지 마세요. 익명 리스너는 아래와 같이 인라인으로 정의되는 리스너 인터페이스의 구현입니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Troubleshooting Play Games Services in Android games\n\nThis page describes how to troubleshoot issues that you might encounter while\ndeveloping Android games with Google Play Games Services.\n\nLogging\n-------\n\nTo troubleshoot problems with your game, you can turn on verbose logging\non your device using the `adb shell` command. You can then view the\nGoogle Play Games Services log messages using logcat.\n\n### Enable logging\n\nTo enable logging on your test device:\n\n1. Connect the device to a machine that has the Android SDK installed.\n\n2. Open a terminal and run this command:\n\n ```\n adb shell setprop log.tag.Games VERBOSE\n ```\n3. Run your game on the device and reproduce the problem you are trying to\n debug.\n\n4. View logs:\n\n ```\n adb logcat\n ```\n\n### Disable logging\n\nTo disable verbose logging for the Play Games Services on your device and\nrevert to the original logging behavior, run the following command: \n\n```\nadb shell setprop log.tag.Games INFO\n```\n\nUnable to sign in\n-----------------\n\nIf you are unable to sign players into your game, first make sure that you have\nfollowed the instructions to\n[create your client IDs](https://developers.google.com/games/services/console/enabling)\nand\n[configure games services](https://developers.google.com/games/services/console/configuring).\nIf you still encounter sign-in errors, check the following items to make sure\nthat your game is set up correctly.\n\n### Check your metadata tags\n\nYour `AndroidManifest.xml` must contain a games metadata tag. To verify that\nyour metadata tags are correctly set up:\n\n1. Open your `AndroidManifest.xml` and verify that it contains a `meta-data` tag as shown below:\n\n \u003cmeta-data android:name=\"com.google.android.gms.games.APP_ID\"\n android:value=\"@string/app_id\" /\u003e\n\n2. Locate the definition of your `@string/app_id` resource. It is usually defined in an XML file\n located in the `res/xml` directory, for example `res/xml/strings.xml` or `res/xml/ids.xml`.\n\n3. Verify that the value of the `@string/app_id` resource matches your application's numeric ID.\n The value of this resource should only contain digits. For example:\n\n \u003cstring name=\"app_id\"\u003e123456789012\u003c/string\u003e\n\n| **Warning:** Do not use the full client ID (`1233456789012.apps.googleusercontent.com`) as your app ID. This will result in errors.\n\n### Check your package name\n\nYour game's package name must match the package name on your client ID. To verify the package name:\n\n1. Open your `AndroidManifest.xml` and verify that your game's package name is correct. The package\n name is the value of the `package` attribute in the `manifest` tag.\n\n2. Verify the package name you supplied when creating your client ID. To verify\n the package name in Google Play Console, go to the\n Play Console and click on the entry corresponding to your game.\n\n3. Go to the **Linked Apps** tab and examine the list of client IDs. There\n should be an Android linked app in this list whose package name matches the\n package name in your `AndroidManifest.xml`. If there is a mismatch, create a new\n client ID with the correct package name and try to sign in again.\n\n### Check the certificate fingerprint\n\nThe certificate with which you are signing your game should match the\ncertificate fingerprint associated to your client ID. To verify this, first\ncheck your certificate's SHA1 fingerprint as follows:\n\n1. Find your certificate file and obtain its SHA1 fingerprint. To obtain the\n SHA1 fingerprint, run this command:\n\n keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v\n\n2. Take note of the sequence of hexadecimal digits labeled `SHA1:` in the\n output. That is your certificate's fingerprint.\n\n| **Note:** If you are using a debug certificate, replace `your-key-name` with `androiddebugkey` in the command above. If using a release certificate, use the name you chose for your key when creating the certificate.\n\nNext, check that your build tool is using this certificate:\n\n1. Generate your game's APK from your build tool and sign it with the desired certificate. Copy the generated APK to a temporary directory.\n2. In the temporary directory, run the following command to unzip your APK.\n\n unzip YourGame.apk\n\n3. Generate a private key using an RSA certificate file:\n\n keytool -printcert -file META-INF/CERT.RSA\n\n Alternatively, you can generate the private key using a DSA certificate file: \n\n keytool -printcert -file META-INF/CERT.DSA\n\n4. Note the sequence of hexadecimal digits on the line labeled `SHA1:`.\n\n This sequence of digits should match your certificate fingerprint from the\n previous step. If there is a mismatch, your build tool or system is not\n configured to sign your application with your certificate. In this case,\n consult your build environment's documentation to determine how to configure\n it correctly and try to sign in again.\n\nNext, check if the certificate fingerprint matches the fingerprint configured\nin your client ID. To do this:\n\n1. Open the Play Console and navigate to your game.\n2. On the **Game Details** page, scroll to the bottom and click the link to the linked Google Cloud Platform project.\n3. Select your project.\n4. In the sidebar on the left, select **APIs \\& auth** . Make sure that the Google Play games services API status is **ON** in the displayed list of APIs.\n5. In the sidebar on the left, select **Registered apps**.\n6. Expand the OAuth 2.0 Client ID section and note the certificate fingerprint (SHA1).\n\nIf this fingerprint does not match your certificate's fingerprint from the\nprevious steps, you must create a new client ID with the correct certificate\nfingerprint. You must create the new client ID in the\nPlay Console, not in the Google Cloud Platform project.\n| **Note:** If you are debugging your game using your debug certificate but have configured games services using your release certificate, you should add a second linked app using the same package name and your debug certificate's SHA1 fingerprint. This will allow you to sign in to the application whether it's signed with the debug or release certificates.\n\n### Check that test accounts are enabled\n\nBefore a game is published, the account that created the game in the\nPlay Console must also be enabled as a tester. To check that\nthis is correctly configured:\n\n1. Open the Play Console and navigate to your game.\n2. Open the **Testing** tab.\n3. Check that the account you are trying to sign in with is in the list of testers.\n\nIf the account you are trying to sign in with is not listed, add it to the list, wait a few minutes\nand try to sign in again.\n| **Warning:** The account that created the game in the Play Console does not automatically become a tester. If you wish to sign in to the game with that account, you must add it as a tester explicitly.\n\nProguard issues\n---------------\n\nIf you are using Proguard and are seeing errors on the obfuscated APK, check the target API level\non your `AndroidManifest.xml`. Make sure to set it to 17 or above.\n\nOther causes of setup issues\n----------------------------\n\nCheck for other common causes of errors:\n\n- If your game is published, check that the game settings are also published (it is possible to publish the application without publishing the games settings). To do this, go to Google Play Console and navigate to your app, and check that the box next to the game's name indicates that it's published. If indicates that it is in another state, such as \"Ready to Publish\" or \"Ready to Test\", click the box and select **Publish Game**.\n- If you can't publish your game, check that exactly one of the client IDs has the **This app is\n preferred for new installations** option enabled.\n\nAnonymous listeners\n-------------------\n\nDo not use anonymous listeners. Anonymous listeners are implementations of a listener interface\nthat are defined inline, as illustrated below. \n\n ImageManager im = ...;\n\n // Anonymous listener -- dangerous:\n im.loadImage(new ImageManager.OnImageLoadedListener() {\n @Override\n public void onImageLoaded(Uri uri, Drawable drawable) {\n // ...code...\n }\n }\n\nAnonymous listeners are unreliable because the Play Games SDK maintains them as weak references,\nwhich means that they might be reclaimed by the garbage collector before they are\ninvoked. Instead, you should implement the listener using a persistent object\nsuch as the\n[`Activity`](https://developer.android.com/reference/android/app/Activity). \n\n public class MyActivity extends Activity\n implements ImageManager.OnImageLoadedListener {\n\n private void loadOurImages() {\n ImageManager im = ...;\n im.loadImage(this);\n }\n\n @Override\n public void onImageLoaded(Uri uri, Drawable drawable) {\n // ...code...\n }\n }"]]