背景

公司安卓测试机vivo z1手机 ,apk debug安装时弹对话框“解析错误,解析软件包时出问题”

1、 解决方案

1、关闭安卓studio的 instant run(如下图 对号勾掉)
2、项目工程gradle.properties 下添加 android.injected.testOnly = false(如下图)

初识instant run

那么这个instant run到底是啥呢???

如下图(我关闭了instant run)

如果你需要开启,按照背景中的步骤开启即可(开启后你运行app后如下图)

1、认识

1、安卓studio2.0编译器新添加的功能,目的是为了提高安装apk的速度。
2、传统情况下,我们修改程序后重新运行一次程序需要经历 :代码重新编译 -> 停止程序 -> 重新安装 -> 重新启动 这样一个过程,而Instant Run则尝试只将程序变更的部分部署到手机上,尽量避免重新安装或重新启动程序,以此大大提升调试程序的效率。

对instant run 的了解

instant run的分类

instant run 分为三种类型(如下)

  • hot swap(热交换)
  • warm swap(温暖交换)
  • cold swap(冷交换)

三种类型详解

1、hot swap

优点:
1、hot swap是所有swap方式中效率最高的一种
2、应用程序不需要重新安装,也不需要重启就可以完成程序变更。
缺点:
hot swap不会对程序中的对象进行重新初始化,也就是说可能某些场景下需要重启Activity才能看出具体的变更内容。
ps:
Android Studio对于hot swap这种情况默认是重启Activity的,当然你也可以到设置中去改变这一默认行为,具体路径是 Settings -> Build, Execution, Deployment -> Instant Run -> Restart activity on code changes。
适用场景:
hot swap的适用条件比较少,只有一种情况会被Android Studio视为hot swap类型,就是修改一个现有方法中的代码(参考下面栗子)

栗子:

程序如上,我们点击运行时:
1、log: onCreate
2、点击按钮弹吐司内容为:“点击事件”

我们修改如上程序,修改吐司内容为“点击事件,hello”然后再次点击运行程序:

log:
2019-06-07 19:27:26.208 15069-15069/? I/aaa: onCreate:
2019-06-07 19:28:29.426 15619-15619/? I/aaa: onCreate:
吐司内容为:点击事件hello

我们发现:
1、 onCreate 走了两遍(其实你在instant run中关闭重启activity就打印一次onCreate)
2、安装速度很快(这是因为这种情况触发hot swap)

2 warm swap

warm swap也非常快,这种swap类型同样不需要重新安装或重启程序就可以完成程序变更,但是warm swap要求必须重启Activity。你会在界面上看到屏幕很快地闪一下,同时Activity的生命周期会重新执行。
warm swap的触发条件:
只有一种情况会被Android Studio视为warm swap类型,就是修改或删除一个现有的资源文件(res下的资源文件发生改变)

3、cold Swap

cold swap相对而言就要更慢一些了,Android Studio会自动记录我们项目的每次修改,然后将修改的这部分内容打成一个dex文件发送到手机上,尽管这种swap类型仍然不需要去安装一个全新的APK,但是为了加载这个新的dex文件,整个应用程序必须进行重启才行。另外,cold swap的工作原理是基于multidex机制来实现的,在不引入外部library的情况下,只有5.0及以上的设备才支持multidex,因此,如果你使用了5.0以下的设备,那么cold swap就无法工作了,这种情况会执行最原始的完整APK安装过程。

触发机制(如下很多):

添加、删除或修改一个注解
添加、删除或修改一个字段
添加、删除或修改一个方法
添加一个类
修改一个类的继承结构
修改一个类的接口实现
修改一个类的static修饰符
涉及资源文件id的改动

小结

自己动手丰衣足食 动手总结一遍就算了解了哈哈。。。。。

感谢郭神文章分享:https://blog.csdn.net/guolin_blog/article/details/51271369

初识instantRun相关推荐

  1. day3----编码-集合-深浅copy-文件操作-函数初识

    day3----编码-集合-深浅copy-文件操作-函数初识 本文档主要内容: 一 编码 二 集合 三 深浅copy 四 文件操作 五 函数初识 首先,我们来看看两个字符串的比较 打开cmd,进入do ...

  2. ⑥python模块初识、pyc和PyCodeObject

    一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...

  3. 初识java类的接口实现

    初识java类的接口实现 如果两个类之间不存在继承关系,且两个类都想实现同一个接口,两个类都必须实现接口中全部方法,否则报语法错误 如果两个类之间存在继承关系也想实现同一个接口,父类如果实现了某个接口 ...

  4. vba 编辑combobox内容_初识Visual Basic编辑器并建立一段简单的代码

    大家好,从今日开始我正式推出"VBA之EXCEL应用"教程,这个教程是面向初学人员的教程,教程一共三册,十七个章节,从简单的录制宏实现一直讲到窗体的搭建,都是我们在利用EXCEL工 ...

  5. 16.1、python初识面向对象(1)

    初识面向对象 楔子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人 ...

  6. 精通Python网络爬虫:核心技术、框架与项目实战.1.1 初识网络爬虫

    摘要 网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理.在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高.此时,我们 ...

  7. 初识mysql数据字段属性_MySQL数据库~~~~初识、基础数据类型

    一 数据库初识 1.1 什么是数据库 数据库(DataBase,简称DB),简而言之可视为电子化的文件柜----存储电子文件的处所,用户可以对文件中的数据运行新增,截取,更新,删除等操作. 所谓数据库 ...

  8. Nancy in .Net Core学习笔记 - 初识Nancy

    原文:Nancy in .Net Core学习笔记 - 初识Nancy 前言 去年11月份参加了青岛MVP线下活动,会上老MVP衣明志介绍了Nancy, 一直没有系统的学习一下,最近正好有空,就结合. ...

  9. Python 函数初识 (1)

    一.今日主要内容 认识函数 函数:对功能或者动作的封装(定义) 语法: def 函数名字(形参) 函数体 函数的调用格式:函数名(实参) 函数的返回值 关键字:return 终止函数的运行 1.函数内 ...

  10. 细细品味大数据--初识hadoop

    初识hadoop 前言 之前在学校的时候一直就想学习大数据方面的技术,包括hadoop和机器学习啊什么的,但是归根结底就是因为自己太懒了,导致没有坚持多长时间,加上一直为offer做准备,所以当时重心 ...

最新文章

  1. 有了这款可视化工具,Java 应用性能分析、调优 so easy...
  2. 如何在Hadoop上运行TensorFlow【部署】
  3. 免费指纹浏览器破解方法之开源代码
  4. struts练习-表单提交
  5. java testwhileidle_DBCP踩坑(二):连接池检查testWhileIdle失效
  6. 享元模式-Flyweight(Java实现)
  7. asp.net core 自定义 Policy 替换 AllowAnonymous 的行为
  8. Android之项目中如何用好构建神器Gradle?
  9. ssrf漏洞内网渗透_渗透技巧之SSRF
  10. python怎么打开excel文件并处理_python处理excel文件
  11. Leetcode669.Trim a Binary Search Tree修建二叉树
  12. VS2017 远程调试linux(centos).net core
  13. hdu2553N皇后问题(打表)
  14. win7磁盘清理_电脑磁盘已满怎么清理?磁盘清理的注意事项有哪些?
  15. [视频教程][斯坦福大学公开课:ios7应用开发 18集]
  16. 我一直在维护的石墨文档开源了
  17. 物联网-位置信息、定位技术与位置服务
  18. 概率分布分位点_概率统计计量经济学_假设检验中的重要概念_分位点/p值
  19. 计算机硬盘做u盘启动不了,U盘启动找不到硬盘的解决方法
  20. keras、TensorFlow输出中间层结果的4种方法

热门文章

  1. oracle recover database,standby库,在sqlplus下用recover standby database进行手工恢复
  2. Unity Shader零基础入门4:纹理贴图与法线贴图
  3. c语言链表next报错,C语言链表 - osc_w5x85e9u的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. 云流化像素流技术解决方案之虚拟仿真系统
  5. Apple Final Cut Pro X 10.4.6 中文特别版 Mac 最强大视频后期制作软件
  6. 重试利器之Guava Retrying
  7. pythonppt生成替换_python生成ppt的方法
  8. R语言:Newton法、似然函数
  9. 博士申请 | 阿尔伯塔大学招收人工智能方向全奖博士生、硕士生
  10. 游戏音效制作中难or不难?