android模块化

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插件开发-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框架实现主应用与插件通讯(传递任意对象)实现UI替换

谁说胖子不能爱 提交于 2019-12-01 19:13:18
时光匆匆,乍一看已半年过去了,经过这半年的埋头苦干今天终于有满血复活了。 利用apkplug框架实现动态替换宿主Activity中的UI元素,以达到不用更新应用就可以更换UI样式的目的。 先看效果图: 首先理解OSGI服务的基本概念,如下图 1.首先定义一个java接口(interface)用于规范宿主与插件之间的通讯协议 interface com.apkplug.osgi.service.showView void showView(Bundle bundle,View v,int index) ; //添加View void removeView(Bundle bundle,View v); //删除View 2.决定osgi服务提供者和使用者 ,这里我们定义是 宿主应用为"OSGI 服务提供者" ,插件为"OSGI 服务使用者"。 注:OSGI服务提供者 注册服务 OSGI服务使用者 查询服务 3.宿主应用实现showView接口,相应类为 com.apkplug.osgi.serviceImp.showViewImp 具体代码如下: public class showViewImp implements showView{ private LinearLayout layout =null; /** * @param root 插件 View保存UI容器 */