GoogleService 初始化失败

Posted

技术标签:

【中文标题】GoogleService 初始化失败【英文标题】:GoogleService failed to initialize 【发布时间】:2016-03-25 17:43:10 【问题描述】:

我在我的安卓应用程序中使用谷歌地图。我已经在清单文件中创建了密钥并添加了必要的权限。但很快我启动了应用程序,我在调试器中收到了这条消息:

,状态: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'

它在抱怨什么,我该如何缓解?

【问题讨论】:

这是在你的清单中吗: 看第2步:developers.google.com/identity/sign-in/android/start?hl=en 我都试过了,但仍然收到相同的消息! 您的设备播放服务 apk 更新了吗? 这些解决方案都不起作用,但更新服务 APK 似乎可以解决问题! 【参考方案1】:

[来自产品经理@Google]

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

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

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

请勿复制其他答案之一所建议的 PROJECT_NUMBER,因为 google_app_id 指的是您在项目中的应用,而不是项目本身。

【讨论】:

对于使用gradle-experimental插件的人,google-services.json不会直接生效。解决方法请参考***.com/a/38097895/457137。 为什么必须包含json文件?为什么我不能在代码中在运行时提供 id? 文件进入 /app 目录,而不是***目录?【参考方案2】:

你需要放置developer.google.com生成的配置文件(google-services.json),在官方文档here第二步中提到

过程很简单

    您可以选择您的项目或创建一个新项目。

    然后在选择所需的服务(在本例中为地图服务)后,您可以生成配置文件。

    对于迁移到 Firebase 项目的人,他们可以通过转到 Firebase Console,选择您的项目并在设置下找到配置文件来获得相同的结果。

    然后在官方文档here的第3步中引用

    将刚才下载的google-services.json文件复制到安卓的app/或mobile/目录中

P.S :对于不赞成这个答案的人,请留下评论,说明您反对的原因。

【讨论】:

我们是否真的需要在我们的应用程序中使用新版本的 Google Play 服务?还是仅用于 Google 登录?日志似乎很奇怪,好像我需要它一样向我抛出错误,但我可能不会 @Radix...我访问了您共享的链接,但它要求我注册 Google 登录或 Google Cloud Messaging...与地图无关。任何想法?此外,将这个 json 文件复制到 /app 下有点奇怪......你能澄清一下吗?非常感谢! 我们的应用中已经有了 google-services.json,但升级到 8.4.0 时必须重新创建它。 同样的问题,添加 google-services.json 没有帮助,奇怪的是它看不到我已经激活的 gcm 并且每次都想创建自己的服务器密钥 在此处查看 Google 产品经理的正确回复:***.com/questions/34365369/…【参考方案3】:

在我的例子中,这个错误的原因是 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

【讨论】:

谢谢,但这对我不起作用 - Android Studio 坚持我还安装了 google-services.json 文件,尽管我认为如果您按照上述三个步骤进行操作,则没有必要覆盖需要文件吗?这让我问:如果我提供的只是基本映射,为什么我需要一个 Google 用户登录系统? 我的解决方案没有列出,所以我回答了这个问题,以便为人们提供解决此问题的另一个潜在解决方案。在您的情况下,您可能安装了额外的库。尝试只使用com.google.android.gms:play-services-maps:8.4.0 @eosrei,只使用 com.google.android.gms:play-services-maps:8.4.0 为我工作,谢谢!【参考方案4】:

我遇到了同样的问题并按照official solution解决了。

步骤如下:

    从this link获取配置文件google-services.json

    将刚才下载的google-services.json文件复制到Android Studio项目的app/或mobile/目录中。

    将依赖项添加到您的项目级 build.gradle:

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

    将插件添加到您的应用级 build.gradle:

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

    将此依赖项添加到您的应用级 build.gradle:

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

【讨论】:

我认为最好使用 com.google.gms:google-services:1.5.0,因为它比 beta 版本更好,可以消除您应用中的一些不可预知的错误。 @AndrewV。是的我同意。 “1.5.0-beta2”版本是从我上面给出的链接中复制的。【参考方案5】:

对于即使正确设置播放服务并将google-services.json文件放入project/app文件夹后仍面临此问题的人,实际解决方案是

Build > Rebuild Project

可能是因为 json 文件中的字符串在执行完全重建之前没有集成到编译资源中。

【讨论】:

【参考方案6】:

对于 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

【讨论】:

【参考方案7】:

这也发生在我身上。就我而言,这是因为 Android Studio 试图在我的主要活动中插入一些代码。删除代码修复错误

插入的代码是关于应用索引的:

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

【讨论】:

【参考方案8】:

我当时也有同样的问题。能够通过仅使用必要的播放服务库(在我的情况下为 GCM)来解决它。

我使用com.google.android.gms:play-services-gcm:8.4.0,而不是com.google.android.gms:play-services:8.4.0。请参阅here 了解更多信息;这也解决了multidex问题。

然后我应用@Radix 和@Alexander 的方法来删除消息 GCM 已在 logcat 中输出关于google-services.json

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

我使用的快速修复是禁用签名。如果您不想创建生产代码,可以将构建变体设置为调试、localOldDebug 或 localDebug。

点击 Android Studio 左下角的 Build Variants。

how-to-disable-generated-signed-apk-android-studio

【讨论】:

可以作为评论提问【参考方案11】:

只是有另一个解决方案,我不小心删除了

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

添加这个并工作,是为了新的解决方案

【讨论】:

以上是关于GoogleService 初始化失败的主要内容,如果未能解决你的问题,请参考以下文章

由于 Firebase GoogleService-Info.plist,Codemagic iOS 构建失败

从 Assets/GoogleService-Info.plist 统一生成 Firebase Android 资源文件 google-services.xml 失败

Flutter NSException:配置失败。可能是由于 GoogleService-Info.plist 中的 GOOGLE_APP_ID 无效或在自定义选项中设置造成的

firebase 未正确初始化:Googleservice-Info.plist 不在使用 VScode 的 MacOS 上

Firebase 未正确初始化,所需文件夹中的“GoogleService-Info.plist”文件

win10重置电脑时出现初始化失败 怎么解决重置电脑初始化失败