代码之家  ›  专栏  ›  技术社区  ›  Ajji

ABI筛选器-由一个或多个具有更高版本代码的APK隐藏

  •  1
  • Ajji  · 技术社区  · 7 年前

    我有一个使用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 伦敦议会大厦 包含各自文件的文件夹,arm64用于arm64-v8a,armv7用于armeabi-v7a,这两个apk的大小不同。

    现在 问题 当我将这两个apk都上传到beta或alpha版本的PlayStore时,我会得到错误:

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

    如果我在V8之后上传V7,V8说它将被更高版本(即V7)隐藏。

    如果有libs文件夹,PlayStore根据它来识别不同的口味,那么为什么会发生这种情况呢?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ajji    7 年前

    我发现了错误。

    由于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"
        }
    }