如何使用插件化apk

Apkplug最大的亮点就在于它的强大功能-插件化apk,就是多个APK在一个APK上运行,可实现应用内更新等需求。还可以搭建聚合广告,聚合支付等平台。

今天先介绍其插件化apk的功能。接入流程可归结如下图:

122209_A2wZ_1376153.png

步骤1:注册ApkPlug官网账号:

官网地址httpwww.apkplug.com

打开Apkplug官网后,点击右上角的注册,在跳转页面填入相关信息,注册界面如下:

122210_itGJ_1376153.png

确认后注册成功,使用你的账号登录网站。你就可以用Apkplug开发应用了

步骤2:开发插件

Apkplug中的插件也是一个完整的apk,它与普通应用的区别有以下3点:

1 插件assets目录下有一个plugin.xml文档,通过它可判断一个工程是主应用还是插件。

2 插件有一个入口类BundleActivator

3 插件会外部引用一个osgi.jar文件

开发插件的步骤有如下4步:

1,引入osgi.jar库文件

Apkplug中插件需要导入的库文件只有一个osgi.jar

导入osgi.jar库文件需要注意一下

osgi.jar文件只能引用不能编译到apk文件中,否则会出现类冲突的情况

异常代码:had used adifferent Lorg/osgi/framework/BundleActivator; during pre-verification

osgi.jar包导入方法:

122210_i39K_1376153.png

122210_Ogvp_1376153.png

这文件在Apkplug SDK中可以找到。

Apkplug SDK下载地址:http://apkplugdemo.oss-cn-qingdao.aliyuncs.com/ApkplugSDK2.7.0.zip

2,编写插件入口类BundleActivator

插件启动时首先调用BundleActivator,其功能类似android中的application类。

public class SimpleBundle implements BundleActivator

{

private BundleContext mcontext = null;

public void start(BundleContext context)throws Exception

{

System.err.println("你好我是插件,我将为你展示启动acitivty我已经启动了我的BundleId为:"+context.getBundle().getBundleId());

}

public void stop(BundleContext context)

{

System.err.println("你好我是插件,我被停止了 我的BundleId为:"+context.getBundle().getBundleId());

}

}

3,编写plugin.xml配置文件

plugin.xml 是一个配置表,它跟AndroidManifest.xml作用类似。 plugin.xml文档放置在assets中即可 重要属性说明: Bundle-Name 插件名称 Bundle-SymbolicName 插件包名-与应用packagename可一一对应 Bundle-Version 插件版本 -1.0.0 Bundle-Activator插件入口 -Appliction 类似 Bundle-Activity 插件界面 -多个Activity可用 , 分割Bundle-Service 插件Service -多个Service可用 , 分割 (v2.0.0新增)Bundle-Receiver 插件广播 -多个广播类可用 ,分割 (v2.0.0新增)

4 编译生成插件apk文件

插件工程中添加的文件目录结构如下:

122211_CbYY_1376153.png

最后编译运行插件工程,生成的apk文件即为插件文件

步骤3:开发主应用

Apkplug 主应用开发分两步集成:

1. 获取主应用授权AppAuth

登录账号进入Apkplug后台后,切换到应用授权页面,按要求填写好应用信息,然后确定,你就拥有了一个等待开发的应用授权AppAuth。应用授权界面如下:

122211_LTcL_1376153.png

进入授权列表页面,点击查看详情链接,进入应用详情界面,就可以看到已申请的AppAuth,点击其后面的复制,即可直接复制AppAuth,如下图所示

122211_0oPv_1376153.png

2. 对接Apkplug SDK 导入相关库文件。

配置应用权限

主应用需要几个基础的权限配置,请将以下的几个权限加入到主应用的AndroidManifest.xml中。

<!-- 插件平台需要的权限! -->

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

<uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<uses-permissionandroid:name="android.permission.INTERNET"/>

<uses-permissionandroid:name="android.permission.READ_PHONE_STATE">

</uses-permission>

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

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

<activity

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

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

android:configChanges="orientation|keyboardHidden"

/>

最后将我们从Apkplug管理后台申请到的AppAuth加入到配置文件中。

<meta-dataandroid:name="apkplug-auth" android:value="xxxxxxxx"></meta-data>

注:由于3.2.2节中我们直接复制了AppAuth,此处直接粘贴到AndroidManifest文档中。

如下图:

122211_LY2h_1376153.png

导入SDK库文件

主应用需要导入两个文件,将其放入libs目录中即可。

1 libndkfoo.so

2 Bundle2.0.0.jar

如下图:

122212_nx7t_1376153.png

这两个库文件在Apkplug SDK中可以找到。

Apkplug SDK下载地址:http://apkplugdemo.oss-cn-qingdao.aliyuncs.com/ApkplugSDK2.7.0.zip

然后:

主应用启动Apkplug最简只需要一段代码即可,建议在Application中启动框架。

FrameworkInstanceframe=FrameworkFactory.getInstance().start(List<BundleActivator>,Context);

将上一步骤开发好的插件apk,放置在主应用工程里的assets路径下。

如下图:

122212_1ivG_1376153.png

步骤4:启动主应用

最后启动主应用即可。简单的插件化apk的方法就讲完了,有兴趣的关注我,下次讲云端托管插件实现应用内更新。

注意事项

申请appauth,是以包名为唯一参数的。申请之后后天不可修改。

此方法只适用于本地插件apk文件,如果需要云端托管插件,还需为插件申请appid.

demo见附件http://apkplugdemo.oss-cn-qingdao.aliyuncs.com/ApkplugDemo.zip

转载于:https://my.oschina.net/u/1376153/blog/388888

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值