轻应用

android插件化-监听apkplug插件安装/卸载状态-05

a 夏天 提交于 2019-12-05 06:26:05
可下载最新的apkplugdemo源码 http://git.oschina.net/plug/apkplugDemos 有时我们需要以事件的形式监听插件的安装/卸载状态等信息,如插件列表更新等场合。apkplug框架提供这样的功能并且实现简单 public void ListenerBundleEvent(){ frame.getSystemBundleContext() .addBundleListener( new SynchronousBundleListener(){ public void bundleChanged(BundleEvent event) { //插件状态改变事件 event.getType() ;//事件类型 event.getBundle();//发生事件的插件Bundle } }); } 事件类型 BundleEvent.INSTALLED; //插件安装事件 BundleEvent.STOPPED; //插件停止事件 BundleEvent.UNINSTALLED; //插件卸载事件 BundleEvent.UPDATED; //插件更新事件 来源: oschina 链接: https://my.oschina.net/u/138488/blog/263472

android插件化-apkplug框架启动-02

左心房为你撑大大i 提交于 2019-12-04 06:21:24
本文章基于apkplug v1.6.7 版本编写,最新方式以官网最新消息为准 一 apkplug框架所需要的库文件(宿主) 可从 http://git.oschina.net/plug/apkplugSDK 获取最新库文件 同时可下载最新的apkplugdemo源码 http://git.oschina.net/plug/apkplugDemos libs-- --libndkfoo.so armeabi armeabi-v7a mips x86 --Bundle(版本号).jar 将以上的文件加入宿主应用的libs目录下 二 AndroidManifest.xml 权限配置 插件平台需要几个基础的权限配置,请将以下的几个权限加入到工程的AndroidManifest.xml中 <!-- 插件平台需要的权限! --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.INTERNET"/>

android插件化-获取apkplug框架已安装插件-03

我们两清 提交于 2019-12-04 06:21:15
上一篇文章成功的将apkplug框架嵌入了应用中并且启动 链接 http://www.apkplug.com/blog/?post=10 这一篇文章实现如何获取所有已安装插件 一 获取框架的SystemBundle的上下文BundleContext apkplug框架启动会自动创建一个SystemBundle, 它是框架的第一个插件不可停止和卸载,通过它我们可以与apkplug和其他插件通信 FrameworkInstance.getSystemBundle() 便可以获取到SystemBundle但它没有太大意义,我们需要获取它的运行上下文BundleContext BundleContext context =frame.getSystemBundleContext(); 二 通过BundleContext获取已安装插件 for(int i=0;i<context.getBundles().length;i++) { //获取已安装插件 //打印插件信息 StringBuffer sb=new StringBuffer(); sb.append("\n插件名称:"+b.getName()); sb.append("\n插件应用名称:"+b.getSymbolicName()); sb.append("\n插件版本:"+b.getVersion()); sb.append("

android插件化-apkplug插件开发-07

两盒软妹~` 提交于 2019-12-04 06:21:01
从文章<< apkplug框架基础结构-01 >>了解到apkplug框架中的插件是普通的apk文件,本节讲解插件开发流程。 一 插件工程结构 apkplug插件只比普通app多三个特殊文件 1.org.osgi.framework.BundleActivator --插件入口类 2.plugin.xml --插件配置文件 与AndroidManifest.xml类型相似 3.osgi1.6.3.jar --osgi.jar 文件定义了一些插件通信接口 BundleActivator就在其中 二 入口类BundleActivator编写 BundleActivator就两个函数它们是public void start(BundleContext context),public void stop(BundleContext context)。它们分别在插件启动 停止的时候被apkplug框架调用,我们可以再start函数中获取插件上下文BundleContext 并且初始化或注册一些插件提供的OSGI服务 三 plugin.xml文件说明 plugin.xml 与AndroidManifest.xml类型相似提供插件的系统属性,我们也可以通过它定义一些自定义的属性,通过Bundle.getHeaders().get("key")获取 plugin.xml有以下几个属性比较重要 1.

android插件化-apkplug框架基本结构-01

僤鯓⒐⒋嵵緔 提交于 2019-12-03 03:40:26
由于框架开发更新频繁的原因一直都没有时间写出框架的基本架构让大家云里雾里的,现在框架已基本稳定和完善,我就抽出时间写写关于apkplug框架的基本架构和原理,同时也跟大家一起研究利用apkplug框架玩出更新的功能。 一 apkplug的基本架构 apkplug简单的说是一个容器它将apk文件解析并映射成Bundle ,下文我们简称Bundle为插件。如下图 每一个apk插件被映射到apkplug框架中就是一个Bundle对象,完整路径为 org.osgi.framework.Bundle 。通过这个Bundle我们能获取到插件的基本信息(本身静态属性)。 二 插件的基本结构 apkplug中的插件与OSGI标准靠齐,所以你也可以参考OSGI标准里面对Bundle的描述。不过apkplug框架还添加了一些特殊的属性(面向android) 1.插件状态: 插件状态可以通过Bundle.getState()获取 1.Bundle.UNINSTALLED 插件还未被安装(可能已卸载还为清理) 2.Bundle.INSTALLED 插件已经安装(未启动) 3.Bundle.RESOLVED 插件已经被框架正确解析(未启动) 4.Bundle.STARTING 插件正在启动(调用BundleActivator.start(BundleContext context)) 5.Bundle