1. 借助android提供的shareduserid属性使多个不同的apt共用一个userid,以扫除权限壁垒,获取插件context,继而获取view并载入插件。这样的方式是建立在已经安装完毕的apt基础上的。
样例和參考:
1) 工作原理介绍:http://892848153.iteye.com/blog/1976988
http://www.cnblogs.com/hangxin1940/archive/2011/12/14/2288169.html
http://www.cnblogs.com/hangxin1940/archive/2011/12/17/2291380.html
对应框架样例: 安卓应用程序插件化开发框架 -AAP Framework
2) xCombine
工作原理介绍:http://wyouflf.blog.51cto.com/1553038/1305482
源代码及简单介绍地址:https://github.com/wyouflf/xCombine
2. 不安装插件,插件以.dex或.apt方式保存在手机的某个可被插件框架应用訪问的空间,然后框架使用DexClassLoader载入插件类,然后通过createPackageContext方法为插件创建context,之后使用该context获取插件的资源,比方view,
然后将资源等在主框架中呈现
工作原理介绍:http://my.oschina.net/mutour/blog/179242
样例程序:http://pan.baidu.com/s/1td9cO
3. 不安装插件,插件以apt方式保存在手机上。插件框架使用DexClassLoader载入插件类。与另外一种方法不同之处在于,方法二载入插件以获取资源,而本方法确是在获得Activity实例后,将框架的context植入插件,并强制插件在植入的context上执行。
工作原理介绍:探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法
样例程序:source
4. 使用OSGI 框架
OSGI作为一个成熟的面向模块化的框架标准被很多诸如Eclipse等大型软件採纳以提供插件服务。当中OSGI的主流实现框架,比方Felix(Apache
Felix Framework and Google Android)及子项目iPOJO(iPOJO
on Android),还有knopflerfish都已提供了对android平台的支持。
实现样例:安织云apkplug (不开源)
Developing Android Application
with Apache Felix - OSGi Framework
5. 其它參考:
1) Android动态载入jar、apk的实现
2) 使用android的Intent, broadcast service及iPC机制
Plugins with user interface
INTENT + SERVICE + CONTENT PROVIDER = PLUGIN ARCHITECTURE
有关android 应用的plugin框架调研