Android插件研究-资源加载

Android插件现在很多,这里主要参考http://blog.csdn.net/jiangwei0910410003/article/details/48104455。
因为文章中的Demo在CSDN里下载不方便,于是码了个demo传github,给想研究的人省一些麻烦。
[传送门]https://github.com/andev009/LearnPlugin
使用方法如下:
1.运行module:plugin生成插件plugin-debug.apk
2.在手机或模拟器上运行module:firsthostapp
3.adb push plugin-debug.apk data/data/com.andev.firsthostapp/cache
4.enjoy

简要分析资源加载的过程得出结论:
1.插件使用DexClassLoader加载,DexClassLoader与PathClassLoader的区别从构造方法就可以看出来,DexClassLoader可以加载用户指定路径上的dex文件,而PathClassLoader不行。
2.宿主app使用插件中的资源需要重新构建Resources对象,新Resources对象要通过AssetManager加入插件的路径,否则反射调用插件中context.getResources()得到的Resources依然是宿主的Resources,资源表里依然没有插件资源。
以上两点就是插件化加载资源的原理。

你可能感兴趣的:(Android插件研究-资源加载)