Android Studio切换到新的D8编译器

据谷歌软件工程师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

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址http://www.infoq.com/cn/news/2018/04/android-studio-d8-compiler
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券