【问题标题】:Abi filter - shadowed by one or more APKs with higher version codesAbi 过滤器 - 被一个或多个具有更高版本代码的 APK 遮蔽
【发布时间】:2018-07-19 14:57:16
【问题描述】:

我有一个使用 vlc 库的媒体播放器应用程序。 VLC 有用于“armeabi-v7a”和“arm64-v8a”的 jni 库。 现在为了减小大小,我想分别为这两种架构上传 apk,所以我在 gradle 中制作了风味。 gradle 中的调味代码如下所示: flavorDimensions “默认”

productFlavors {

    arm64 {
        versionCode 73
        versionName "1.0.4"
        ndk.abiFilter "arm64-v8a"
    }
    arm {
        versionCode 74
        versionName "1.0.4"
        ndk.abiFilter "armeabi-v7a"
    }
}

我得到的 apk 有 libs 文件夹,其中包含它们各自的文件,arm64 用于 arm64-v8a 和 armv7 用于 armeabi-v7a,这两个 apk 的大小不同。

现在问题是当我将这两个 apk 上传到 Beta 版或 Alpha 版的 Playstore 时,我收到错误:

此 APK 将不会提供给任何用户,因为它完全被一个或多个具有更高版本代码的 APK 所掩盖。

如果我在 v8 之后上传 v7,v8 表示它将被更高版本(即 v7)所覆盖。

任何想法为什么会发生这种情况,当存在基于哪个 playstore 识别风味差异的 libs 文件夹时。

【问题讨论】:

    标签: android android-ndk


    【解决方案1】:

    我发现了错误。

    由于 v8 向后兼容,armv8 也可以运行 v7 apk。因此,v8 apk 应该具有比 v7 更高的版本代码,因此具有 armv8 架构的用户应该使用 v8 apk。所以我不得不把它做成这样:

    productFlavors {
    
        arm64 {
            versionCode 75 // <- higher version code than v7
            versionName "1.0.4"
            ndk.abiFilter "arm64-v8a"
        }
        arm {
            versionCode 74
            versionName "1.0.4"
            ndk.abiFilter "armeabi-v7a"
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多