android插件化-安装apkplug插件-04

本节我们将练习怎样安装(更新)一个插件。本文章基于v1.6.7版本进行说明,最新的方式以官网为准

可下载最新的apkplugdemo源码http://git.oschina.net/plug/apkplugDemos

一 apkplug插件

apkplug插件是一个apk文件,它与普通的android APP基本相同(开发方式),本节只讲插件安装接口而插件开发将在后面的章节详细讲解

二 apkplug 插件安装服务

apkplug内嵌一个OSGI服务,所以框架大部分接口都是通过OSGI服务发布的,在这里你可以不用详细了解OSGI服务的原理,一下我们将给出调用插件安装服务的模板代码。你在开发时可以直接套用。

三 BundleControl接口

插件安装服务接口为 org.apkplug.Bundle.BundleControl

// startlevel =2  isCheckVersion=true

Bundle install(BundleContext context,String loaclFilePath,installCallback callback)

// v1.6.7 新增接口  建议使用最新的这个调用接口

Bundle install(BundleContext context,String loaclFilePath,installCallback callback,int startlevel,boolean isCheckVersion)

* loaclFilePath     --- 插件apk文件的路径  格式为 "file:"+apk文件绝对路径

* installCallback   ---插件安装的回调函数  通过它可获知插件安装状态

* startlevel         ---插件启动级别 ,小于default_startlevel的插件会在框架启动时自起 default_startlevel=2

* isCheckVersion ---安装时是否检测已有插件版本   true 检测版本如果已安插件版本与现有插件版本相同将不安装  false 不检测覆盖安装

四 获取BundleControl服务

获取服务的模板代码为:

01 public void install(String
path,installCallback callback,
int startlevel,boolean isCheckVersion) throws Exception{
02   System.out.println("安装
:"
+path);
03   BundleContext
mcontext=frame.getSystemBundleContext();
04 ServiceReference
reference=mcontext.getServiceReference(BundleControl.
class.getName());
05      if(null!=reference){
06          BundleControl
service=(BundleControl) mcontext.getService(reference);
07         if(service!=null){
08             service.install(mcontext,
path,callback, startlevel,isCheckVersion);
09         }
10         mcontext.ungetService(reference);
11         }
12     }

调用函数安装插件

//插件启动级别为1(会自启) 并且不检查插件版本是否相同都安装

install("file:"+filepath[0],new myinstallCallback(),1,false);

五 插件卸载

Bundle.uninstall();

官网www.apkplug.com

QQ交流群:132433459

android插件化-安装apkplug插件-04,布布扣,bubuko.com

时间: 2024-08-01 22:31:53

android插件化-安装apkplug插件-04的相关文章

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

上一篇文章成功的将apkplug框架嵌入了应用中并且启动 链接http://www.apkplug.com/blog/?post=10 这一篇文章实现如何获取所有已安装插件 一 获取框架的SystemBundle的上下文BundleContext apkplug框架启动会自动创建一个SystemBundle, 它是框架的第一个插件不可停止和卸载,通过它我们可以与apkplug和其他插件通信 FrameworkInstance.getSystemBundle() 便可以获取到SystemBundl

Android Studio中安装Genymotion插件解决方案

之前讨论了在Eclipse中安装Genymotion插件,感觉还是比较麻烦的.现在我们要在Android Studio中安装Genymotion插件,比在Eclipse中方便多了.前提是你已经在电脑上安装了Genymotion.鉴于Eclipse的经验,在这里我们不介绍离线安装jar包的方式,也不推荐,现在而是使用在线的方式.具体步骤如下: (1)在Android Studio中选择File-->Settings,在出现的对话框左侧选择Plugins,然后在下方选择"Browser rep

Android 插件化原理解析——插件加载机制

上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务:通过Hook AMS和拦截ActivityThread中H类对于组件调度我们成功地绕过了AndroidMAnifest.xml的限制. 但是我们启动的『没有在AndroidManifet.xml中显式声明』的Activity和宿主程序存在于同一个Apk中:通常情况下,插件均以独立的文件存在甚至通过网络获取,这时候插件中的Activity能否成功启动呢? 要启动

android stuido 在线安装svn插件,添加版本库无响应

问题:android stuido 中在线安装svn插件,添加版本库无响应. 原因: 由于android stuido 版本较高,在线安装1.6x 版本的svn,添加版本库一直没有响应,最后卡死.. 解决方式:先删除SVN插件,重启后,再次在线安装,或者其他方式安装. 结果:问题解决.

在Android Studio 上安装Genymotion插件

首先去官网http://www.genymotion.net/下载Genymotion并安装好. 其次打开AS的设置界面,找到Plugins插件目录 然后在搜索里搜Genymotion,然后点击Browse.....,就会在右边出现提示你安装Genymotion插件,点击安装即可. 安装完毕后会提示你重启AS,点击重启. 第二次打开AS后会在工具栏中出现Genymotion的小图标: 点击这个图标,会叫你设置你Genymotion安装的目录,设置即可,然后下一次点击这个图标即可以打开已经下载好的

eclipse插件--link安装方式插件失败后的解决之道

使用 link 方式,离线安装 eclipse 插件时,经常失败. 一.常见的失败情况 link方式配好后,eclipse 启动,没有弹出任何信息. 查看当前工作空间--.metadata--.log文件,发现有错误提示: No repository found at file:  {文件夹路径} 这表示,eclipse 没有在此文件夹下,发现所安装的插件. 二.解决方案 首先错误提示中的文件夹下, 存在插件解压后的两个文件夹--plugins 和 features: 启动 eclipse, 查

Nagios插件化之ganglia插件

架构: nagios跟ganglia一样可以都是监控软件,但是两个也有不同之处,Ganglia的优势在于实时对监控集群中的机器的各项指标,比如CPU.内存.磁盘.温度等数据,汇总成各种图形化界面,并提供可调用数据.而在出现问题的时候报警提示功能,相对较弱. Nagios的优势在于出现问题之时可以提供强大的报警提示功能,但是在时间监控上,功能比较弱,即使使用NRPE插件也不足以提供强大的机器监控,所以此处将两者结合起来.实现监控.报警功能. 环境介绍: 1.服务器中已经安装好了Ganglia,安装

Android插件化框架

1.   dynamic-load-apk/DL动态加载框架 是基于代理的方式实现插件框架,对 App 的表层做了处理,通过在 Manifest 中注册代理组件,当启动插件组件时,首先启动一个代理组件,然后通过这个代理组件来构建,启动插件组件. 需要按照一定的规则来开发插件 APK,插件中的组件需要实现经过改造后的 Activity.FragmentActivity.Service 等的子类. 优点如下: 动态升级, 高效并行开发(编译速度更快) 按需加载,内存占用更低等等DynamicLoad

Android热修复与插件化实践之路

第1章 class文件与dex文件解析本章通过从java最基本的class文件与android最基本的dex文件进行对比,并不借助IDE去生成及执行class与dex文件,通过讲解class与dex的手动生成,执行, 格式对比,让学生明白二者的相同与不同.1-1 课程项目整体介绍1-2 本章概述1-3 class文件详解上1-4 class文件详解下1-5 dex文件详解上1-6 dex文件详解下 第2章 虚拟机深入讲解本章主要介绍jvm,dvm,art.通过对这三个虚拟机的介绍让学生明白,an