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

时间:2018-08-16 15:24:10

标签: android xamarin.android google-play-services android-manifest

今天,我一直在更新项目,并从使用Android.Locations API迁移到结合FusedLocationProviderClient使用Google Play LocationServices API来获取位置更新。我已更新为GooglePlayServices API的最新版本(基础,地下室,位置,地图,任务),并通过SDK Manager更新了本地版本的GooglePlayServices。

当我尝试使用GooglePlayServices之类的FusedLocationProviderClient API时,出现以下消息:

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中。

这可能是什么问题?

2 个答案:

答案 0 :(得分:0)

您不必提及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 Play服务。

答案 1 :(得分:0)

好吧,我找到了答案。我很尴尬,不感到骄傲,但我仍然应该为社区分享这个数字!虽然我曾经通过Xamarin接触过Android的高级知识,但是对Resource文件夹和AndroidManifest.xml之类的晦涩难懂的东西却没有经验。无论如何,我应该知道AndroidManifest.xml@integer/google-play-services-version中的声明值暗示了该值是在项目中的 somewhere 中声明的。果然,我发现它是在一个位置不明确的values.xml文件中声明的。

它确实被硬编码为8487000,当我将其切换为11400000时,一切都按预期工作。请确保在进行StackOverflow发布之前检查了整个项目,这是这里的课程!