今天,我一直在更新项目,并从使用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
中。
这可能是什么问题?
答案 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发布之前检查了整个项目,这是这里的课程!