Apkplug最大的亮点就在于它的强大功能-插件化apk,就是多个APK在一个APK上运行,可实现应用内更新等需求。还能够搭建聚合广告,聚合支付等平台。
android
今天先介绍其插件化apk的功能。接入流程可归结以下图:app
步骤1:注册ApkPlug官网帐号:框架
官网地址http:www.apkplug.com网站
打开Apkplug官网后,点击右上角的“注册”,在跳转页面填入相关信息,注册界面以下:spa
确认后注册成功,使用你的帐号登陆网站。你就能够用Apkplug开发应用了插件
步骤2:开发插件xml
Apkplug中的插件也是一个完整的apk,它与普通应用的区别有如下3点:ip
1, 插件assets目录下有一个plugin.xml文档,经过它可判断一个工程是主应用仍是插件。ci
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包导入方法:
这文件在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文件
插件工程中添加的文件目录结构以下:
最后编译运行插件工程,生成的apk文件即为插件文件
步骤3:开发主应用
Apkplug 主应用开发分两步集成:
1. 获取主应用受权AppAuth。
登陆帐号进入Apkplug后台后,切换到“应用受权页面”,按要求填写好应用信息,而后肯定,你就拥有了一个等待开发的应用受权AppAuth。应用受权界面以下:
进入“受权列表”页面,点击“查看详情”连接,进入“应用详情界面”,就能够看到已申请的AppAuth,点击其后面的“复制”,便可直接复制AppAuth,以下图所示
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文档中。
以下图:
②导入SDK库文件
主应用须要导入两个文件,将其放入libs目录中便可。
1, libndkfoo.so
2, Bundle2.0.0.jar
以下图:
这两个库文件在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路径下。
以下图:
步骤4:启动主应用
最后启动主应用便可。简单的插件化apk的方法就讲完了,有兴趣的关注我,下次讲云端托管插件实现应用内更新。
注意事项
申请appauth,是以包名为惟一参数的。申请以后后天不可修改。
此方法只适用于本地插件apk文件,若是须要云端托管插件,还需为插件申请appid.
demo见附件http://apkplugdemo.oss-cn-qingdao.aliyuncs.com/ApkplugDemo.zip