看新闻很累?看技术新闻更累?试试 下载InfoQ手机客户端 ,每天上下班路上听新闻,有趣还有料!
据谷歌软件工程师Jeffrey van Gogh介绍,近日发布的Android Studio 3.1切换到了一个新的 DEX编译器 ,旨在提供 更好、更快 的编译。
除了速度更快之外,新编译器D8据称与之前的DX编译器相比有着同等或更好的运行时性能。
把.class字节码转换成.dex字节码,是Android运行时构建Android应用时的必要步骤,直接影响整体构建时间和App性能。谷歌通过自己的 基准测试项目 测出,编译时间缩短了20%,而且.dex文件更小,虽然只有几个百分比。这些结果应该要打个折扣,因为它们是基于单一的框架。实际上,有用户已经报告,他们在Android Studio 3.0中使用D8时 编译时间增加 了。
除了其他好处外,使用D8还有一个好处,就是支持 脱糖 ,让Java 8才提供的特性(如lambdas)可以转换成Java 7特性。把脱糖步骤集成进D8影响了所有读或写.class字节码的开发工具,因为它会使用Java 8格式。你可以在gradle文件中设置一个属性,恢复到以前的行为,让脱糖发生在Java编译之后,.class字节码仍遵循Java 7格式:
android.enableD8.desugaring = true
如果你在使用D8时遇到了任何一般性问题,你可以通过修改gradle.properties文件里的一个属性恢复到DX,如下所示:
android.enableD8=false
虽然D8现在是Android Studio的默认编译器,但那不是说开发人员要忙着迁移他们的App。事实上,在谷歌可以确信D8不会导致任何用户的退化之前,旧的DX编译器将一直可用。也就是说,至少在六个月内,谷歌将继续修复在DX中发现的Bug。在第一阶段,谷歌工程师将密切监控D8 Bug追踪器,查找任何可能影响迁移计划的问题。在六个月没有重大退化之后,谷歌还将保留DX至少一年,以确保任何开发团队都有足够的时间迁移。此后,将只有旧版本的Android Studio提供DX。
查看英文原文: Android Studio Switched to New D8 Compiler