1海蔽、Split參數(shù)說明:
enable:是否啟用ABI拆分機制
reset():重置ABI列表為只空字段世落,一般和include抹竹、exclude一起使用,如果要用必須在include和exclude前面盏档。
include:指明要包含哪些ABI,目前使用最多的為64位處理器的arm64-v8a燥爷,其次才是armeabi-v7a
exclude: 默認包涵下所有ABI蜈亩,可以移除一些ABI
universalApk:是否打包一個通用版本懦窘,包含所有的ABI,默認值為false
舉例:設(shè)置代碼如下
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文件
根據(jù)不同平臺選擇不同的apk
2、abiFilters過濾
先設(shè)置splits愤惰,不設(shè)置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文件
再設(shè)置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文件
結(jié)論:abiFilters過濾就是在splits的基礎(chǔ)之上忿晕,再選擇打入universal中所包含的幾種處理器架構(gòu)的文件夾的