【大咖分享】AI 大模型时代,架构师有哪些机遇和挑战? 了解详情
写点什么

ZeroTurnaround 宣布 JRebel for Android 1.0

  • 2016-01-14
  • 本文字数:1672 字

    阅读完需:约 5 分钟

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 读者交流群(#2))。

2016-01-14 18:002494
用户头像

发布了 1008 篇内容, 共 360.3 次阅读, 收获喜欢 334 次。

关注

评论

发布
暂无评论
发现更多内容

SAP ABAP 和 Java 里的弱引用(WeakReference)和软引用(SoftReference)

Jerry Wang

Java 引用 SAP abap 8月月更

前半个月的行动中,整个圈子都在疯传的“内网King”到底是个啥?

青藤云安全

网络安全 主机安全 攻防演练

打了15天,如何做到在容器权限上不失一分?

青藤云安全

容器安全 攻防演练

Web3.0 DAPP项目智能合约系统开发技术详情

开发微hkkf5566

如何在 TiDB Cloud 上使用 Databricks 进行数据分析 | TiDB Cloud 使用指南

TiDB 社区干货传送门

马拉车算法 (最长回文串 例题 密码截获)

Five

算法 8月月更

5分钟,带你看完24岁60W年薪架构师的简历,上面竟然写着精通JVM

收到请回复

Java JVM java面试 简历模板 金九银十

优雅,永不过时!SpringBoot中这样编写Controller层代码,那叫一个完美

Java永远的神

Java 程序员 面试 程序人生 springboot

20万字的《Kafka运维实战宝典》PDF现在免费下载了

石臻臻的杂货铺

大数据 kafka

手把手教你实现 TiFlash 向量化函数丨十分钟成为 TiFlash Contributor

TiDB 社区干货传送门

数字知识库-知识图谱管理系统

金陵老街

Java 数字化 知识图谱 企事业系统

修筑产学研用一体化的通衢,从一场比赛背后瞭望苏州园区人才培养新范式

脑极体

字节一面:HTTPS 一定安全可靠吗?

程序员小毕

Java 程序员 面试 https 校招

OpenHarmony有氧拳击之设备端开发

OpenHarmony开发者

OpenHarmony

数据中台逼近炒作顶峰之际,Gartner给想建数据中台的一些建议

雨果

数据中台 Gartner

云图说丨初识可信分布式身份服务

华为云开发者联盟

云计算 安全 后端

一文带你认知定时消息发布RocketMQ

华为云开发者联盟

云计算 后端

九章云极DataCanvas公司与中国信通院完成可信AI基础软件战略合作

九章云极DataCanvas

人工智能 数据智能 数智化 可信AI

如何避免数据湖变成数据沼泽

Kyligence

数据湖 数据管理 智能多维数据库

开源一夏 | 在 STM32L051 上使用 RT-Thread (四、无线温湿度传感器 之 串口通讯)

矜辰所致

开源 RT-Thread 8月月更 STM32L051

Meta项目功能测试 | 开启PrestoDB和Aria扫描优化

Alluxio

hive presto Alluxio 大数据 开源 8月月更

7 天能找到 Go 工作吗?学学 Go 数组和指针试试

梦想橡皮擦

Python 爬虫 8月月更

离线部署系列文章之一:TiDBv5.3.0集群部署&源码部署 Haproxy v2.5.0

TiDB 社区干货传送门

实践案例 版本升级 管理与运维 安装 & 部署 扩/缩容

前端监控系列3 | 如何衡量一个站点的性能好坏

字节跳动终端技术

字节跳动 前端 性能监控 火山引擎 站点性能

高效完成需求计划的四个关键 | 敏捷开发

LigaAI

Scrum 敏捷开发 Sprint LigaAI spring event

ABAP 一组关键字 IS BOUND, IS NOT INITIAL 和 IS ASSIGNED 的用法辨析

Jerry Wang

指针 应用 SAP abap 8月月更

如何在企业数字化团队内部实现数据分析建模成果的结构化整合沉淀

ModelWhale

工作流 数字化转型 数字化 案例分享 提高效率

当内卷风波及代码领域,看Alluxio将会采取怎样的块分配策略

Alluxio

腾讯 存储 Alluxio block 8月月更

【8.12-8.19】写作社区精彩技术博文回顾

InfoQ写作社区官方

优质创作周报

Python图像处理丨基于OpenCV和像素处理的图像灰度化处理

华为云开发者联盟

Python 人工智能 图像

故障处理 | DM 搭建 MySQL 8.0 同步链路报错:code=26005

TiDB 社区干货传送门

安装 & 部署 TiDB 源码解读

  • 扫码加入 InfoQ 开发者交流群
ZeroTurnaround宣布JRebel for Android 1.0_Java_Abraham Marín Pérez_InfoQ精选文章