美文网首页
Instant Run

Instant Run

作者: 白_404 | 来源:发表于2019-12-12 15:26 被阅读0次

Instant Run简介

传统情况:修改程序后重新运行,会经历:代码重新编译 -> 停止App程序 -> 重装新的APK -> 重启App程序

Instant Run:尝试只将程序变更的部分部署到手机上,尽量避免重装或重启动,以此大大提升调试效率。

Instant Run主要分为三种类型:hot swap、warm swap和cold swap。(AS会根据代码的修改情况,自动选择使用swap的类型)

当第一次运行程序后,AS中的运行按钮会变成(运行的三角形旁边多了一个闪电符号),说明现在可使用Instant Run了。

Hot Swap(第一快)

hot swap:是所有swap中效率最高的,程序不用重装,也不用重启,可以不重启Activity,就可以变更程序。但使用场景比较少

注意:但hot swap不会重新初始化对象,而某些场景下需要重启Activity才能看出具体的变更内容,所以AS默认是会重启Activity

更改设置为不重启Activity:Settings -> Build, Execution, Deployment -> Instant Run -> Restart activity on code changes。

AS视为hot swap的情况:修改一个现有方法中的代码(如:修改按钮点击事件)

Warm Swap(第二快)

warm swap:同样不用重装或重启,就可以变更程序,但必须重启Activity(屏幕很快地闪一下,Activity的生命周期会重新执行)。

AS视为warm swap的情况:修改或删除一个现有的资源文件(如:布局文件中增加一个按钮)

Cold Swap(第三快)

Cold Swap:不用重装,但必须重启(为了加载修改的dex文件)

原理:AS会自动记录项目的每次修改,并将修改的内容打成一个dex文件发到手机,尽管不用重装,但为了加载新的dex文件,App必须重启。

特别注意:cold swap的工作原理是基于multidex机制来实现的,在不引入外部library的情况下,只有5.0及以上的设备才支持multidex。因此,5.0以下的设备,cold swap将无法工作,会执行最原始的完整APK重装过程。

AS视为cold swap类型:(比较多)

1、增删改一个注解、字段、方法

2、添加一个类

3、修改一个类的继承结构、类的接口实现、类的static修饰符

4、涉及资源文件id的改动

Full APK(完整APK重装过程)

当程序变更不被Instant Run所支持时,就会执行完整的APK安装过程。

Instant Run目前都还不支持的情况:

1、改变AndroidManifest.xml文件的内容

2、改变被AndroidManifest.xml文件所引用的资源,比如string.xml中的app_name

3、改变桌面widget的UI相关元素

Rerun按钮(强制重启App)

因为hot swap或者warm swap是根本不会重启APP的,而如果你修改了只有在App启动时才会初始化的代码,那么Instant Run对此也是无能为力的,因为修改的代码根本就没有执行到。

针对这种情况,AS专门提供了一个Rerun按钮(下图中间那个按钮就是Rerun按钮),用来强制重启App。

绿色转弯箭头

补充说明

hot swap会在App的内部开启一个服务器,然后由AS自动计算出方法内实现的变更,将变更代码发送到服务器,服务器再利用类加载器和委托机制将新的代码实现注入到现有App中。

新的代码实现并没有被保存到本地,即一旦设备和AS的连接断掉了(比如拔掉数据线),使用hot swap替换的代码也就随之不见了。当再次打开App时,会看到提示:(hot swap代码失效了,现在的App仍然使用的老的代码)

此时只需将手机连上电脑,在AS中重新运行一下程序即可。另外只有在debug模式下才可能会出现这个提示,release模式下是不可能出现的,所以不用担心这个提示会让用户感到困惑。

整理自:Android Studio新功能解析,你真的了解Instant Run吗?—— 郭霖

相关文章

  • 热修复实现原理(三)

    热修复实现原理——instant run 一、Instant Run 简介 Instant Run,是androi...

  • Android新特性Instant Run详解

    关于 Instant Run Android Studio 2.0 中引入的 Instant Run 是 Run ...

  • InstantRun是如何工作的

    原文地址 Instant Run: How Does it Work?! Instant Run是Android ...

  • Android note 手写热修复

    1.Android studio : 关闭 Instant run Instant run 多次build的apk...

  • Instant Run

    Android开发者,很多的时候我们需要花大量的时间在bulid,运行到真机(虚拟机)上,对于ios上的Playg...

  • Instant Run

    Android Studio 2.0 中引入的可以“大幅减少应用更新时间”的功能。更改代码再次更新应用,Insta...

  • Instant Run

    如何编译运行app 我们要编译运行一个AS工程,只需在AndroidStudio上点击几下按钮就行了。Instan...

  • Instant Run

    Instant Run简介 传统情况:修改程序后重新运行,会经历:代码重新编译 -> 停止App程序 -> 重装新...

  • AndroidStudio3.2报 : Circular dep

    解决方法:进入AndroidStudio 设置页面找到Instant Run 取消 Enable Instant...

  • [Android 学习笔记] instant-run 源码学习

    instant-run 源码地址仔细过一遍 README, 对 instant-run 就会有一个大体的了解;in...

网友评论

      本文标题:Instant Run

      本文链接:https://www.haomeiwen.com/subject/ikovictx.html