我正在使用一个已经运行了大约 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/

10-10 07:06