Android Studio 2.0 中引入的可以“大幅减少应用更新时间”的功能。
更改代码再次更新应用,Instant Run 无需再次构建新的 APK,而是直接向应用推送更新。
与重新构建部署的区别
-
重新构建部署
-
Instant Run
使用条件
- Android Plugin for Gradle 版本在 2.0.0 或更高
- module 级别的 build.gradle 文件中 minSdkVersion 设置为 15(Android 4.0.3) 或以上
- 为获取最佳性能,minSdkVersion 设置为 21(Android 5.0) 或以上
执行方式
Android Studio 根据代码修改类型自动选择执行方式
Instant Run 行为 | 适用范围 |
---|---|
heat exchange(热交换) | 更改现有方法的实现代码 |
moderate exchange(温和交换) | 更改或移除现有资源文件 |
cold exchange(冷交换) | 结构性的代码更改 |
deploy the new build(重新构建) | manifest 更改 |
-
heat exchange
:速度最快,应用不需要重新安装,也不需要重启。但是此种方式不会初始化正在运行的应用中的对象,所以此时如果要看到更新就需要重新动当前行为或者重启应用 -
moderate exchange
:速度也非常快,应用会继续保持运行,但是当前 Activity 会被重启,重启的时候屏幕会发生小闪烁 -
cold exchange
:速度相对前两种较慢,应用不需要重新安装,但是需要重启。Android Studio 会将我们每一次修改打成一个 dex 文件发到手机上,应用重启才会加载这个新的 dex 文件。(cold exchange 基于只有 5.0 及以上的设备才支持的 multidex 机制,以下则执行完整的 APK 安装过程) -
deploy the new build
:对 AndroidManifest.xml 以及其引用的资源进行更改时,应用会被重新构建,因为应用的相关信息(名字、版本等)需要在安装 APK 的时候通过 AndroidManifest.xml 确定 -
结构性的代码更改
:- 添加、移除、更改注解、字段、方法
- 更改继承类
- 更改实现接口
- 更改一个类的 static 修饰符
- 使用动态资源 id 重新布局
-
manifest更改
- 更改 AndroidManifest.xml
- 更改 AndroidManifest.xml 所引用的资源,比如 string.xml、style.xml 等文件
- 更改 UI 组件(需要清除并重新运行)
使用 Instant Run
- 打开 Preferences 对话框
- 导航至 Build, Execution, Deployment > Instant Run
- 通过勾选框控制 Instant Run 的使用