今天分享 splits 配置,從字面意思知道有着 「切開」 的意思,他的做用實際上是幫咱們把 apk 包從不一樣維度進行「切開」,減少apk的大小,從而讓用戶在下載時節省流量。android
Splits 會映射爲 com.android.build.gradle.internal.dsl.Splits
類,沒有繼承任何類。git
splits 主要是用於打包時的拆包,因此咱們須要的是進行apk的打包編譯。github
// app:clean 爲了先清空以前的文件
// app:aR 進行編譯 release 包
// mac 使用 ./gradlew
// window 使用 gradlew
./gradlew app:clean app:aR
複製代碼
AbiSplitOptions
講解。splits {
abi {
enable true
}
}
複製代碼
abi {
// 是否開啓
enable true
// 排除沒必要要的架構
exclude 'x86','arm64-v8a'
}
複製代碼
初始化列表會由於gradle的版本不一樣有所改變架構
abi {
// 是否開啓
enable true
// 重置包含的目錄
reset()
}
複製代碼
描述:設置咱們須要的架構。注意的是,咱們須要先使用reset方法將默認列表清空,而後再設置。app
使用:gradle
abi {
// 是否開啓
enable true
// 重置包含的目錄,由於已是包含所有
reset()
// 設置包含,調用前須要先用 reset 將默認清除
include 'armeabi-v7a', 'x86'
}
複製代碼
abi {
// 是否開啓
enable true
// 是否打出包含所有的apk
universalApk true
}
複製代碼
DensitySplitOptions
講解。density {
// 開啓
enable true
}
複製代碼
density {
// 開啓
enable true
// 排除分辨率
exclude 'hdpi', 'ldpi', 'mdpi', 'xhdpi'
}
複製代碼
默認列表會根據gradle的版本有所不一樣。ui
density {
// 開啓
enable true
// 重置默認分辨率列表
reset()
}
複製代碼
density {
// 開啓
enable true
// 重置默認分辨率列表
reset()
// 包含分辨率
include 'hdpi', 'xxhdpi'
}
複製代碼
AndroidManifest.xml
中添加一個匹配的 < compatible-screens > 節點。不過官方並不建議這麼使用,由於會限制應用支持的設備類型。咱們應該儘量的支持多種設備。值得一提的是,< compatible-screens > 節點並不會在 apk 的安裝和使用過程當中發揮最用,它是提供給外部使用的,例如google play。google
density {
// 開啓
enable true
// 會在 manifest 中添加 < compatible-screens><screen ... >
compatibleScreens 'small', 'normal', 'large', 'xlarge'
}
複製代碼
僅當爲Android Instant Apps構建配置APK時,才支持構建每一個語言的APK。spa
LanguageSplitOptions
講解。language {
enable = true
}
複製代碼
language {
enable = true
include "fr", "zh", "en"
}
複製代碼
Gradle項目地址:Github傳送門code
本篇博文的 splits 配置,請進傳送門
若是以爲本篇博文對你有所啓發或是解決了困惑,給個贊或關注我呀,小盆友會繼續分享更多的優質文章。
或是請我喝杯咖啡吧,小盆友會更加信心百倍的寫下去