在android Build Tools 21.1.1之后,增加了新的編譯工具Jack 和Jill圆丹。要使用Jack還需要android studio 2.1版本以上。
Jack工作原理
Legacy javac toolchain:
javac (.java → .class) → dx (.class → .dex)New Jack toolchain:
Jack (.java → .jack → .dex)
編譯產(chǎn)生的中間文件為jack劫樟,不過從java到dex的編譯工程通過jack一個工具就完成了葫盼,jar和aar會經(jīng)過Jill工具生成jack文件,同java文件生成的jack文件一起被編譯為dex瓦灶,在從jack到dex的過程中鸠删,會進行混淆操作
Jack的好處
1.可以支持部分Java 8的語法:
Lambda expressions (also available on API level 23 and lower)
Method References (also available on API level 23 and lower)
2.可以加快編譯速度
配置使用Jack
android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
向jack傳入?yún)?shù)
android {
...
defaultConfig {
...
jackOptions {
enabled true
additionalParameters("jack.incremental" : "true")
}
}
...
}
jack的參數(shù)列表可以通過下面的命令獲得
java -jar <SDK>/build-tools/<build-tools-version>/jack.jar --help-properties
已知的問題
1.instant run不能使用
2.需要使用class才能工作的工具不能使用了
- 比如Jacoco,AOP工具