我正在使用一个已经使用了大约4年的大规模应用程序,在上一个版本中实现了一些新库,在实现之后,我们在尝试检查Google Play服务是否可用时遇到了一些问题,这仅在装有Android 8+的华为设备上发生。日志猫向我们显示了此堆栈跟踪
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 4323000. 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" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="XXXXXXXXXXXXXXXXXXXXXX" />
如果我们遵循google_play_services_version的值,则可以从play-services-basement-16.1.0.aar中找到期望的值
<integer name="google_play_services_version">12451000</integer>
这是在gradle上实现的库
implementation "com.android.support.constraint:constraint-layout:$constraint"
implementation "com.android.support:appcompat-v7:$support"
implementation "com.android.support:design:$support"
implementation "com.android.support:cardview-v7:$support"
implementation "com.android.support:recyclerview-v7:$support"
implementation "com.android.support:design:$support"
implementation "com.android.support:support-v4:$support"
implementation "com.android.support:mediarouter-v7:$support" //New Lib
implementation "com.android.support:animated-vector-drawable:$support" //New Lib
implementation "com.android.support:design:$support"
implementation "com.android.support:support-vector-drawable:$support"
//Play services
implementation "com.google.android.gms:play-services-maps:$playServices"
implementation "com.google.android.gms:play-services-analytics:$playServices"
implementation "com.google.android.gms:play-services-gcm:$playServices"
implementation "com.google.android.gms:play-services-safetynet:$playServices"
implementation "com.google.android.gms:play-services-wearable:$playServices"
使用此版本
ext {
//build
sdkCompileVersion = 27
sdkMinVersion = 16
sdkTargetVersion = 27
sdkBuildToolsVersion = '27.0.3'
//dependencies
support = '27.1.0'
playServices = '16.0.0'
newRelic = '5.18.0'
constraint = '1.1.2'
}
有谁想解决这个问题,谢谢?
答案 0 :(得分:0)
您是否在应用程序中的任何地方硬编码了gms版本的值?像这样
applicationInfo.metaData.putInt("com.google.android.gms.version", 4323000);
添加的新库之一也可能声明了旧的/不同的com.google.android.gms.version
。
如果仅在华为上发生,则华为可能会尝试使用某些值进行覆盖。
要确认它是您自己的图书馆还是华为,您必须将其硬编码到清单中,然后分析内置的apk并检查其中合并的最终值。如果该值符合预期,则可能是华为在这样做。
您也可以尝试以下链接: https://stackoverflow.com/a/52249677/6668797
如果库使用的是旧版本/不同版本,则它将用您的版本覆盖。
如果仍然无法解决问题,请提供以下详细信息: 请共享完整的堆栈跟踪。 是否在任何Nexus / Pixel设备上发生? 哪些是新添加的库?