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
评论