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
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