Android Studio中Instant Run

作者: Reathin | 来源:发表于2017-04-20 23:23 被阅读698次

    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

    相关文章

      网友评论

        本文标题:Android Studio中Instant Run

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