apkplug

android插件化-apkplug从宿主启动插件Activity-06

佐手、 提交于 2019-12-05 06:26:25
插件是一个apk文件它存在自己的Activity界面和UI显示,本节将讲解如何配置插件的启动Activity以及怎样从宿主启动它。 一 配置插件apk的对外启动Activity (内部activity不需要配置) 与普通app不同,插件AndroidManifest.xml配置在apkplug框架中是无效的,我们需要在plugin.xml里面配置才能被apkplug所识别 具体设置属性为 Bundle-Activity="xxx.xxx.xxx.Activity" 只有设置为Bundle-Activity的activity才能从宿主中启动,否则将报"无法找到相应类的异常" 二 设置多个外部启动Activity 如果你有多个activity需要从外部启动的话可以用,分割 如 Bundle-Activity="a.b.c,d.e.f,j.q.p" 以上配置了三个activity,可以外部启动通过插件的Bundle.getBundleActivity() 可获取到这个字符串 Bundle.getBundleActivity().split(",")[0] 分割出对应的Activity类 三 启动activity 启动插件activity的方式很多,最简单的是以原生activity启动方式进行启动 Intent i=new Intent(); i.setClassName(mContext

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

apklug插件托管服务开发教程之查询已安装插件版本状态-03

為{幸葍}努か 提交于 2019-12-04 06:22:07
实现项目demo http://git.oschina.net/plug/ApkplugCloudServiceDemo 实现代码 :com.apkplugdemo.adapter.UpdataActivity 一,插件版本状态查询服务 OSGI服务接口为:com.apkplug.service.update.checkupdate OSGI服务查询模板代码如下 /** * 插件版本更新OSGI服务 一次只允许最大查询20给插件的版本信息 * @param context * @param updateAppBean bean 需要查询版本的插件填充bean * @param callback 查询回调函数 */ public void checkupdate(BundleContext context,updateAppBean bean,updateCallBack callback){ ServiceReference reference=context.getServiceReference(checkupdate.class.getName()); if(null!=reference){ checkupdate service=(checkupdate) context.getService(reference); if(service!=null){ service

apkplug插件托管服务简化与简介-05

天大地大妈咪最大 提交于 2019-12-04 06:21:57
本文基于TuoClondService1.1.0讲解 apkplug插件托管服务是提供给开发者一个远程发布插件的管理平台,但v1.0.0版本接口调用有些复杂我们在v1.1.0版本中着重对其进行了简化 与封装,使开发者能更简单明了的使用这项服务。 apkplug插件托管分为两部分 云服务托管:开发者须将主应用与插件apk包上传托管服务器 查询api接口:开发者可根据该接口通过简单的调用实现插件的 查询,下载安装,更新等功能 一下着重讲解查询api接口的调用方式,关于插件上传与管理平台操作请这篇文章< 插件云端上传与管理 > 一 接口简介 1.api接口提供一个单例类ApkplugCloudAgent,开发者可通过该类完成所有功能 2. 插件托管服务接口都是以填充查询bean以及回调callback接口的形式完成的 开发者需要做的工作有 填充查询条件bean 编写查询回调接口 callback 二 导入插件托管服务jar包 三 初始化启用托管服务接口 //BundleContext context =frame.getSystemBundleContext(); //启动云服务包括插件搜索 下载 更新功能 ApkplugCloudAgent.init(context); 四 查询接口调用示例 appSearchBean bean=new appSearchBean(); /

apklug插件托管服务开发教程之上传应用到云端-04

限于喜欢 提交于 2019-12-04 06:21:48
只有上传到apkplug云端的应用才能真正使用插件托管功能 一,注册账号 开发者点击 apkplug官网 右上角的注册按钮注册开发帐号。注册完成以后可以登录进入后台插件管理平台 二,上传应用 开发者上传应用后系统会自动解析apk包并区分主应用和插件。 存在assets/plugin.xml的是插件,否为主应用 三,为应用添加(绑定)插件 四,修改插件关键词(keywords) 来源: oschina 链接: https://my.oschina.net/u/138488/blog/267567

apklug插件托管服务开发教程之下载插件-02

心已入冬 提交于 2019-12-04 06:21:38
结合上节 < 按条件查询宿主中的插件 >,本节下载并按照云端的插件。 实现项目demo http://git.oschina.net/plug/ApkplugCloudServiceDemo 实现代码 :com.apkplugdemo.adapter.SearchBundleAdapter 一,插件下载安装服务 插件下载安装服务也是以OSGI服务形式提供的,获取服务的模板代码为: //查询插件下载服务 因为该服务在框架启动时启动,所以肯定存在 ServiceReference reference=context.getServiceReference(AppDownload.class.getName()); if(null!=reference){ service=(AppDownload) context.getService(reference); } context.ungetService(reference); 二,AppDownload服务接口说明 public interface AppDownload { /** * 插件托管服务接口 * @param appBean ab 包含插件基本信息 * @param mContext android上下文 * @param callback 服务回调接口 * @throws IOException */ public

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插件化-apkplugdemo源码阅读指南-10

£可爱£侵袭症+ 提交于 2019-12-04 06:20:47
阅读本节内容前可先了解 apkplug基础教程 本教程是基于apkplug V1.6.8 版本编写 最新开发方式以官网为准 可下载最新的apkplugdemo源码 http://git.oschina.net/plug/apkplugDemos apkplugdemo演示图 一 apkplugdemo工程源码结构 src |-com.apkplugdemo.adapter --插件列表Adapter |-com.apkplugdemo.adapter.base --adapter 基类 |-com.apkplugdemo.FileUtil --文件操作类 |-com.apkplugdemo.FileUtil.filter --文件类型过滤类 |-com.apkplugdemo.util --项目通用工具类 |-com.apkplugdemo.util.Observer --java观察者设计模式类 |-com.apkplugdemo.util.preferencesFactory --preferences操作类 |-com.example.apkplugdemo --项目application 和activity类 |-huahua.viewpager --与com.example.apkplugdemo功能相同 只是提供fragment方式展示 二 阅读方式