您的位置:首页 > 移动开发 > Android开发

android-pluginmgr不需要插件规范的apk动态加载框架

2015-01-30 16:43 351 查看
转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1230/2232.html

关于插件的动态加载我所知道的有两种了,分别是
(1)AndroidDynamicLoader
(2)dynamic-load-apk

AndroidDynamicLoader我不熟悉,但是dynamic-load-apk我已经用过,感觉要比AndroidDynamicLoader要更进一步,dynamic-load-apk是采用代理的方式,插件中的activity只是一个空壳,所有插件activity的方法都是在宿主中的特殊activity中被调用的。dynamic-load-apk的这种设计还是比较新颖的。
不过dynamic-load-apk和AndroidDynamicLoader都有一个共同点,需要对插件做一定的约束。
按照道理说 这是非常合情合理的,我几乎不认为会有不需要约束的插件框架出现。
但是android-pluginmgr这个开源项目真的不需要对插件做任何限制。真的很神奇。
项目地址:
https://github.com/houkx/android-pluginmgr/

此框架使动态加载APK非常简单

只需要2分钟,您就可以学会它的用法:

你可以直接下载demo工程--PlugLoadDemo 再对照阅读下文
首先,添加jar包:

pluginmgr-xx.jar (可以下载源码,自己用maven build)

dexmaker-xx.jar (此时最新版为dexmaker-1.1.jar)

到您的app的libs目录

然后,在您App的 AndroidManifest.xml 文件中做两件事:

1、添加读写SD卡的权限:

2、注册一个Activity
<activity android:name="androidx.pluginmgr.PluginActivity" />

要想启动一个未安装的APK其中的Activity,您只需要掌握一个类,两个方法即可!

这个类就是androidx.pluginmgr.PluginManager

看代码:

第一步, 加载插件

PluginManager mgr = PluginManager.getInstance(Context);//传入您的context对象

// 第1个方法

mgr.loadPlugin(new File(您的插件路径));//加载,路径可以是单独一个apk,或者一个包含多个apk的目录

第二步,启动插件Activity

// 第2个方法

mgr.startActivity(context, new Intent().setComponentName(插件包名, Activity全类名)));

如果你只是想启动MainActivity, 只须: mgr.startMainActivity(context, 插件包名);

被加载的插件apk无须引入任何额外的依赖,也可以独立运行

怎么样,是不是很简单呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: