名词:

dex:java文件编译class 然后生成 dex文件在Android上运行;

1.dex分包;

2.找出出现问题的dex文件进行替换操作

3.下载dex文件,静默替换有问题的dex文件,进行修改

热修复详解:

1.确定那些文件是主类,不能出现问题的类;

2.多分包;

3.下载dex文件;

4.写到本并且注入;

二、注入详解:

1.apk包安装完成之后存储路径:data/app/pacageName-1/base.apk  有分包文件classes.dex classes2.dex

java中使用类加载器加载 ClassLoader

Android中使用ClassLoader子类进行加载: BaseDexClassLoader加载 Dex文件

BaseDexLoader加载器源码解析:

里面有

DexPathList{

Elements[]

makeDexElements//该方法返回Dex文件数组

}

方法:makeDexElements: Elements[] 放的是Dex文件的个数

加载原理:

首先找到首个Dex文件运行,当MainActivity中调用其他Dex文件时,

会从Elements里面去找,如果没有就会抛异常:找不到文件

通过BaseDexClassLoader反射获取系统的 PathList的Elements;

通过BaseDexClassLoader反射获取最新Dex的PathList的Elements;

重组数组:切记:最新的Dex放到最前面;

在设置到系统Elements中

Android 热修复(一)的更多相关文章

  1. Android 热修复方案Tinker

    转自:http://blog.csdn.net/l2show/article/details/53925543 Android 热修复方案Tinker(一) Application改造 Android ...

  2. Android热修复之微信Tinker使用初探

      文章地址:Android热修复之微信Tinker使用初探 前几天,万众期待的微信团队的Android热修复框架tinker终于在GitHub上开源了. 地址:https://github.com/ ...

  3. Android 热修复Nuwa的原理及Gradle插件源码解析

    现在,热修复的具体实现方案开源的也有很多,原理也大同小异,本篇文章以Nuwa为例,深入剖析.  Nuwa的github地址 https://github.com/jasonross/Nuwa 以及用于 ...

  4. 全面了解Android热修复技术

    WeTest 导读 本文探讨了Android热修复技术的发展脉络,现状及其未来. 热修复技术概述 热修复技术在近年来飞速发展,尤其是在InstantRun方案推出之后,各种热修复技术竞相涌现.国内大部 ...

  5. Android热修复框架汇总整理(Hotfix)

      Android平台出现了一些优秀的热更新方案,主要可以分为两类:一类是基于multidex的热更新框架,包括Nuwa.Tinker等:另一类就是native hook方案,如阿里开源的Andfix ...

  6. Android热修复技术原理详解(最新最全版本)

    本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结   通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单 ...

  7. Android 热修复方案Tinker(一) Application改造

    基于Tinker V1.7.5 Android 热修复方案Tinker(一) Application改造    Android 热修复方案Tinker(二) 补丁加载流程    Android 热修复 ...

  8. Android热修复技术总结

    https://blog.csdn.net/xiangzhihong8/article/details/77718004 插件化和热修复技术是Android开发中比较高级的知识点,是中级开发人员通向高 ...

  9. Android热修复之AndFix使用教程

    AndFix的github地址 AndFix 全称Android hot-fix,是alibaba的Android热修复框架,支持Android 2.3到6.0的版本,支持arm与X86系统架构,支持 ...

  10. Android 热修复使用Gradle Plugin1.5改造Nuwa插件

    随着谷歌的Gradle插件版本号的不断升级,Gradle插件如今最新的已经到了2.1.0-beta1,相应的依赖为com.android.tools.build:gradle:2.0.0-beta6, ...

随机推荐

  1. 解决win10 windows mobile 设备中心无法打开问题,MC3200无法连上win10问题

    1.下载高版本的安装包 从微软官方下载:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=3182 2.  运行service ...

  2. 【Python开发】matplotlib绘图不显示问题解决plt.show()

    最近在看<Python数据分析>这本书,而自己写代码一直用的是Pycharm,在练习的时候就碰到了plot()绘图不能显示出来的问题.网上翻了一下找到知乎上一篇回答,试了一下好像不行,而且 ...

  3. 论文阅读 | Generating Fluent Adversarial Examples for Natural Languages

    Generating Fluent Adversarial Examples for Natural Languages   ACL 2019 为自然语言生成流畅的对抗样本 摘要 有效地构建自然语言处 ...

  4. NIKKEI Programming Contest 2019-2 Task E. Non-triangular Triplets

    $\require{enclose}$ 必要条件 一方面 $\sum_{i=1}^{N}(a_i + b_i) \le \sum_{i=1}^{N} c_i \implies 2\sum_{i=1}^ ...

  5. 从入门到自闭之Python随机模块

    导入:import random 随机小数:random.random():大于0小于1之间的小数 指定数字之间的小数,不包含指定的最大值:random.uniform() 随机整数:random.r ...

  6. 一千行MySQL学习笔记 (转)

    出处:  一千行MySQL学习笔记 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权 ...

  7. java构造方法的注意事项总结

    构造方法细节总结~~~~~ 1:首先要了解为什么需要构造方法,,,类中有太多的属性,每次给属性赋值时非常麻烦:编码量大,无法重用给属性赋值的代码.. 2:什么是构造方法呢? 构造方法负责初始化类中的实 ...

  8. JavaScript的数组方法(array)

    数组方法: 1. concat()  合并数组 2. join()  将数组的元素拼接成字符串,并指定分隔符 3. push()  往数组末尾添加一个元素,并返回新的数组的长度 4. reverse( ...

  9. 网站更换服务器出现加载不了js css文件的问题

    原因是 里面加找不到.woff类型,后面把上面注释掉就可以了

  10. Redis从入门到高可用,分布式实践

    redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...