对Android插件的要求
- Gradle 4.4 或者更高
- Build Tools 27.0.3 或者更高
D8编译器的引入
gradle3.1.0 后 加入了新的Dex编译器 D8.
DEX编译是将.class字节码转换为Android Runtime(或Dalvik,适用于旧版Android)的.dex字节码的过程。
相比于之前的Dex编译器,D8编译速度更快,并输出更小的DEX文件,同时具有相同或更好的应用运行时性能。
您可以通过在项目的gradle.properties文件中来临时禁用D8:
android.enableD8=false
行为变化
- 该插件默认不再为以下ABI生成APK:mips,mips64和armeabi
如果您想构建以这些ABI为目标的APK,则必须使用NDK r16b或更低版本,并在build.gradle文件中指定ABI,如下所示:
splits {
abi {
include 'armeabi', 'mips', 'mips64'
...
}
}
- InstantRun,Splits 增加 language配置
如果您的应用程序包含zh-TW或zh-CN语言环境的资源,Gradle将以zh语言配置拆分打包这些资源。您可以通过使用include属性定义您自己的组来覆盖此行为,如下所示:
splits {
language {
enable true
// Each string defines a group of locales that
// Gradle should package together.
include "in,id",
"iw,he",
"fil,tl,tgl",
"yue,zh,zh-TW,zh-CN"
}
}
- Android插件的构建缓存现在会清除超过30天的缓存条目
- 将“auto”传递给resConfig不再会自动挑选字符串资源打包到APK中
如果您继续使用“auto”,则该插件会打包您的应用程序及其依赖项提供的所有字符串资源。因此,您应该指定您希望插件打包到APK中的每个区域设置。 - 由于本地模块不能依赖于您的应用的测试APK,因此使用androidTestApi配置(而不是androidTestImplementation)将依赖关系添加到测试过的测试中会导致Gradle发出以下警告:
WARNING: Configuration 'androidTestApi' is obsolete
and has been replaced with 'androidTestImplementation'
修复Bug
- 修复了Android Studio无法正确识别组合构建中的依赖关系的问题
- 修复了在单个构建中多次加载Android插件时出现项目同步错误的问题 - 例如,当多个子项目在其buildscript类路径中包含Android插件时。