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'
它在抱怨什么,我该如何缓解?
【问题讨论】:
这是在你的清单中吗:[来自产品经理@Google]
您可以按照以下步骤为您的 Android 应用下载并复制 google-services.json
文件来解决此问题:
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 文件中更改应用的 versionCode
和 versionName
。
【讨论】:
【参考方案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 上