我有一个使用vlc库的媒体播放器应用程序。 VLC具有用于“ armeabi-v7a”和“ arm64-v8a”的jni库。 现在要减小大小,我想分别为这两种体系结构上载apk,因此我在gradle中做了一些尝试。 gradle中的调味代码如下所示: flavourDimensions“默认”
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)遮盖。
这是为什么发生的任何想法,当存在libs文件夹时,该文件夹根据哪个playstore识别风味的差异。
答案 0 :(得分: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"
}
}