GoogleService를 초기화하지 못했습니다.


113

내 Android 애플리케이션에서 Google지도를 사용하고 있습니다. 키를 생성하고 매니페스트 파일에 필요한 권한을 추가했습니다. 하지만 곧 응용 프로그램을 시작하면 디버거에서이 메시지가 나타납니다.

GoogleService를 초기화하지 못했습니다. 상태 : 10, 예상 리소스가 없습니다. Google 서비스를 초기화하기위한 'R.string.google_app_id'. 가능한 원인은 google-services.json 또는 com.google.gms.google-services gradle 플러그인이 누락 된 것입니다.

나는 무엇이 잘못되었는지 잘 모르겠습니다. 지도가 잘 작동하며 문제없이 사용할 수 있습니다. 내 gradle 파일에는 다음 항목이 있습니다.

'com.google.android.gms : play-services : 8.4.0'컴파일

불만 사항은 무엇이며 어떻게 완화합니까?


매니페스트에 다음이
있습니까?


나는 둘 다 시도했지만 여전히 같은 메시지를 받고 있습니다!
Zach

1
장치 플레이 서비스 APK가 업데이트 되었습니까?
Abhigyan

이 솔루션 중 어느 것도 작동하지 않았지만 서비스 APK를 업데이트하는 것이 트릭을 수행하는 것 같았습니다!
midoriha_senpai

답변:


38

여기 공식 문서의 2 단계에서 언급 한대로 developer.google.com 에서 google-services.json생성 한 구성 파일 ( ) 을 배치해야합니다.

과정은 간단합니다

  1. 프로젝트를 선택하거나 새 프로젝트를 만들 수 있습니다.
  2. 그런 다음 원하는 서비스 (이 경우 맵 서비스)를 선택한 후 구성 파일을 생성 할 수 있습니다.

    Firebase 프로젝트로 이전 한 사용자는 Firebase 콘솔 로 이동 하여 프로젝트를 선택하고 설정에서 구성 파일을 찾을 수 있습니다.

  3. 그런 다음 여기 공식 문서의 3 단계에서 인용 한대로

    google-services.json방금 다운로드 한 파일을 Android의 app / 또는 mobile / 디렉토리에 복사합니다.

추신 :이 답변에 반대하는 사람들은 왜 반대하는 지에 대한 의견을 남겨주세요.


6
새 버전의 Google Play 서비스를 사용하는 앱에서 실제로 이것이 필요합니까? 아니면 Google 로그인 전용입니까? 필요한 것처럼 로그에서 오류가 발생하는 것이 이상해 보이지만 그렇지 않을 수도 있습니다.
RED_

2
@Radix ... 공유 한 링크로 이동했지만 Google 로그인 또는 Google 클라우드 메시징에 등록하라고 요청했습니다 ...지도에 대한 내용은 없습니다. 어떤 생각? 또한,이 json 파일을 / app 바로 아래에 복사하는 것은 좀 이상합니다. 고맙습니다!
Johnny Wu

2
앱에 이미 google-services.json이 있었지만 8.4.0으로 업그레이드 할 때 다시 만들어야했습니다.
로이 솔 버그

1
같은 문제, google-services.json을 추가해도 도움이되지 않았습니다. 이미 활성화 된 gcm이 표시되지 않고 매번 고유 한 서버 키를 만들고 싶어한다는 이상한 점
Andrew V.

11
여기 Google 제품 관리자의 올바른 응답을 참조하십시오. stackoverflow.com/questions/34365369/…
Ahmed Mounir

52

[Google의 제품 관리자]

google-services.json아래 단계에 따라 Android 앱용 파일을 다운로드하고 복사하여이 문제를 해결할 수 있습니다 .

  • 이 링크 에서 앱 / 프로젝트 이름과 Android 패키지 이름을 선택하고을 클릭 Continue to Choose and configure services합니다.
  • 를 클릭하십시오 Continue to Generate Configuration files.
  • Android 프로젝트 google-services.jsonapp/또는 mobile/모듈 디렉토리에 파일을 다운로드 하고 복사합니다 .

이전에 Google 프로젝트를 Firebase로 가져온 경우 Firebase 콘솔 의 프로젝트 설정 에서 업데이트 된 google-services.json을 가져올 수 있습니다 .

google_app_id는 프로젝트 자체가 아니라 프로젝트 내의 앱을 참조하므로 다른 답변 중 하나에서 제안한대로 PROJECT_NUMBER를 복사하지 마세요 .


1
gradle-experimental 플러그인을 사용하는 사람들의 경우 google-services.json이 직접 적용되지 않습니다. 해결 방법 은 stackoverflow.com/a/38097895/457137 을 참조하십시오 .
zevoid

json 파일을 포함해야하는 이유는 무엇입니까? 코드에서 런타임에 ID를 제공 할 수없는 이유는 무엇입니까?
der_michael dec.

파일이 최상위 디렉토리가 아닌 / app 디렉토리에 있습니까?
IgorGanapolsky

11

제 경우이 오류의 원인은 Gradle 용 Google 서비스 플러그인과 Play 서비스 라이브러리가 호환되지 않는 버전이었습니다. 호환 버전에 대한 지침 :

1) 프로젝트 수준 build.gradle에 종속성을 추가합니다.

classpath 'com.google.gms:google-services:1.5.0-beta2'

2) 앱 수준 build.gradle에 플러그인을 추가합니다.

apply plugin: 'com.google.gms.google-services'

3) Android Studio를 사용하는 경우 애플리케이션의 build.gradle 파일의 종속성 섹션에 추가 할 문자열입니다.

dependencies {
  compile "com.google.android.gms:play-services:8.3.0"
}

출처 : https://developers.google.com/cloud-messaging/android/client


1
감사합니다.하지만 이것은 저에게 효과가 없었습니다. Android Studio는 google-services.json 파일도 설치되어 있다고 주장하지만 위의 세 단계를 수행하면 파일의 필요성을 재정의해야 할 필요가 없다고 생각했지만? 어떤 질문으로 이어집니다. 기본 매핑 만 제공하는 경우 Google 사용자 로그인 시스템이 필요한 이유는 무엇입니까?
iaindownie

1
내 솔루션이 나열되지 않았으므로 사람들에게이 문제에 대한 또 다른 잠재적 인 솔루션을 제공하기 위해 질문에 대답했습니다. 귀하의 경우 추가 라이브러리가 설치되어있을 수 있습니다. 만을 사용해보십시오com.google.android.gms:play-services-maps:8.4.0
13rac1

@eosrei, com.google.android.gms : play-services-maps : 8.4.0 만 사용하면 저에게 효과적이었습니다. 감사합니다!
akshay7692

4

나는 같은 문제를 만났고 공식적인 해결책에 따라 해결했다 .

단계는 다음과 같습니다.

  1. 이 링크google-services.json 에서 구성 파일 을 가져옵니다 .

  2. google-services.json방금 다운로드 한 파일을 Android Studio 프로젝트의 app / 또는 mobile / 디렉토리에 복사합니다 .

  3. 프로젝트 수준 build.gradle에 종속성을 추가합니다.

    classpath 'com.google.gms:google-services:1.5.0-beta2'
  4. 앱 수준 build.gradle에 플러그인을 추가합니다.

    apply plugin: 'com.google.gms.google-services'
  5. 이 종속성을 앱 수준 build.gradle에 추가합니다.

    dependencies {
        compile "com.google.android.gms:play-services:8.3.0"
    }

1
com.google.gms : google-services : 1.5.0을 사용하는 것이 좋습니다. 베타 버전보다 앱에서 예측할 수없는 오류를 제거하는 것이 더 낫기 때문입니다.
Andrew V.

@AndrewV. 그래, 난 동의. "1.5.0-beta2"버전은 위에서 제공 한 링크에서 복사되었습니다.

1

플레이 서비스를 올바르게 설정하고 폴더 에 google-services.json파일을 넣은 후에도이 문제에 직면 한 사람들을 project/app위해 실제 해결책은

Build > Rebuild Project

아마도 json 파일의 문자열은 전체 재 빌드가 수행 될 때까지 컴파일 된 리소스에 통합되지 않기 때문일 수 있습니다.


1

Xamarin / Visual Studio Mac의 경우 Droid.csproj의 맨 아래에 추가해야했습니다.

<Target Name="ProcessGoogleServicesJson" Condition=" '@(GoogleServicesJson)' != '' AND '$(AndroidApplication)' == 'True' AND '$(DesignTimeBuild)' != 'True'" BeforeTargets="$(ProcessGoogleServicesJsonBeforeTargets)" AfterTargets="$(ProcessGoogleServicesJsonAfterTargets)">
<Message Text="Using ProcessGoogleServicesJson override" Importance="high" />
<ProcessGoogleServicesJson GoogleServicesJsons="@(GoogleServicesJson)" IntermediateOutputPath="$(IntermediateOutputPath)" MonoAndroidResDirIntermediate="$(MonoAndroidResDirIntermediate)" AndroidPackageName="$(_AndroidPackage)">
    <Output ItemName="_AndroidResourceDest" TaskParameter="GoogleServicesGeneratedResources" />
    <Output ItemName="FileWrites" TaskParameter="GoogleServicesGeneratedResources" />
</ProcessGoogleServicesJson>
<ItemGroup>
    <FileWrites Include="$(IntermediateOutputPath)\ProcessGoogleServicesJson.stamp" />
</ItemGroup>

https://github.com/xamarin/GooglePlayServicesComponents/issues/64



0

그 당시에도 같은 문제가있었습니다. 필자의 경우 GCM 인 필요한 플레이 서비스 라이브러리 만 사용하여 해결할 수있었습니다.

대신 com.google.android.gms:play-services:8.4.0, 내가 사용 com.google.android.gms:play-services-gcm:8.4.0. 자세한 정보는 여기 를 참조 하십시오 . 이것은 또한 multidex 문제를 해결합니다.

그런 다음 @Radix와 @Alexander의 접근 방식을 모두 적용하여 .NET과 관련된 logcat에서 GCM이 출력되었습니다 메시지를 제거했습니다 google-services.json.


0

당신은 변경할 수 versionCodeversionName당신의 Gradle을 파일에 앱을.


0

빠른 수정 내가 사용은하지 않도록 서명하는 것입니다. 프로덕션 코드를 생성하지 않으려는 경우 빌드 변형을 debug, localOldDebug 또는 localDebug로 설정할 수 있습니다.

Android Studio의 왼쪽 하단에있는 Build Variants를 클릭합니다.

생성-서명 된 -apk-android-studio 비활성화 방법


코멘트로 질문을 할 수 있습니다
jjj

-2

실수로 제거하는 다른 솔루션이 있습니다.

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
        .findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

이것을 추가하고 작업은 새로운 솔루션입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.