非法状态异常:应用的 AndroidManifest.xml 中的元数据标记没有正确的值



将 gradle 构建工具更新到 3.6.3 后,我在尝试获取以前不存在的广告 ID 时遇到运行时崩溃。

安卓清单.xml

<meta-data
tools:replace="android:value"
android:name="com.google.android.gms.version"
android:value="@integer/gms_version" />

值.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="gms_version">@integer/google_play_services_version</integer>
</resources>

build.gradle

classpath 'com.android.tools.build:gradle:3.6.3'
classpath 'com.google.gms:google-services:4.3.3'

日志猫

Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 12451000 but found 6587000.  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" />
at com.google.android.gms.common.GooglePlayServicesUtilLight.isGooglePlayServicesAvailable(com.google.android.gms:play-services-basement@@17.2.1:19)
at com.google.android.gms.common.GoogleApiAvailabilityLight.isGooglePlayServicesAvailable(com.google.android.gms:play-services-basement@@17.2.1:5)
at com.google.android.gms.ads.identifier.AdvertisingIdClient.zza(Unknown Source:17)
at com.google.android.gms.ads.identifier.AdvertisingIdClient.zza(Unknown Source:17)
at com.google.android.gms.ads.identifier.AdvertisingIdClient.getAdvertisingIdInfo(Unknown Source:47)

如果我将鼠标悬停在值.xml中的"google_play_services_version"上,它会显示多个实现。一个是版本'12451000',它来自gms:play-services-basement-17.2.1,另一个是作为aar文件包含的内部库。它包含谷歌播放服务版本"6587000"。我想这就是冲突发生的地方。

如果我在 values.xml 中将值硬编码为"12451000",则错误已修复,但除了硬编码之外还有其他解决方案吗?

像这样更改它并确保它进入您的<Application></Application>标签

<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/gms_version" />

您还可以在values.xml文件中直接提供值。喜欢这个

<integer name="gms_version">12451000</integer>

如果您不想对其进行硬编码,则可以删除.jar文件,如果您在build.gradle中添加了依赖项,则无需在其中包含.jar文件。

让我知道它是否可以帮助你。

谢谢,编码愉快..!

最新更新