从 android build tools v.21 开始,加了一套新的工具链:Jack。
过去 Java 代码要经过 javac 编译成 .class 字节码,然后 jar 打包成 .jar,再丢给 dex 命令转成 .dex,中间可能还会用到 ProGuard 做代码混淆和瘦身。
Jack 命令集这些功能于一身,可以一步完成:.java+.jack => jack => .dex 。
现有的 .jar ,则可以通过工具链中的 jill 命令转成 .jack 格式的库。
有趣的是,如果想在 Android N 应用里启用 Java8,必须使用 jack 工具链,需要在 AS 里手工修改 build.gradle 启用:
android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}