ApkPlug 架构

Apkplug可以把一个apk作为插件应用到你的主应用中。为开发者提供插件化,模块化,轻应用开发方案。你可利用它解决 apk 文件过大,代码臃肿,更新代价大等问题。以及支撑应用内更新,支撑第三方插件接 入等功能。同时 APKPLUG 还提供移动支付聚合,渠道接入等 众多实用开发工具。

一、 apkplug特性说明

1. 支持android四大组件
2. 支持so
3. 支持intent和osgi插件间通信
4. 支持安卓原生主题皮肤切换
5. 不支持自定义activity跳转特效
6. 不支持自定义通知栏
7. 优先使用插件内部自己的java类,如果没有则会从宿主中查找

二、 apkplug概念说明

apkplug总共分为两部分

1. apkplug插件化框架

2. 插件托管服务

插件开发常用词约定

1. 后台:
    指apkplug提供的宿主与插件管理平台
1. 宿主:
    指需要安装的主APP
2. 插件:
    指可以依托于宿主运行的APK
    1. Bundle对象
        插件安装以后都会被映射为一个Bundle对象,Bundle包含了插件的基本信息,同时可以利用该对象启动,停止,卸载插件
    2. plugin.xml
        apkplug独有的插件配置文档,类似于android的manifest.xml
    3. BundleActivator
        代表插件的生命周期,开发者可以实现该类,它的作用类似android的Appliction
    4. BundleContext
        代表插件的上下文,类似android的Context,插件被启动以后就可以获取到自己的BundleContext。
3. 插件托管
    指可以将插件APK存放与服务器,在宿主需要这个插件的时候通过HTTP协议从云端下载并且直接使用
    1. 短链接:
        指为每一个插件生成唯一的URL地址
        1. 用来快速实现插件远程安装和更新
    2. 容器:
        1. 容器是用来解决宿主与插件之间的依赖问题
            宿主可以绑定多个插件,插件也可以绑定到不同的应用中
        2. 容器是依附于宿主的
            1. 一个宿主可以创建多个容器
            2. 容器间相互隔离,互不影响
        3. 将不同的插件放置于同一个容器当中,可以调整插件间的排序方式,可以轻松实现一个应用内组件商店

三、ApkPlug 架构图

前端架构图

如下是apkplug前端架构图,apkplug sdk分为插件化框架和插件托管两大部分。插件化框架负责插件的加载、插件四大组件的支持、插件件通信等功能;插件托管负责插件后台托管版本信息的查询、插件的下载安装及更新等。

后台架构

如下是apkplug后台架构,后台主要包括宿主应用和插件两部分,宿主应用可以添加容器,容器可以添加插件,宿主和插件就是通过容器联系的;插件可以被绑定到若干容器中,也可以生成自己的短链,通过短链可以直接在代码里下载安装这个插件。

容器和短链都可以使宿主使用某个插件,下面是它们的比较:

1、容器可以为宿主绑定一组插件,宿主配置容器id就可以加载这一组插件;短链只可以下载一个插件,但是不用在后台配置容器和在前端配置容器id,可以直接在代码中通过短链下载插件。

2、通过容器方式加载的插件,可以在后台动态修改容器里绑定的插件;短链方式是在代码写死的。