本文主要是介绍关于 ndk { abiFilters ‘arm64-v8a‘ } 与splits { abi { include “arm64-v8a“}}的互斥冲突,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Android 官网通知,从 2019 年 8 月 1 日开始,您在 Google Play 上发布的应用必须支持 64 位架构。64 位 CPU 能够为您的用户提供更快、更丰富的体验。
如果想要打出的 一个apk包,
包含多个架构的 so('arm64-v8a','armeabi-v7a')库
需要下面的配置:
android {... // 其它配置defaultConfig {... // 默认配置ndk {//选择要添加的对应cpu类型的.so库。abiFilters 'arm64-v8a', 'armeabi-v7a'// 还可以添加// 'armeabi',// mips,mips64, // x86_64, // armeabi, // 'x86', }}... // 其它配置
}
如果想要打包多个不同so架构的 apk
包,可以使用 ABI
拆分,需要下面的配置:
这个会打包 一个arm64-v8a apk包 和打包一个armeabi-v7a apk包
android {... // 其它配置splits {abi {reset()//重置 ABI 列表为只包含一个空字符串(与 include 一起使用可以表示要使用哪一个 ABI,而不是要 exclude 哪些 ABI)enable true // 设为true,才能启用ABI拆分机制在打包时根据架构生成不同的apk文件universalApk false // If true, 构建支持所有平台abi类型,构建一个包,包含多个架构的so(只要代码中有的都会打进去)include "arm64-v8a","armeabi-v7a" // 设置所有要支持的abi类型,构建多个包,每个包只包含一个架构的soexclude "x86" // 设置所有不要支持的abi类型}}
}
这种配置是没有办法让打出的
apk
只包含自己想要的多种so架构的。因为ABI
拆分当中的include
是和ndk abiFilters
互斥的操作!!ERROR: Conflicting configuration : 'arm64-v8a' in ndk abiFilters cannot be present when splits abi filters are set : arm64-v8a
解决方案:
如果两种方式分开配置都可以运行;
两种方式一起配置在不报错的情况下(ABI拆分注调include
),ABI
拆分不生效;
多架构的apk只能使用abiFilters
这篇关于关于 ndk { abiFilters ‘arm64-v8a‘ } 与splits { abi { include “arm64-v8a“}}的互斥冲突的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!