我正在使用一个已经运行了大约 4 年的大量使用应用程序,在上一个版本中实现了一些新库,在实现之后我们在尝试检查 Google Play 服务是否可用时遇到了一些问题,这只会发生在搭载 Android 8+ 的华为设备上。 logcat 向我们展示了这个堆栈跟踪
我们在 list 上有正确的值:
<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'
}
有谁知道如何解决这个问题?
最佳答案
您是否在应用程序的任何地方对 gms 版本的值进行了硬编码?像这样的东西
applicationInfo.metaData.putInt("com.google.android.gms.version", 4323000);
您添加的新库之一也可能声明了旧的/不同的 com.google.android.gms.version
。
如果它只发生在华为身上,那么华为有可能试图用一些值(value)来覆盖。
要确认它是您自己的库还是华为,您必须将其硬编码到 list 中,然后分析您构建的 apk 并检查合并到其中的最终值。如果这个值符合预期,那么这可能是华为在做的。
你也可以试试这个链接:
https://stackoverflow.com/a/52249677/6668797
如果库使用的是旧版本/不同版本,那么这将用您的版本覆盖它。
如果问题仍未解决,请您提供以下详细信息:
请分享完整的堆栈跟踪。
它是否发生在任何 Nexus/Pixel 设备上?
哪些库是新添加的?
关于android - 华为设备 : The meta-data tag in your app's AndroidManifest. xml 没有正确的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56397850/