企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
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)