你的位置:首页 > 软件开发 > 操作系统 > APK动态加载框架(DL)解析

APK动态加载框架(DL)解析

发布时间:2016-05-12 22:00:05
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/39937639 (来自singwhatiwanna的csdn博客)前言好久没有发布新的文章,这次打算发表一下我这几个月的一个核心研究成果:APK动态加载框 ...

APK动态加载框架(DL)解析

转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/39937639 (来自singwhatiwanna的csdn博客)

前言

好久没有发布新的文章,这次打算发表一下我这几个月的一个核心研究成果:APK动态加载框架(DL)。这段时间我致力于github的开源贡献,开源了2个比较有用且有意义的项目,一个是PinnedHeaderExpandableListView,另一个是APK动态加载框架。具体可以参见我的github:https://github.com/singwhatiwanna

本次要介绍的是APK动态加载框架(DL),这个项目除了我以外,还有两个共同开发者:田啸(时之沙),宋思宇。

为了更好地理解本文,你需要首先阅读Android apk动态加载机制的研究这一系列文章,分别为:

Android apk动态加载机制的研究

Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

另外,这个开源项目我起了个名字,叫做DL。本文中的DL均指APK动态加载框架。

项目地址

https://github.com/singwhatiwanna/dynamic-load-apk,欢迎star和fork。

运行效果图:下面分别介绍上述三种模式,针对上述三种模式,我们分别提供了3组例子,其中:

1. depend_on_host:插件完全依赖宿主的模式,适合于能够能到宿主的源代码的情况

其中host指宿主工程,plugin指插件工程

2. depend_on_interface:插件部分依赖宿主的模式,或者说插件依赖宿主提供的接口,适合能够拿到宿主的接口的情况

其中host指宿主工程,plugin指插件工程,common指接口工程

3. main:插件不依赖宿主的模式,这是DL推荐的模式

其中host指宿主工程,plugin指插件工程

APK动态加载框架(DL)解析

模式1:这是DL推荐的模式,对应的工程目录为main。在这种模式下,宿主和插件不需要通信,两者是独立开发的,宿主引用DL的jar包(dl-lib.jar),插件也需要引用DL的jar包,但是不能放入到插件工程的libs目录下面,换句话说,就是插件编译的时候依赖jar包但是打包成apk的时候不要把jar包打进去,这是因为,dl-lib.jar已经在宿主工程中存在了,如果插件中也有这个jar包,就会发生类链接错误,原因很简单,内存中有两份一样的类,重复了。至于support-v4也是同样的道理。对于eclipse很简单,只需要在插件工程中创建一个目录,比如external-jars,然后把dl-lib.jar和support-v4.jar放进去,同时在.classpath中追加如下两句即可:

<classpathentry kind="lib" path="external-jars/dl-lib.jar"/>

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:APK动态加载框架(DL)解析

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录