BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

ZeroTurnaround宣布JRebel for Android 1.0

| 作者 Abraham Marín Pérez 关注 8 他的粉丝 ,译者 谢丽 关注 9 他的粉丝 发布于 2016年1月15日. 估计阅读时间: 6 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

ZeroTurnaround发布了JRebel for Android的第一个稳定版本。它是流行插件JRebel的Android版本,允许修改正在运行中的应用程序,而且不必重新部署或重启。JRebel for Android适用于Android Studio,可以从JetBrains插件库下载,支持所有运行Android 4.0及以上版本的手机和平板。ZeroTurnaround提供了为期21天的免费试用,起步价为每年49美元。

Android开发人员经常抱怨底层技术如何导致了缓慢的反馈回路。开发人员每次想要查看代码修改的效果时,都需要将Android应用重新编译、打包和安装到Android设备上并重启。除了需要耽误时间外,如果修改的特性是特定工作流中下游的一些步骤,开发人员还将不得不在每次变更部署后重新检查整个工作流。为此,开发者社区呼吁创建一种热交换功能至少已经有两年了。

为了满足这个需求,ZeroTurnaround在2014年开始了与JRebel for Android相关的工作,并在2015年4月提供了一个测试版本。基于来自测试计划的反馈,ZeroTurnaround在2015年9月推出了早期试用版。JRebel for Android插件会向Android Studio的Run菜单添加新的操作选项,并修改Gradle构建文件,将允许同正在运行的应用程序进行代码热交换的工具包含进来。在Vimeo上,ZeroTurnaround官方账号提供了一个演示视频——JRebel for Android实战


JRebel for Android in Action from Official ZeroTurnaround Account on Vimeo.

技术细节

虽然提供了类似的功能,但底层技术的差别意味着传统的JRebel与JRebel for Android有着截然不同的工作方式。对于JRebel,Java代码的变化会被编译,而生成的字节码会通过类的重新加载插入到正在运行的Web应用程序。但是,Android甚至都不使用Java虚拟机:直到Android 4.0,Java代码都是被编译成DEX文件,然后由Dalvik虚拟机解释执行(在必要的打包和安装之后);从Android 5.0往后,DEX文件接下来会被设备本身编译成原生机器代码;因此需要一种不同的方法。

按照ZeroTurnaround的说明,JRebel for Android修改项目的Gradle构建文件,创建一个只包含JRebel for Android代理的shell APK;这是唯一一个需要安装到开发用Android设备上的APK。然后,实际的应用程序(DEX文件和资源)会通过ADB发送给代理,后者会将它们作为一个正在运行的应用加载。一旦有修改,相关的DEX文件就会重新构建并同修改过的资源一起发送给代理,而不需要重新创建或安装一个新的APK。

为了动态加载变化了的代码,代理会针对栈里最上面的活动调用Activity.recreate,就是说会调用onCreate、onStart、onResume。因此,为了使应用能够准确地在原处重新加载,开发人员需要恰当地处理onSaveInstanceState。

JRebel for Android代理只存在于开发过程中,当准备正式发布时,APK中会只包含相关的DEX文件和资源。

可选方案

由于社区对于这类应用程序存在很大的需求,过去几年来已经出现了若干类似JRebel for Android的工具。虽然在InfoQ调查过的工具里面,没有一款同JRebel一样功能完善,但它们可能适合某些特定的需求,因此也值得一提。

Buck (Exopackage):由Facebook创建,使用它需要修改应用。免费使用。

Mirror:仅用于布局的快速编辑,不能向设备推送代码。一次性支付79美元即可获得使用许可,也可以免费试用30天。

Intel XDK中的“在线开发任务(Live Development Tasks)”:Intel XDK是一个基于Cordova开发HTML5混合应用的IDE,不支持原生Android应用开发。免费使用。

Android设计预览:该工具仅简单地将部分桌面镜像到Android设备上;它不支持设备内交互,但可以提供一种快速测试布局的方法。免费使用。

LayoutCast:尚处于早期开发阶段,因此功能有限且存在稳定性问题。只能用于Android 5及更高版本。免费使用。


感谢谢丽对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者(已满),InfoQ读者交流群(#2)InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT