今天我一直在更新我的项目,并从使用Android.Locations API迁移到使用Google Play LocationServices API和FusedLocationProviderClient
来获取位置更新。我更新到最新版本的GooglePlayServices
API(基地、地下室、位置、地图、任务(,并通过 SDK 管理器更新了我的本地版本的 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 密钥,并将其存储在应用中的文件中。这是执行此操作的指南。
另请查看本指南,了解如何在应用中设置各个 Google Play 服务。
好吧,我找到了答案。我很尴尬,也不骄傲,但我仍然应该为社区分享!虽然我有使用Android上层的经验(通过Xamarin(,但我没有像Resource
文件夹和AndroidManifest.xml
这样有些晦涩的东西的经验。无论如何,我应该知道我的AndroidManifest.xml
中声明的值,@integer/google-play-services-version
,意味着该值在我的项目中的某个地方声明。果然,我发现它是在一个模糊的values.xml
文件中声明的。
它确实是硬编码的8487000
,当我把它切换到11400000
时,一切都按预期工作。确保在制作StackOverflow帖子之前检查整个项目是这里的课程!