写点什么

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

2014 年 12 月 07 日

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

2014 年 12 月 07 日 00:032897
用户头像

发布了 75 篇内容, 共 58.1 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
  • 用 JavaFX 构建部署 Android 应用

    发明Java的最初意图是为嵌入式设备提供一个软件环境。然而,历史怪圈让Java成为了企业及软件的首选语言。随着Java 8的核心库中引入成熟的富客户端应用框架JavaFX,一切又回到了原点。本文将为读者展示如何在Android设备上部署JavaFX应用,JavaFX平台的游戏规则可能会因此而改变。

  • 有哪些已经投入生产的 WebAssembly 真实案例?

    在这节课里,我们举了两个比较有代表性、在现实生活中的 Wasm 生产实践案例。

    2020 年 9 月 25 日

  • 文章:在 Fedora Core 上交付 Java 应用

    Fedora Core 4是第一个包含了许多用Java编写的代码的版本。gcj打算实现一个完整的系统,该系统兼容Java并将预编译器(ahead-of-time compiler)置于中心。它有一个基于GNU类路径的净化类库和一个内置的解释器。其编译器可以把Java源文件、类文件、甚至整个jar文件编译成目标码。本文主要介绍了gcj的基础和应用。

  • 领略 Kotlin 协程的力量

    演讲嘉宾 张涛,饿了么资深 Android 工程师。 内容介绍 开发者越来越关注异步编程效率的问题,Kotlin 用协程(coroutine)新颖地解决了这个问题,并且可以无缝结合到 Android 代码中。本次分享将带领听众从一个小例子开始,自顶向下的理解 Kotlin 协程是什么,协程的本质与工作机制,如何快速的使用协程,如何使用协程改造自身的项目,从而在实践中理解是什么使得协程在Android上如此优秀。 演讲大纲 1.协程是什么 2. 通过Kotlin在JVM使用协程 3. Kotlin 的协程实现

    2018 年 9 月 12 日

  • 在 Kotlin 中使用 Gradle 构建缓存

    Kotlin 1.2.21允许Kotlin项目使用构建缓存。通过Gradle的构建缓存功能,可以提升Kotlin代码的编译速度,加快开发周期。本文将结合实际例子,介绍利用Gradle加速Kotlin代码编译的原理、配置示例以及在IDE中的使用方法。

  • OCaml 已经做好 iOS 开发准备

    近日,来自旧金山的程序员Edgar Aroutiounian为OCamliOS(Jeffrey A. Scofield不久前推出的一个面向iOS的OCamml交叉编译器)创建了一个程序包。InfoQ就此对他进行了采访。

  • Gluon:在 iOS 和 Android 上运行同一份 Java 代码

    Gluon宣布支持在iOS上运行Java应用程序,该支持目前尚处于Beta阶段。

  • JUniversal:由微软开发的从安卓向 Windows Phone 和 iOS 移植应用的工具

    微软最近开源了一个用于编写Java跨平台移动应用的工具——JUniversal。

  • 工具漫谈:编译、格式化、代码检查、排错各显身手

    用好工具,可以大大提升你的开发效率。

    2020 年 1 月 13 日

  • AIDE 2.0 引入对原生 C/C++ 应用的支持

    AIDE是一款运行在Android上的Android IDE。AIDE 2.0添加了对C/C++的支持,加入了新的设计视图和更好的UI,并改进了与Git的集成。

  • 练习 Sample 跑起来 | 热点问题答疑第 1 期

    今天我就针对第1期~第4期中,同学们集中遇到的问题做一期答疑。

    2018 年 12 月 15 日

  • 从重新认识前端渲染开始,小红书的前端性能监控及优化实践

    演讲嘉宾2016 年底加入小红书至今,目前任职于社区前端组,负责了包括小红书前端工程化、服务端同构、Hybrid 容器层建设(WebView、React Native)等方向。对于跨平台混合开发场景有丰富的实践,并在效率、性能等方向累积了一定的工程化解决方案经验。内容介绍App WebView 的混合开发方式由于其高效的迭代效率一直在业界备受应用,也正因如此,其渲染性能也往往被拿来和 Native 应用去做横向比较,自然也对前端开发者提出了更高甚至跨 scope 的技能要求。对此,我们的分享先会从拆解我们所关注的核心性能感官体验开始(First Paint, First Meaningful Paint, First Screen Paint),并且从工具侧和监控侧赋能工程师,找到影响各个关键渲染帧的症结,逐步渗透到包括在 Vue 等主流 MVVM 框架下一些实践对性能的影响。带着以上的思考和实践,分享会再聚焦“零白屏/首屏秒开”的目标,讲解小红书前端如何借助客户端缓存能力、服务端渲染能力,实现的工程化的前端渲染性能优化解决方案。演讲提纲: App WebView 开发模式给前端开发者提出的挑战,传统前端性能评估方式的崩塌 核心性能体验指标的梳理和工程化的采集监控方案 基于关键渲染帧的过程拆解、工具,和多个场景下的 practice 小红书前端基于客户端缓存能力、服务端渲染能力的“零白屏/首屏秒开”方案 前端性能优化的工程化思考

    2019 年 7 月 24 日

  • Groovy 2.4 发布,支持 Android 开发

    近日,Groovy编程语言的管理者Guillaume Laforge在博客上宣布了Groovy 2.4发布的消息。就在不久前,Pivotal宣布不再资助Groovy/Grails项目,Groovy 2.4将成为Pivotal资助下的最后一个主要的Groovy版本。该版本最大的亮点就是对Android的支持。

  • 关于编译,你需要了解什么?

    我们应该怎样优化编译速度呢?微信、Google、Facebook等国内外大厂都做了哪些努力呢?

    2019 年 2 月 19 日

  • 安卓上的 Kotlin:安卓 KTX、Kotlin Bootcamp Udacity 等等

    最近,谷歌展示了一系列努力来改善Kotlin开发人员在安卓平台上的体验,其中包括安卓KTX、Kotlin Bootcamp Udacity课程、Lint支持等等。

  • Android Studio 切换到新的 D8 编译器

    据谷歌软件工程师Jeffrey van Gogh介绍,近日发布的Android Studio 3.1切换到了一个新的DEX编译器,旨在提供更好、更快的编译。

发现更多内容

江苏智慧平安社区建设,智慧社区管理平台开发

135深圳3055源中瑞8032

EXCEL数据太“脏”无从下手?何须用python,ETL一分钟搞定

智分析

Excel ETL

LeetCode题解:105. 从前序与中序遍历序列构造二叉树,递归+哈希表,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

数字货币应用从C端走向B端 实践中这些难题仍需关注

CECBC区块链专委会

数字货币

Android面试(二)

举头三尺有维尼

蝉联 Apache 最活跃项目,Flink 社区是如何保持高速发展的?

Apache Flink

flink

第一周作业

Esther

阿里云 RTC QoS 屏幕共享弱网优化之若干编码器相关优化

阿里云视频云

WebRTC 音视频会议 网络 RTC 视频会议

AES128解密只能解一半的问题

李日盛

AES 问题定位

实现数字经济和实体经济深度融合

CECBC区块链专委会

区块链

永续合约APP系统软件开发

开發I852946OIIO

系统开发

架构师训练营第三周作业 - 学习总结

阿德儿

无敌!全面对标字节跳动2-2:算法与数据结构突击手册(leetcode)

Java成神之路

Java 程序员 架构 面试 编程语言

万字带你深入阿里开源的Canal工作原理

大数据老哥

大数据 canal

阿里开源SpringSecurity:用户+案例+认证+框架

996小迁

Java 程序员 架构 面试 springsecurity

观看辽篮比赛,思考团队管理——关于团队的灵魂拷问,你中了几个?

伯薇

团队管理 团队建设 团队 赋能 激励

二面阿里Java岗惨败,问的全是源码、Redis、中间件、Dubbo,整吐了

Java成神之路

Java 程序员 架构 面试 编程语言

天猫双十一订单峰值58.3万笔/秒的背后,秘密都在这份文档里

Java成神之路

Java 程序员 架构 面试 编程语言

关于JDK15的简单理解

Java架构师迁哥

跨界融合,区块链推动实体经济提档升级

CECBC区块链专委会

人工智能 云计算 大数据

Redis 学习笔记 08:数据结构与对象小结

flyer0126

redis 日更挑战 28天写作

胜天半子!阿里内部力荐SpringBoot全栈笔记全网首发,源码实战齐飞

Java架构之路

Java 程序员 架构 面试 编程语言

你kin你擦!阿里终于肯把内部高并发编程高阶笔记开源出来了

Java架构之路

Java 程序员 架构 面试 编程语言

客户服务高触达,零代码从短信/邮件跳转小程序客服

环信

区块链电子合同技术方案,区块链电子合同存证

135深圳3055源中瑞8032

一文读懂 Serverless,将配置化思想复用到平台系统中

Serverless Devs

Serverless 云原生 PaaS

为什么你家的 K8s 应用平台不好用?

孙健波

Kubernetes PaaS KubeVela

百度首届智能小程序高校大赛圆满结束:关注学生心理健康小程序获全国一等奖

DT极客

边缘安全 | 正确使用CDN 让你更好规避安全风险

阿里云Edge Plus

安全 CDN

​Kubernetes资源清单篇:如何创建资源?​

xcbeyond

Kubernetes 28天写作 Kubernetes从入门到精通

Soul网关源码阅读(八)路由匹配初探

Java 源码阅读 网关

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