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

本文章基于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"/>

另外将一下加入到<application></application>节点中

<!-- 插件平台需要的配置! -->

<activity

android:name="org.apkplug.app.apkplugActivity"

android:theme="@style/android:Theme.Light"

android:configChanges="orientation|keyboardHidden"

/>

三 启动apkplug框架

你可以在应用的Application中启动框架具体代码如下 (并不限制在Application中)

public FrameworkInstance start( List activatorList,Context appContext,PropertyInstance property)

public FrameworkInstance start( List activatorList,Context appContext,PropertyInstance property,DisplayMetrics dm2)

1.activatorList 是一个BundleActivator的List(可以为null) 这些BundleActivator在框架启动时启动(系统级别)

2.PropertyInstance 框架保存配置信息的接口

//框架通过该接口获取本地保存的变量

public  String getProperty(String key);

//框架通过该接口设置本地变量

public  void setProperty(String key,String v);

//框架启动时将自动安装该该函数提供的文件 "file:"+apk文件路径  (1.6.7以后不建议使用 可用BundleControl代替)

public String[] AutoInstall();

//框架启动时将自动安装并启动该该函数提供的文件  "file:"+apk文件路径  (1.6.7以后不建议使用 可用BundleControl代替)

public String[] AutoStart();

//调试模式   调试模式中退出APP时调用FrameworkInstance.shutdown();将删除所有插件

public boolean Debug();

四 框架启动成功获取FrameworkInstance接口

框架启动成功以后会返回org.apkplug.app.FrameworkInstance接口,它是宿主应用与apkplug框架和插件通信的接口。

//停止框架

public void shutdown();

//获取框架的SystemBundle           apkplug框架启动时会创建一个SystemBundle 它的BundleID为0 同时它不可停止和卸载,我们科通过它与其他插件通信

public Bundle getSystemBundle();

//SystemBundle 插件的上下文 BundleContext

public BundleContext getSystemBundleContext();

启动代码:

view source

print?

01 try
02 {
03  FrameworkInstance frame=FrameworkFactory.getInstance().start(null,Launcher.this,MyProperty.getInstance(this.getApplicationContext()));
04  }catch
(Exception ex){
05      System.err.println("Could not create : "
+ ex);
06      ex.printStackTrace();
07      StringBuffer buf=new
StringBuffer();
08      buf.append("插件平台启动失败:\n");
09      buf.append(ex.getMessage());
10      Toast.makeText(this,
"插件平台启动失败",Toast.LENGTH_SHORT).show();
11  }

至此框架便嵌入到应用中并启动成功了,下一篇文章将讲解怎样通过SystemBundle获取已插件和信息等操作

android插件化-apkplug框架启动-02,布布扣,bubuko.com

时间: 2024-12-19 20:32:24

android插件化-apkplug框架启动-02的相关文章

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

由于框架开发更新频繁的原因一直都没有时间写出框架的基本架构让大家云里雾里的,现在框架已基本稳定和完善,我就抽出时间写写关于apkplug框架的基本架构和原理,同时也跟大家一起研究利用apkplug框架玩出更新的功能. 一 apkplug的基本架构 apkplug简单的说是一个容器它将apk文件解析并映射成Bundle ,下文我们简称Bundle为插件.如下图 每一个apk插件被映射到apkplug框架中就是一个Bundle对象,完整路径为 org.osgi.framework.Bundle .通

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

插件是一个apk文件它存在自己的Activity界面和UI显示,本节将讲解如何配置插件的启动Activity以及怎样从宿主启动它. 一 配置插件apk的对外启动Activity (内部activity不需要配置) 与普通app不同,插件AndroidManifest.xml配置在apkplug框架中是无效的,我们需要在plugin.xml里面配置才能被apkplug所识别 具体设置属性为 Bundle-Activity="xxx.xxx.xxx.Activity" 只有设置为Bundl

android插件化-apkplug中OSGI服务基本原理-08

我们提供 apkplug 下OSGI使用demo 源码托管地址为 http://git.oschina.net/plug/OSGIService 一 OSGI与android Service 异同点 OSGI服务与android Service概念差不多也是Service ,Client 关系. android Service接口  --service.AIDL OSGI接口                --java interface 所以android 进程间通信Service只能传递序列

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

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

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

本节我们将练习怎样安装(更新)一个插件.本文章基于v1.6.7版本进行说明,最新的方式以官网为准 可下载最新的apkplugdemo源码http://git.oschina.net/plug/apkplugDemos 一 apkplug插件 apkplug插件是一个apk文件,它与普通的android APP基本相同(开发方式),本节只讲插件安装接口而插件开发将在后面的章节详细讲解 二 apkplug 插件安装服务 apkplug内嵌一个OSGI服务,所以框架大部分接口都是通过OSGI服务发布的

Android插件化(使用Small框架)

github: https://github.com/cayden/MySmall Android插件化(使用Small框架) 框架源代码 1. Create Project File->New->New Project... 1.1 Configure your new project 假设宿主包名为com.example.mysmall 设置Application name为MySmall 改动Company Domain为com.example.mysmall 这步是个技巧,在Step3

Android插件化开发之OpenAtlas插件启动方式与插件启动广播

到现在为止已经写了6篇文章了 Android插件化开发之OpenAtlas初体验 Android插件化开发之OpenAtlas生成插件信息列表 Android插件化开发之OpenAtlas资源打包工具补丁aapt的编译 Android插件化开发之OpenAtlas插件适配 Android插件化开发之解决OpenAtlas组件在宿主的注册问题 Android插件化开发之OpenAtlas中四大组件与Application功能的验证 这篇文章主要介绍一下OpenAtlas插件的几种启动方式,在Atl

Android 插件化框架 DynamicLoadApk 源码解析

1. 功能介绍 1.1 简介 DynamicLoadApk 是一个开源的 Android 插件化框架. 插件化的优点包括:(1) 模块解耦,(2) 动态升级,(3) 高效并行开发(编译速度更快) (4) 按需加载,内存占用更低等等. DynamicLoadApk 提供了 3 种开发方式,让开发者在无需理解其工作原理的情况下快速的集成插件化功能. 宿主程序与插件完全独立 宿主程序开放部分接口供插件与之通信 宿主程序耦合插件的部分业务逻辑 三种开发模式都可以在 demo 中看到. 1.2 核心概念

自己动手写Android插件化框架

最近在工作中接触到了Android插件内的开发,发现自己这种技术还缺乏最基本的了解,以至于在一些基本问题上浪费不少时间,如插件Context和主工程Context的区别,权限必须在主工程申明等,因此花了点时间了解了一下插件的历史,并写了两个Demo作为总结.本文旨在通过两个实例直观的说明插件的实现原理以加深对插件内开发的理解,因此不会深入探讨背景和原理,代码也尽量专注于核心逻辑. 原理与背景 Android插件化从技术上来说就是如何启动未安装的apk(主要是四大组件)里面的类,主要问题涉及如何加