Android热修复升级探索——Dalvik下冷启动修复的新探索
冷启动类加载修复
对于Android下的冷启动类加载修复,最早的实现方案是QQ空间提出的dex插入方案。该方案的主要思想,就是把插入新dex插入到ClassLoader索引路径的最前面。这样在load一个class时,就会优先找到补丁中的。后来微信的Tinker和手Q的QFix都基于该方案做了改进,而这类插入dex的方案,都会遇到一个主要的问题,就是如何解决Dalvik虚拟机下类的pre-verify问题。
如果一个方法中直接引用到的类和该方法所属类都在同一个dex中的话,那么这个方法的所属类就会被打上CLASS_ISPREVERIFIED
,具体判定代码可见虚拟机中的verifyAndOptimizeClass
函数。
我们先来看看腾讯的三大热修复方案是如何解决这个问题的:
- QQ空间的处理方式,是在每个类中插入一个来自其他dex的hack.

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
苹果开发者福音:iOS自动化测试方案Galileo
Galileo 确实是个科学革命的伟人!也因为这样,我们给它起了这个智慧饱满的名字Galileo。Galileo是天猫技术-手机天猫架构&体验团队历时8个月倾情打造的,业界全新的iOS自动化测试方案。它与业界现有各种iOS自动化测试方案有着本质的区别,基于苹果的各种黑科技,Galileo研发团队着力打造了真正意义上的无线化、插件化、自动化的iOS测试工具链。 听起来很强大 先通过几个简单的视频向大家展示一下Galileo的强大功能。 支持Instrument Javascript脚本 Galileo支持苹果Instrument Javascript脚本开发者可以通过Native代码灵活扩展脚本接口,实现更加复杂的功能 真正无线的自动化运行工具 支持iOS8.0及iOS8.0以上系统的真机和模拟器 支持通过app内部入口触发执行自动化 无需
- 下一篇
在Android中开源类库使用过程中兼容性等问题的讨论
1、在Android4.0环境下编译的actionbarsherlock、slidingmenu类库,能不能在4.0以下的版本中使用 相信很多人跟我一样,都以为在低版本(如Android2.1或2.3版本)编译的应用能够在高版本中运行,但高版本(比如Android3.0或4.0)中编译的应用恐怕就不能在低版本中运行。于是,我们可能就会想方设法地把一些在高版本中编译的代码,改成在低版本的Android SDK中编译,以便兼容。我们一直忽视了在<manifest>文件中关于兼容性的声明,如下面代码段。 <uses-sdk android:minSdkVersion="integer" android:targetSdkVersion="integer" android:maxSdkVersion="integer" /> android:minSdkVersion就声明了应用可以运行在最小的什么API版本之上。我们如何知道,一个应用可以运行在什么API上面呢?常查Android Reference(API文档)的同学,应该对下面这幅图很熟悉。 在API Refere...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Linux系统CentOS6、CentOS7手动修改IP地址
- Red5直播服务器,属于Java语言的直播服务器
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启