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无须引入任何额外的依赖,也可以独立运行
怎么样,是不是很简单呢?
关于插件的动态加载我所知道的有两种了,分别是
(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卡的权限:
<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无须引入任何额外的依赖,也可以独立运行
怎么样,是不是很简单呢?
相关文章推荐
- 使用Apk动态加载框架(dynamic-load-apk)进行插件开发之环境搭建篇
- 360动态加载的Android插件框架
- Android优化之插件开发(动态加载Apk)
- Android动态加载插件APK
- Android应用开发提高系列(4)——Android动态加载(上)——加载未安装APK中的类
- Android应用开发提高系列(4)——Android动态加载(上)——加载未安装APK中的类 推荐
- 【转载】APK反破解之四:Android代码动态加载技术
- android 如何动态的加载类----app插件技术
- Android动态加载——加载已安装APK中的类
- Android应用开发提高系列(5)——Android动态加载(下)——加载已安装APK中的类和资源
- APK反破解之四:Android代码动态加载技术
- APK反破解之四:Android代码动态加载技术
- Android应用开发提高系列(4)——Android动态加载(上)——加载未安装APK中的类
- Android 动态加载APK--代码安装、获取资源及Intent调用已安装apk
- Android使用DexClassLoader动态加载未安装Apk
- 动态加载js和css的jquery plugin (Jquery插件)[转]
- Android动态加载——加载未安装APK中的类&加载已安装APK中的类和资源
- [转]Android应用开发提高系列(5)——Android动态加载(下)——加载已安装APK中的类和资源
- Android 动态加载APK--代码安装、获取安装包中的资源及Intent调用已安装apk
- Android动态加载(上)——加载未安装APK中的类