为什么我的 Google Play 服务版本不正确?

Why is my Google Play Services version incorrect?

今天我一直在更新我的项目,并从使用 Android.Locations API 迁移到使用 Google Play LocationServices API 与 FusedLocationProviderClient获取位置更新。我更新到最新版本的 GooglePlayServices APIs(Base、Basement、Location、Maps、Tasks)并通过 SDK Manager 更新了本地版本的 GooglePlayServices。

当我尝试使用 GooglePlayServices API 的一部分时,例如 FusedLocationProviderClient,我收到此消息:

Java.Lang.RuntimeException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 11400000 but found 8487000. You must have the following declaration within the <application> element: <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

但是我有:

<meta-data android:name="com.google.android.gms.version" 

android:value="@integer/google_play_services_version" />

在我的 AndroidManifest.xml 项目中。

这里可能是什么问题?

您不必提及 gms 版本,因此请从清单中删除这些行:

<meta-data android:name="com.google.android.gms.version" 
    android:value="@integer/google_play_services_version" />

只需包含地图和其他服务的 api 键,它应该可以正常工作:

<meta-data android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_maps_key" />

这将查找清单并将其添加到清单中,但如果您没有使用 api 键创建文件,它将不存在。因此,您必须从控制台创建 api 密钥并将它们存储在您应用程序的文件中。 Here 是这样做的指南。

另请查看 this 指南以了解如何在您的应用中设置单独的 google 播放服务。

嗯,我找到了答案。我很尴尬也不自豪,但我想我仍然应该为社区分享!虽然我有使用 Android 上层的经验(通过 Xamarin),但我没有使用 Resource 文件夹和 AndroidManifest.xml 等有点晦涩的东西的经验。无论如何,我应该知道我的 AndroidManifest.xml@integer/google-play-services-version 中声明的值暗示该值是在我的项目中的 某处 中声明的。果然,我发现它是在一个位置不明的 values.xml 文件中声明的。

它确实被硬编码为 8487000,当我将其切换为 11400000 时,一切都按预期工作。确保在创建 Whosebug 之前检查整个项目 post 是这里的教训!