为什么我的 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 是这里的教训!
今天我一直在更新我的项目,并从使用 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 是这里的教训!