1、splits参数说明:
enable: 是否启用ABI拆分机制
reset():重置ABI列表为只空字符串,一半和include、exclude一起使用,如果要用必须在include和exclude前面
include:指明要包含哪些ABI,目前使用最多的伪64位处理器的arm64-v8a,其次才是armeabi-v7a
exclude:默认包含下所有ABI,可以移除一些ABI
universalApk:是否打包一个通用版本,包含所有的ABI,默认值为 false
举例:设置代码如下
splits {
abi {
enable true
reset()
include 'arm64-v8a','armeabi-v7a'
// exclude 'armeabi'
universalApk true
}
}
那么这种情况下打包会生成3个apk,我们把它们解压缩一探究竟,
第一个:app-arm64-v8a-release.apk,里面只会包含arm64-v8a文件夹中的so文件
第二个:app-armeabi-v7a-release.apk,里面只会包含armeabi-v7a文件夹中的so文件
第三个:app-universal-release.apk,里面会包含arm64-v8a和armeabi-v7a文件夹中的so文件
根据不同平台选择不同的apk
2、abiFilters过滤
先设置splits,不设置abiFilters的情况下,代码如下:
splits {
abi {
enable true
reset()
include 'arm64-v8a','armeabi-v7a','armeabi'
// exclude 'armeabi'
universalApk true
}
}
那么这种情况下打包会生成4个apk
第一个:app-arm64-v8a-release.apk,里面只会包含arm64-v8a文件夹中的so文件
第二个:app-armeabi-v7a-release.apk,里面只会包含armeabi-v7a文件夹中的so文件
第三个:app-armeabi-release.apk,里面只会包含armeabi文件夹中的so文件
第四个:app-universal-release.apk,里面会包含arm64-v8a、armeabi-v7a、armeabi文件夹中的so文件
再设置abiFilters过滤:
ndk {
abiFilters 'arm64-v8a',"armeabi-v7a"
}
那么这种情况下仍然会打包会生成4个apk
第一个:app-arm64-v8a-release.apk,里面只会包含arm64-v8a文件夹中的so文件
第二个:app-armeabi-v7a-release.apk,里面只会包含armeabi-v7a文件夹中的so文件
第三个:app-armeabi-release.apk,里面只会包含armeabi文件夹中的so文件
第四个:app-universal-release.apk,里面会包含arm64-v8a和armeabi-v7a文件夹中的so文件
结论:abiFilters过滤就是在splits的基础之上,再选择打入universal中所包含的几种处理器架构的文件夹的
本文深入探讨了在Android开发中如何使用splits参数进行ABI拆分与abiFilters过滤,详细解析了enable、reset、include、exclude及universalApk参数的作用,以及它们如何影响APK的生成与内容。
3053

被折叠的 条评论
为什么被折叠?



