Android Studio中Instant Run

Instant Run

翻译成中文叫即时运行或直接运行模板。不过我一般习惯了叫做闪电运行,为什么这么叫?请看图:


小闪电

有个小闪电(2.3.x版本独立有个小闪电,2.0-2.2是和左边运行图标在一块),因为是个小闪电,所以我习惯了叫做闪电运行。

在Android Studio 2.0中引入的Instant Run是运行和调试命令的一种行为,可以显着减少应用更新的时间。虽然您的第一次构建可能需要更长的时间才能完成,但Instant Run会将随后的更新推送到您的应用程序,而不需要构建新的APK,因此可以更快速地看到更改(当然有些坑,慎用(比如用到地图时,请关闭Instant Run))。

Instant Run仅在部署调试版本变量时使用,使用Android Plugin for Gradle 2.0.0或更高版本,并在应用程序的Module级build.gradle文件中将MinSdkVersion设置为15或更高版本。为了获得最佳性能,将minSdkVersion设置为21或更高。

部署应用程序后,“运行”按钮(或“调试”按钮)(2.0-2.2)中将显示一个小型的黄色雷电图标(2.3以后有独立图标),表示“下次运行”准备好在下次单击按钮时进行更新。而不是建立一个新的APK,它只会加入这些新的更改,在某些情况下,该应用甚至不需要重新启动,立即显示这些代码更改的效果。

Instant Run通过执行热交换,温交换或冷交换,将更新的代码和资源推送到连接的设备或模拟器。它会根据您所做的更改类型自动确定要执行的交换类型。

在每次Studio更新中,我们都会看到官方会对Instant Run进行优化。

关于Instant Run

启用和禁用Instant Run

1.打开设置或首选项对话框:在Windows或Linux上,从主菜单中选择File> Settings。在Mac OSX上,我也不知道( ⊙ o ⊙ )!。

2.导航到Build, Execution, Deployment > Instant Run。

顶部选项是Instant Run。勾选/取消选中该框。

使用Instant Run时不支持的代码更改

有一些变化,即时使用Instant Run,也会完全构建和重新安装应用程序。
比如:
1.更改应用程序清单
2.更改应用程序清单引用的资源
3.更改Android小部件UI元素(需要清除和重新运行)

即时运行中的代码类型交换

有三种类型的代码交换可以支持代码更快的调试和运行应用程序。
1.热交换(HOT SWAP)
2.温暖互换(WARM SWAP)
3.冷交换(COLD SWAP)

什么时候触发这些互换?

当更改现有方法的实现时触发HOT SWAP。

当更改或删除现有资源时,会触发WARM SWAP(res文件夹中的任何内容)

只要您的应用程式代码中存在结构性代码变更,即可使用COLD SWAP

例如:
1.添加,删除或更改:

  • 一个实例字段
  • 一个静态字段
  • 静态方法签名
  • 一个实例方法签名

2.更改当前类继承的父类
3.更改实现的接口列表
4.更改类的静态初始化程序
5.重新排序使用动态资源ID的布局元素

当代码交换发生时会发生什么?
HOT SWAP更改可以立即显示 - 只要下一次调用实现方法的更改时。
WARM SWAP重新启动当前活动
COLD SWAP重新启动整个应用程序(不重新安装)

注: 代码更改可以通过热交换快速部署,但是热交换会影响应用的初始化,所以我们不得不通过重启应用来响应这些修改。所以有时候也是个坑。

可以进官网了解更多关于Instant Run的内容
Instant Run

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,915评论 18 139
  • 什么是Instant Run? 我们都知道,Android Studio功能非常强大,在各个功能性方面都要优于Ec...
    GB_speak阅读 822评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 下图详细解释了 Android 的 Activity 和 Fragment 的生命周期的各个方法,图片来源于 ht...
    Android_小生阅读 628评论 0 0
  • 或许是因为白天听了老师好几堂的课,又或许是看到写作群里那么多学员都在分享自己的文章,于是在昨夜的梦境中老师给了我一...
    jasmine南京阅读 677评论 2 2