GoogleService无法初始化

我在我的Android应用程序中使用谷歌地图。 我已经创build了密钥并在清单文件中添加了必要的权限。 但是很快我开始了应用程序,我在debugging器中得到这个消息:

GoogleService无法初始化状态:10,缺less预期的资源:“R.string.google_app_id”以初始化Google服务。 可能的原因是缺lessgoogle-services.json或com.google.gms.google-services gradle插件。

我不知道什么是错的。 地图工作正常,我可以使用它没有任何问题。 我的gradle文件有这个条目:

编译“com.google.android.gms:play-services:8.4.0”

这是什么抱怨,我如何缓解呢?

10 Solutions collect form web for “GoogleService无法初始化”

您需要放置由developer.google.com生成的configuration文件( google-services.json ),如官方文档第二步中所述

这个过程很简单

  1. 您可以select您的项目或创build一个新项目。
  2. 然后select所需的服务(在这种情况下为地图服务)后,可以生成configuration文件。

    对于已迁移到Firebase项目的用户,通过转到Firebase控制台 ,select您的项目,并在设置下可以find相应的configuration文件。

  3. 然后在正式文档的第3步中引用

    将刚刚下载的google-services.json文件复制到Android的应用程序/或mobile /目录中

PS:对于那些低调的回答,请留下评论,说明你为什么拒绝投票。

[来自产品经理@ Google]

您可以按照以下步骤通过下载并复制您的Android应用的google-services.json文件来解决此问题:

  • 从此链接中select您的应用/项目名称和Android软件包名称,然后单击Continue to Choose and configure services
  • 点击Continue to Generate Configuration files
  • 下载google-services.json并将文件复制到Android项目中的app/mobile/模块目录。

如果您之前已将您的Google项目导入到Firebase中,则可以从Firebase控制台的 “项目设置”下获取更新的google-services.json。

不要按照其他答案中的build议复制 PROJECT_NUMBER,因为google_app_id在项目中引用了您的应用程序,而不是项目本身。

在我的情况下,这个错误的原因是Gradle的Google Services插件和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文件的依赖项部分的string:

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

来源: https : //developers.google.com/cloud-messaging/android/client

我遇到了同样的问题,并解决了正式的解决scheme 。

这里是步骤:

  1. 从这个链接获取configuration文件google-services.json

  2. 将刚刚下载的google-services.json文件复制到Android Studio项目的应用程序/或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" } 

这也发生在我身上。 在我的情况下,这是因为Android工作室试图插入一些代码到我的主要活动。 删除代码可以修复错误

插入的代码是关于App Indexing的:

https://developers.google.com/app-indexing/android/publish

那时我也有同样的问题。 能够解决它只使用必要的播放服务库,在我的情况GCM。

而不是com.google.android.gms:play-services:8.4.0 ,我使用com.google.android.gms:play-services-gcm:8.4.0 。 在这里看到更多的信息; 这也解决了multidex问题。

然后,我同时应用@Radix和@ Alexander的方法来删除有关google-services.json的logcat中输出的消息。

只是有另一个解决scheme,我意外删除

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

添加这个工作,是为了新的解决scheme

对于那些即使正确设置播放服务并将google-services.json文件放在project/app文件夹中也面临此问题的人,实际的解决scheme是

Build > Rebuild Project

可能是由于json文件中的string没有被集成到编译资源中,直到执行完整的重build。

您可以在您的Gradle文件中更改您的应用程序的versionCodeversionName

我使用的一个快速解决方法是禁用签名。 如果你不想创build生产代码,你可以设置你的构build变种debugging,localOldDebug或localDebug。

点击Android Studio左下angular的Build Variants。

如何对禁用生成的签名-APK-机器人工作室

  • 如何使用kml文件在地图上绘制path?
  • Keytool应用程序在哪里?
  • ScrollView中的MapFragment
  • 捕获GoogleMap Android API V2的屏幕截图
  • 在Android Beta 0.9中使用ItemizedOverlay和OverlayItem
  • 为什么使用KML数据检索Android版Google路线不再适用?
  • Android Geocoder getFromLocationName总是返回null
  • 在android中缺less共享库。
  • 我应该使用MapView还是MapFragment?