Android插件化和热修复,必定是未来Android开发领域发展趋势,网络上关于这方面的视频教程,有慕课网的[Android应用发展趋势必备武器 热修复与插件化 ](http://coding.imooc.com/class/106.html)、菜鸟窝的[热修复和插件化专题』-资深工程师成长计划系列课程 ](http://www.cniao5.com/course/10139)、以及动脑学院的公开课[Android编程热修复技术讲解](https://v.qq.com/x/page/v03181refin.html?),暂不且论这些课程孰好孰坏,任何一个都有可取点。
#### **动态加载**
引用互动百科的介绍——[动态加载](http://www.baike.com/wiki/动态加载)
动态加载(英语:Dynamic Loading)是一种机制,它能使计算机程序可以在运行时加载一个库(或者其他二进制对象)到内存中,检索库中函数和变量的地址,执行这些函数或访问这些变量并能将库从内存中卸载。不同于静态链接和加载时链接,这种机制允许计算机程序在没有某些库的情况下启动、发现可用的库并获得额外的功能。
#### **热修复与插件化的对比**
* **共同原理**:
都引用动态加载技术。
都使用ClassLoader来实现的加载的新的功能类,都可以使用PathClassLoader与DexClassLoader
* **不同的是**:
* 热修复因为是为了修复Bug的,所以要将新的同名类替代同名的Bug类,要抢先加载新的类而不是Bug类,所以多做两件事:在原先的app打包的时候,阻止相关类去打上CLASS_ISPREVERIFIED标志,还有在热修复时动态改变BaseDexClassLoader对象间接引用的dexElements,这样才能抢先代替Bug类,完成系统不加载旧的Bug类
* 而插件化只是增肌新的功能类或者是资源文件,所以不涉及抢先加载旧的类这样的使命,就避过了阻止相关类去打上CLASS_ISPREVERIFIED标志和还有在热修复时动态改变BaseDexClassLoader对象间接引用的dexElements
所以插件化比热修复简单,热修复是在插件化的基础上在进行替换旧的Bug类
>[warning] **注**:上面只是网络上个人见解,不是标准答案
下面都是网络上摘抄的文章
* [Android插件化框架和热修复技术的资料收集和汇总](https://www.figotan.org/2016/08/12/android-plugin-and-hotfix-collections/)
* [Android热修复技术总结](http://www.mfsun.com/thread-68588-1-1.html#250039-tsina-1-7937-fe2f74577a6a764e92dd1638b6c14edd)
* [Android 插件技术实战总结](http://mp.weixin.qq.com/s/1p5Y0f5XdVXN2EZYT0AM_A)
* [微信 Tinker 负责人张绍文关于 Android 热修复直播分享记录](https://www.diycode.cc/topics/231)
* [Android热修复技术总结](http://www.mfsun.com/thread-68588-1-1.html#250039-tsina-1-7937-fe2f74577a6a764e92dd1638b6c14edd)
* [美团Android DEX自动拆包及动态加载简介](https://tech.meituan.com/mt-android-auto-split-dex.html)
* [Android中插件开发篇总结和概述](http://blog.csdn.net/jiangwei0910410003/article/details/48104581)
* 对于Android底层的研究,可以参考下面的文章
* 包建强的书籍[APP研发录](https://cread.jd.com/read/startRead.action?bookId=30207396&readType=1)以及他的系列文章---->[写给Android App开发人员看的Android底层知识](http://www.cnblogs.com/Jax/p/6864103.html#3696090)
* [深入理解Android系统](https://www.kancloud.cn/alex_wsc/androidsystem/403518)
* [Android 系统源代码情景分析](https://www.kancloud.cn/alex_wsc/android_source/401641)
**周圣韬的博客文章之插件化系列**
[几篇最近看的Android 插件+打包文章记录](http://blog.csdn.net/yzzst/article/details/44960821)
[Android插件开发初探——基础篇](http://blog.csdn.net/yzzst/article/details/45582315)
[Android插件开发初探——分析篇](http://blog.csdn.net/yzzst/article/details/45671803)
[Android插件实例——360 DroidPlugin详解](http://blog.csdn.net/yzzst/article/details/48093567)
[Android不发版也能在线修Bug?——AndFix 框架](http://blog.csdn.net/yzzst/article/details/48465031)
- 前言
- Android 热补丁技术——资源的热修复
- 插件化系列详解
- Dex分包——MultiDex
- Google官网——配置方法数超过 64K 的应用
- IMOOC热修复与插件化笔记
- 第1章 class文件与dex文件解析
- Class文件解析
- dex文件解析
- class与dex对比
- 第2章 虚拟机深入讲解
- 第3章 ClassLoader原理讲解
- 类的加载过程
- ClassLoade源码分析
- Android中的动态加载
- 第4章 热修复简单讲解
- 第5章 热修复AndFix详解
- 第6章 热修复Tinker详解及两种方式接入
- 第7章 引入热修复后代码及版本管理
- 第8章 插件化原理深入讲解
- 第9章 使用Small完成插件化
- 第10章 使用Atlas完成插件化
- 第11章 课程整体总结
- DN学院热修复插件化笔录
- 插件化
- 热修复
- Android APP开发应掌握的底层知识
- 概述
- Binder
- AIDL
- AMS
- Activity的启动和通信原理
- App启动流程第2篇
- App内部的页面跳转
- Context家族史
- Service
- BroadcastReceiver
- ContentProvider
- PMS及App安装过程