關(guān)于Split分包和abiFilters過濾的打包問題

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)的文件夾的

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容