Jack 和 Jill:旨在更高性能的新版安卓编译器

  • Abel Avram
  • 丛一

2014 年 12 月 7 日

话题:GoogleAndroid语言 & 开发

Saikoa的技术总监 Eric Lafortune,DexGuard 的创造者,在安卓 5.0 修订版 1(API 21.1)的 SDK 中发现了一些新的工具,主要是名为 Jack 和 Jill 的两个编译器。这些工具旨在简化安卓的编译流程。

谷歌在 KitKat 版本中引入了安卓运行时(ART)环境作为实验性的工具,并且在 Lollipop 版本中用它替换了 Dalvik 作为默认的运行时环境。在设备上安装应用程序时,ART 获取 DEX 字节码然后将其转化为本地代码,进行预编译的同时又兼顾设备本身的特性。而现在,谷歌似乎正在进一步增强编译流程。

据 Lafortune 介绍,Jack 是一个基于 Eclipse Java 编译器和ProGuard的工具。ProGuard 是一个调优工具,通过删除无用的代码缩减代码库,通过重命名类、方法和属性混淆代码库。虽然 ProGuard 已经被整合到安卓的构建系统中,并且在生成发布包时推荐使用,开发者仍然可以自主选择是否要使用它。如果 Jack 成为官方工具,开发者就必须要强制使用这个工具,不过通过配置文件,他们对这个工具还是会有一定的控制权。

另外一个新工具 Jill 用于将 Java 库字节码转化成名为 Jayce 的中间字节码。Jack 对 Java 源码和 Jayce 字节码进行编译,生成经过优化的 DEX 字节码。据 Lafortune 描述,这两个编译器“看起来相当实用”,尽管 Jack 目前还不支持“ProGuard 的一些高级功能,例如移除日志代码”。

这两个编译器目前还不支持 Java 8,不过他们力争“向后兼容并且开放将来扩展的可能性”,Lafortune 补充到。开发者可以在使用安卓 plugin 1.0.0 RC的 Gradle 构建中试用这些编译器。

作为谷歌提升其移动操作系统性能的又一次尝试,Jack 和 Jill 能够生成更加优化的代码,尺寸更小并且可能是经过混淆的。

查看英文原文:Jack & Jill: New Android Compilers for More Performance

GoogleAndroid语言 & 开发