Android Instant Run介绍

InstantRun能够使开发者在Android Studio中快速预览代码修改效果,无需经历完整的编译过程。本文介绍了InstantRun的工作原理及其三种模式:ColdSwap、WarmSwap和HotSwap,并解释了其背后的技术逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       Instant Run直译为及时运行,就修改的代码可以直接体现出来,不需要重新编译;默认在Android Studio2.0以上自动集成Instant Run功能
使用 Android Plugin for Gradle 版本 2.0.0 或更高版本,以及在应用的模块级别 build.gradle 文件中将 minSdkVersion 设置为 15 或以上时,Instant Run 才受支持。为获得最佳性能,可以将 minSdkVersion 设置为 21 或更高

以下demo是在Android Studio3.0,gradle为2.14.1的版本中测试,之前编译到运行到该10秒,执行instan run之后,大概2,3秒就看到效果了

       我们可以看到如下图所示,有一个灰色的闪电图标。这个图标的作用就是Instant Run,灰色当然代表不可使用,我们需要配置下
这里写图片描述


       在使用Instant Run之前,我们需要在Setting中配置下
这里写图片描述,这里我将rstart activity给去掉了,这是因为不涉及到生命周期的方法,我们可以不重启activity,快速看到效果;


配置之后,你会发现闪电图标可用了
这里写图片描述
点击闪电图标,就可以快速的将变更代码部署到手机上


我们看下原先一个app从编译到运行完整的过程
这里写图片描述


那Instant Run是如何运行的?请看下图
这里写图片描述

从这张图可以看出,Instan Run分为三种类型
1:Cold Swap:app需要被重启(但是仍然不需要重新安装)
场景:任何涉及结构性变化的,比如:修改了继承规则、修改了方法签名等
2:Warm Swap:activity需要被重启才能看到所需更改,生命周期会重新走一次
场景:典型的情况是代码修改涉及到了资源文件,即resources
3:Hot Swap:代码改变被应用、投射到APP上,不需要重启应用,不需要重建当前activity。
场景:适用于多数的简单改变

Android Stuido会根据具体自主选择交换模式,实现Instant Run的效果;


Instant Run的背后逻辑是什么?
这里写图片描述
从上图可以看出,在Instant Run中,appserver会被注入到App中,修改的代码会被编译为单独的dex文件,这些新增的dex会被发送到appserver中,然后部署到App中,这个和dex分包技术进行热修复的技术还是很相似的;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值