刚刚终于写完了插件开发的最后一篇文章,下面就来总结一下,关于Android中插件篇从去年的11月份就开始规划了,主要从三个方面去解读Android中插件开发原理。说白了,插件开发的原理就是:动态加载技术。但是我们在开发插件的过程中可能会遇到很多问题,所以这里就分为三篇文章进行解读的,而且也是循序渐进,解决了插件开发过程中可能会遇到的问题,不过这三篇的基础还是动态加载技术。

第一、插件开发基础篇:动态加载技术解读

http://blog.csdn.net/jiangwei0910410003/article/details/17679823

这篇文章主要介绍了Android中的DexClassLoader类的功能,以及我们如何使用动态加载技术,为何要使用动态加载技术等问题的解释,最开始的时候,我们就是使用这个类进行功能模块的剥离,让一些模块放到指定的jar/dex/apk中,然后去动态加载,这样做的好处是,减小包的大小,功能会更加灵活。

技术点:DexClassLoader的源码解读,使用

第二、插件开发开篇:类加载器分析

http://blog.csdn.net/jiangwei0910410003/article/details/41384667

这篇文章主要介绍了Android中主要的两个类加载器:PathClassLoader和DexClassLoader,他们的区别,联系,用法等问题,以及我们在制作插件的过程中会遇到哪些常见的问题。这篇文章也是后续两篇文章的基础,因为如果不了解这两个类的话,我们将无法进行后续的操作。

技术点:PathClassLoader类和DexClassLoader类的源码解读,他们之间的却别和联系

第三、插件开发中篇:资源加载问题(换肤原理解析)

http://blog.csdn.net/jiangwei0910410003/article/details/47679843

这篇文章主要通过现在一些应用自带的换肤技术的解读来看看,在开发插件的过程中如何解决一些资源加载上的问题,这个问题为何要单独拿出来解释,就是因为他涉及的知识很多,也是后面一篇文章的基础,我们在需要加载插件中的资源文件的时候。改如何处理。这里都做了详细的解释。同时有了这个技术之后,我们就可以实现应用的换肤开发了。

技术点:动态加载资源,AssetManager类的源码解读

第四、插件开发终极篇:动态加载Activity(免安装运行程序)

http://blog.csdn.net/jiangwei0910410003/article/details/48104455

这篇文章主要是讲解了如何加载插件中的Activity。从而实现免安装运行程序,同时这篇文章也是对前三篇文章知识的综合使用。下载很多应用都会使用到插件技术,因为包的大小和一些功能的优先级来决定哪些模块可以制作成插件。这篇文章还介绍了两种方式去动态加载Activity.这两种方式各有各的好处和坏处。

技术点:两种方式加载Activity,LoadedApk类和ActivityThread类的源码解读

总结

本身Android中的动态加载技术就很吃香,我刚刚接触到这个技术的时候,正好是我大学毕业那年2013年。当时我们需要做聚合广告SDK,所以需要对各家广告做处理,使用动态加载的技术来加载各家广告的SDK。第一次接触到动态加载的时候,还是很兴奋的,因为感觉。代码还可以这么写。功能的剥离那么好。所以很是痴迷这个技术。后来只是因为个人兴趣,就开始深入研究一下插件开发的技术,当然本质还是动态加载,只是需要解决一个特定的问题。现在也有很多大牛写了一些框架,个人感觉最好的还是这个哥们写的框架:

https://github.com/Qihoo360/DroidPlugin

哈哈,看名字就知道是360的,哎,不得不佩服国内技术研究啥的360公司可以算是比较牛逼的。

当然我相信,随着时间的推移,肯定还会有更多的牛人研究这个技术,开发出更加完善的框架,我就很期待呀。

更多内容:点击这里

关注微信公众号,最新Android技术实时推送

最新文章

  1. word20161221
  2. Linux下查找文件:which、whereis、locate、find 命令的区别
  3. Android Studio 常见问题之Rendering Problems
  4. Linux中断(interrupt)子系统之一:中断系统基本原理 (图解)
  5. JBPM流程实例(PI)Process Instance
  6. CSS3 经典教程系列:CSS3 线性渐变(linear-gradient)
  7. 图片拉伸(有保护区域) resizableImageWithCapInsets
  8. .net 基础之截取字符串
  9. UESTC_In Galgame We Trust CDOJ 10
  10. Vmware虚拟机时间不准问题
  11. 典型的DIV+CSS布局——左中右版式
  12. 某次模拟考试day2t3 菊菊的数据结构
  13. linq分组求和_实体类和datatable
  14. Beta阶段敏捷冲刺报告-DAY4
  15. Redhat 6.3上安装libssh
  16. java代码示例(7-1)
  17. CPU密集型和I/O密集型区别
  18. CodeForces 509C Sums of Digits(贪心乱搞)题解
  19. matlabr2015b安装教程
  20. linux整合apache、php、mysql

热门文章

  1. 把任意的EXE嵌入到自己程序中
  2. Linux 初始化系统 systemd - journald 日志
  3. [COCI2017.1]Deda —— 解锁线段树的新玩法
  4. Win10.设置(放大)
  5. ichunqiu在线挑战--我很简单,请不要欺负我 writeup
  6. 洛谷 P1025 & [NOIP2001提高组] 数的划分(搜索剪枝)
  7. [暑假集训Day3T3]平板涂色
  8. hdu5858 Hard problem(求两圆相交面积)
  9. Linux远程软件xshell的使用
  10. 【接口工具】接口抓包工具之Fiddler