GoogleService无法初始化



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

GoogleService初始化失败,状态:10,缺少预期的resource:'R.string.google_app_id'用于初始化谷歌服务。可能的原因是缺少google-services.json或com.google.gms.google-services gradle插件。

我不确定出了什么问题。地图运行良好,我可以毫无问题地使用它。我的等级文件有这样的条目:

compile'com.google.android.gms:play services:8.4.0'

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

[来自谷歌产品经理]

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

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

如果你之前已经将你的谷歌项目导入Firebase,你可以从项目设置下的Firebase控制台获取更新的google-services.json。

不要复制其他答案建议的PROJECT_NUMBER,因为google_app_id指的是项目中的应用程序,而不是项目本身。

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

这个过程很简单

  1. 您可以选择您的项目或创建一个新项目
  2. 然后,在选择所需的服务(在本例中为maps服务)之后,您可以生成配置文件。

    对于已经迁移到Firebase项目的用户,他们可以通过转到Firebase控制台,选择您的项目并在设置下找到配置文件来获得相同的设置。

  3. 然后,正如官方文件第3步所引用的那样

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

附言:如果有人对这个答案投了反对票,请留下评论,说明你为什么投反对票。

在我的情况下,这个错误的原因是Gradle的谷歌服务插件和Play Services库是不兼容的版本。兼容版本说明:

1) 将依赖项添加到项目级构建中。gradle:

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

2) 将插件添加到您的应用程序级构建中。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. 从该链接获取配置文件google-services.json

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

  3. 将依赖项添加到项目级构建中。gradle:

    classpath 'com.google.gms:google-services:1.5.0-beta2'
    
  4. 将插件添加到您的应用程序级构建中。gradle:

    apply plugin: 'com.google.gms.google-services'
    
  5. 将此依赖项添加到应用程序级构建中。gradle:

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

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

Build > Rebuild Project

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

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

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

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

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的方法来删除logcat中关于google-services.json的消息GCM已输出。

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

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

点击Android Studio左下角的Build Variants。

如何禁用生成的签名apk安卓工作室

相关内容

  • 没有找到相关文章

最新更新