今天分享 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 配置,请进传送门
若是以为本篇博文对你有所启发或是解决了困惑,给个赞或关注我呀,小盆友会继续分享更多的优质文章。
或是请我喝杯咖啡吧,小盆友会更加信心百倍的写下去