Android Studio 2.0及其以后版本中的instant run功能 介绍

转 https://blog.csdn.net/zy987654zy/article/details/51496199

Studio 2.0 之后就有了instant run 功能

说说 instant run  功能:字面意思就能明白 即时运行

这个功能在2.1是默认开启的 而它的相关设置界面呢如下:

就是右边的是个设置了

如何判断是否可以呢 通过 看到了 运行案例左边的⚡️ 了吗? 那就是可以了

先给 大家贴上 官方介绍文档

https://sites.google.com/a/android.com/tools/tech-docs/instant-run#TOC-What-s-Supported-by-Instant-Run-

这个功能就是当你修改了代码或者布局的时候 点击运行 它不会将整改项目都进行重新打包,而是能直接在你的测试机上体现。

比如我们以前调整了布局后 需要看到效果就得重新打包运行了。

而现在呢就不用了,当然了使用方法是一样的 。但是呢速度要快很多。几秒内就能完成。

而如果是整体打包的话那速度就慢了。以前1.4版本的时候一分钟就能打包完了。现在得3分钟。

Code Change Instant Run Behavior
  • Change implementation code of an existing instance method or static method(改变现有的实例方法或静态方法的实现代码。前提是这个实现方法和static方法是存在的,如果不存在 那就是新增了,新增请参考第三条)
Supported with hot swap: This is the fastest type of swap and makes changes visible almost instantly. Your application keeps running and a stub method with the new implementation is used the next time the method is called.
如果是左边的这种情况,那就是热插拔模式了,修改后能马上看到效果(热插拔大家都了解,就是现在的U盘的那种模式,插上就能用)
  • Change or remove an existing resource(你修改了布局中的资源信息,其实主要是layout文件中的修改,比如这个布局不要了, 我进行删除啊,这个view 文字不正确 我就想修改等。如果是添加的话 那就是第三行的情况了)
Supported with warm swap: This swap is still very fast, but requires an automatic activity restart when Instant Run pushes the changed resources to the target device. Your app keeps running, but a small flicker may appear on the screen as the activity restarts—this is normal.
(如果是这种情况的话,那速度也挺快的 但是没有上面的快,如果你要修改的这个页面是正在显示的页面 它就会闪一下,然后你的修改就能看到你。 这种情况 你的app 不会重新启动的。成功后 你的设备中就会弹出一个Toash)
Structural code changes, such as:
(代码结构进行了变化)

  • Add, remove, or change: (比如下面的这些情况下的 添加,删除和修改)

    • an annotation(注释)
    • an instance field(实例字段)
    • a static field(静态字段)
    • a static method signature(就是static方法被修改了,比如改名啦,改变传参啦。)
    • an instance method signature(就是实例的签名被修改的情况,比如类包名修改了,类名被修改了,实例名称被修改了)
  • Change which parent class the current class inherits from(比如修改了被继承的父类)
  • Change the list of implemented interfaces(修改列表实现的接口啦)
  • Change a class static initializer(改变类的static 初始化方法啦)
  • Reorder layout elements that utilize dynamic resource IDs(利用动态生成的id 来调整布局元素 等)

Supported with cold swap (API level 21 or higher): Instant Run pushes the structural code changes to the target device and restarts the whole app.

For target devices running API level 20 or lower, Android Studio deploys a full build of the APK.

就是说 如果发生了左边说的那种情况,而刚好你的api登记是在21或以上,那就会将修改结构代码更改推到目标设备运行。这个时候你的app会重新启动。但是耗时不会很长。

但是如果你的版本是20版本或以下,那就没什么好说的你。 重新生成构建整个apk了。那速度 可真是相当慢了。

  • Change the app manifest (如果你修改了androidmanifest文件)
  • Change resources reference by the app manifest(如果你修改了manifes文件引用的资源文件)
  • Change an Android widget UI element (requires a Clean and Rerun)(如果你改变了一个UI控件的元素 比如说自定义控件 你给它新增加了个属性 )

When making changes to the app manifest or resources referenced by the manifest, Android Studio automatically deploys a new build in order to push changes to your target device. This is because certain information about the app, such as its name, app icon resources, and intent filters, are determined from the manifest when the APK is installed on the device.

If your build process automatically updates any part of the app manifest, such as automatically iterating versionCode orversionName, you will not be able to benefit from the full performance of Instant Run. We recommend that you disable automatic updates to any part in the app manifest in your debug build variants.

这边就告诉你说,这种情况下 instant run 就不起作用了。得重新打包生成整个项目了

Android Studio 2.1及其以上版本中的instant run功能 介绍的更多相关文章

  1. 1.运行Android Studio,一直提示:Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.

    1.解决问题办法:菜单栏,Tools -> Adnroid -> enable ADB integration勾上 2.暂时性的解决方案:在Android Studio中的:Prefere ...

  2. Android Studio更改项目SDK的版本

    Elipse 中的安卓项目,在Android Studio中可以通过File -->new -- > Import Project的方法建立起来.但是有时候需要用到更改项目的API Lev ...

  3. Android Studio稍微较新的版本下载

    ALL ANDROID STUDIO PACKAGES-V1.4.1.2422023 Select a specific Android Studio package for your platfor ...

  4. 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能

    以往的Android开发有一个头疼的且拖慢速度的问题,就是你每改一行代码要想看到结果必须要编译运行到手机或者模拟器上,而且需要从头(可能是登录界面)一直点击到你修改的界面为止.开发一个完整的Andro ...

  5. [Android Pro] 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能

    reference to : http://www.cnblogs.com/soaringEveryday/p/4991563.html 以往的Android开发有一个头疼的且拖慢速度的问题,就是你每 ...

  6. Android Studio 2.2.2导入Eclipse中创建的项目

    最近随视频教程学习Android,原本都是用Adt写Android程序,中途教程换成了Android Studio,于是我自己下了android studio 2.2.2安装好,并下载好sdk,也跟着 ...

  7. Android 项目利用 Android Studio 和 Gradle 打包多版本APK

    在项目开发过程中,经常会有需要打包不同版本的 APK 的需求. 比如 debug版,release版,dev版等等. 有时候不同的版本中使用到的不同的服务端api域名也不相同. 比如 debug_ap ...

  8. 利用 Android Studio 和 Gradle 打包多版本APK

    在项目开发过程中,经常会有需要打包不同版本的 APK 的需求. 比如 debug版,release版,dev版等等. 有时候不同的版本中使用到的不同的服务端api域名也不相同. 比如 debug_ap ...

  9. Android Studio 3.0 及以上版本使用技巧总结

    1.更新Android Studio后下载Gradle文件的技巧 更新到3.0版本后,可能会出现创建新项目一直停留在如下图的界面: 选择等待?不知道要等到什么时候,这时候怎么办呢?显然,不能一直等待下 ...

随机推荐

  1. 编写高质量的Python代码系列(五)之并发与并行

    用Python可以很容易就能写出并发程序,这种程序可以在同一时间做许多间不同的事情.我们也可以通过系统调用.子进程(subprocess)及C语言扩展来实现并行处理. 第三十六条: 用subproce ...

  2. [Jetty] Debugging With Eclipse

    There are a number of options available to debug your application in Eclipse. If not done already pr ...

  3. move_base Warning: Invalid argument "/map" passed to canTransform argument target_frame的解决方法

    把global_costmap_params.yaml和local_costmap_params.yaml文件里的头几行去掉“/”,然后重新编译就可以了. 效果如下:

  4. hibernate之一级缓存

    缓存目的:提高效率. sql语句与数据库交互,返回数据组装成对象存入session缓存中.程序查询时,优先访问缓存中是否存在id相同对象. hibernate中session缓存(一级缓存)存在

  5. select中option的onclick事件失效

    html: <select id="pageSelect"> <option value="1" selected onclick=" ...

  6. ueditor复制文本有多余的空行问题

    今天从ueditor中复制文本,粘贴到记事本中发现每一行后面都多了一个空行. Ueditor中的文本如图: 本来只有三行,全选复制所有内容,再粘贴到记事本中发现有每一行文本后面都有多余的空行: 如果我 ...

  7. java错误分类

    IllegalArgumentException 回直接crashError

  8. tomcat用redis做session共享

    在context.xml添加以下配置: <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerVa ...

  9. EOCS 最低资源保障机制

    本期小E将为大家带来EOCS 最低资源保障机制. 为满足普通用户日常的转账等基本需求,无需再为较少的初始资源抵押担心无法使用链上功能.EOCS可以通过链的参数来调整分配给每个用户免费的资源额度,相当于 ...

  10. [Linux]fcntl函数文件锁概述

    概述 fcntl函数文件锁有几个比较容易忽视的地方: 1.文件锁是真的进程之间而言的,调用进程绝对不会被自己创建的锁锁住,因为F_SETLK和F_SETLKW命令总是替换调用进程现有的锁(若已存在), ...