Android Studio 2.2版本对Java8提供了更稳定的支持,可以直接用官方的Lambda表达式。启用的同时还需使用新的 Jack 工具链。新的 Android 工具链将 Java 源语言编译成 Android 可读取的 Dalvik 可执行文件字节码,且有其自己的 .jack 库格式,在一个工具中提供了大多数工具链功能:重新打包、压缩、模糊化以及 Dalvik 可执行文件分包。
以下是构建 Android Dalvik 可执行文件可用的两种工具链的对比:
旧版 javac 工具链:
javac (.java --> .class) --> dx (.class --> .dex)
新版 Jack 工具链:
Jack (.java --> .jack --> .dex)
配置方法
在模块层级的 build.gradle 文件中输入以下内容:
android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
之后会遇到问题:代码中控制的中文全部乱码
一开始测试的时候是弹出Toast后乱码,于是改成Log,还是乱码。以为是Android Studio的编码设置有问题,点设置一看全是UTF-8
。
一番查阅之后发现,是Jack编译器里的一个bug,Jack使用的是虚拟机的默认编码,在Windows上是windows-1252
,而代码中用了UTF-8
,然后Jack编译时用windows-1252
,这就是乱码的原因。
解决方案:在project中的gradle.propertie文件中添加-Dfile.encoding=UTF-8
(图上是我的设置,各位只需自行添加后面那段即可)
之后Rebuild Project,再Run App,即可得到正常的中文
参见:
http://www.tuicool.com/articles/2yuiiyA