你们新年好,最近花了点时间,慢慢把这个系列的内容稍微调整了下。
Last Edit: 2016-2-10android
Author:Kaedeagit
GitHub:android-dynamical-loadinggithub
在Android开发中采用动态加载技术,能够达到不安装新的APK就升级APP功能的目的,能够用来到达快速发版的目的,也能够用来修复一些紧急BUG。segmentfault
如今使用得比较普遍的动态加载技术的核心通常都是使用 ClassLoader ,后者可以加载程序外部的类(已编译好的),从而达到升级代码逻辑的目的。虽然动态加载的核心原理比较简单,可是根据功能的复杂程度,实际在Android项目中使用的时候还要涉及许多其余方面的知识,这里分为几个篇幅分别进行介绍。框架
内容:spa
动态加载技术在Android中的使用背景;插件
Android的动态的加载大体能够分为“加载SO库”和“加载DEX/JAR/APK”两种;代理
动态加载的基础是类加载器ClassLoader;调试
使用动态加载的三种模式;开发
采用动态加载的做用与代价;
除了ClassLoader以外的动态修改代码的技术(HotFix);
一些动态加载的开源项目;
内容:
类加载器ClassLoader的建立过程和加载类的过程;
ClassLoader的双亲代理模式;
DexClassLoader和PathClassLoader之间的区别;
使用ClassLoader加载外部类须要注意的一些问题;
自定义ClassLoader(Hack开发)
文章地址:Android动态加载基础 ClassLoader的工做机制
内容:
如何编译和使用SO库;
分析Android中加载SO库相关的源码;
如何加载SD卡中的SO库(也是动态加载APK须要解决的问题);
内容:
如何建立咱们须要的dex文件;
如何加载dex文件里面的类;
动态加载dex文件在ART虚拟机的兼容性问题;
内容:
如何启动插件APK中没有注册的Activity
代理Activity模式开源项目“dynamic-load-apk”
内容:
如何在运行时动态建立一个Activity;
自定义ClassLoader并偷梁换柱替换想要加载的类;
动态建立Activity模式开源项目“android-pluginmgr”
代理模式与动态建立类模式的区别;
地址:Android动态加载黑科技 动态建立Activity模式
使用“环境注入”的模式;
使用动态加载技术的情形;
使用动态加载方式项目的项目结构调整和开发调试方式;
开源项目“Android-Frontia”,动态加载框架的项目,专一于“插件化”和“宿主与插件之间的通信”;