为什么我的谷歌播放服务版本不正确?



今天我一直在更新我的项目,并从使用Android.Locations API迁移到使用Google Play LocationServices API和FusedLocationProviderClient来获取位置更新。我更新到最新版本的GooglePlayServicesAPI(基地、地下室、位置、地图、任务(,并通过 SDK 管理器更新了我的本地版本的 GooglePlayServices。

当我尝试使用GooglePlayServicesAPI的一部分(例如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 密钥,并将其存储在应用中的文件中。这是执行此操作的指南。

另请查看本指南,了解如何在应用中设置各个 Google Play 服务。

好吧,我找到了答案。我很尴尬,也不骄傲,但我仍然应该为社区分享!虽然我有使用Android上层的经验(通过Xamarin(,但我没有像Resource文件夹和AndroidManifest.xml这样有些晦涩的东西的经验。无论如何,我应该知道我的AndroidManifest.xml中声明的值,@integer/google-play-services-version,意味着该值在我的项目中的某个地方声明。果然,我发现它是在一个模糊的values.xml文件中声明的。

它确实是硬编码的8487000,当我把它切换到11400000时,一切都按预期工作。确保在制作StackOverflow帖子之前检查整个项目是这里的课程!

最新更新