今天学习下使用apkplug实现Android客户端插件化,apkplug代码虽然不是开源的,但是说明文档比较全,可以很快到实现客户端插件化开发,参考文档:http://www.apkplug.com/
由于文档非常详细,这里记录些概念性的东西,加深记忆,具体使用看官方文档吧。
apkplug 介绍
apkplug 是一个android平台下免费的OSGI框架,是android程序插件化,模块化开发利器
apkplug 是一个极简的android插件化,模块化,轻应用解决方案,可以轻松的将android转化为模块化的轻应用
apkplug框架可以实现应用内部动态更新,绕过频繁提交应用商店的难题
丰富灵活的通讯方式,可以让插件,主应用之间更加紧密的结合在一起。通用的OSGI服务接口又可以使插件之间保持最佳的耦合度降低应用复杂性
apkplug框架拥有灵活的通信接口定义方式
通过提前在宿主AndroidManifest.xml声明,插件可以支持Service组件
apkplug 可用于app的任何位置,也可以只作为一个小模块。它与应用融合在一起我们可提供特殊的API接口,通过这些接口你可以设计出更加出色的通用插件,诚挚希望与您合作
apkplug与其他android模块化框架有何不同
- 1.目前大部分模块化框架是基于android:sharedUserId方式开发的,插件apk需要独立安装,而apkplug插件与主应用融为一体不需要独立安装
- 2.目前大部分模块化框架需要开发者在开发插件时约定UI开发模式和通讯规则,而apkplug框架沿用了android原生的UI开发方式
- 3.apkplug与主程序的通讯方式除了支持访问数据库与SharedPreferences外还引入了OSGI服务的方式,增加了通讯灵活性与数据交互扩展性
你可以用apkplug做什么?
- 1.将应用模块化可以轻易实现功能更新!最大的优势是在一个极小的功能更新时无需更新整个应用
- 2.通过插件化,模块化的方式减轻你的APP负担,彻底摆脱APP无限增大的问题
- 3.对用户而言可定制模块以让用户选择性安装,提供一套简洁的体验
- 4.简化开发流程,可将不同的功能交由工程师负责开发,最终以插件的形式组合起来
- 5.将自己的APP变成一个轻应用平台
使用apkplug的优势
- 1.模块化插件化开发与部署实现更快的迭代速度
- 2.提升用户体验,以模块化的部署方式可以减轻APP重量
- 3.轻松使用通用功能扩展模块如页面统计,主题切换等
- 4.降低应用的复杂度,插件化模块化的开发方式将各个功能分割开发。
apkplug插件注意事项
- 1.apkplug宿主应用的接入极为简单,开发者可参考demo代码模板在宿主应用任何位置启动框架
- 2.插件开发必须遵循一个规则:插件中不能存在宿主应用中相同的类(类包名+类名)
开发大体流程描述:
一.创建宿主项目(将插件平台集成到了你的APP)
1、配置应用权限,就是些常规权限
2、配置工程,就是加入bundle.jar、libndkfoo.so、android-support-v4.jar包。
3、编写启动平台需要的接口类
4、启动apkplug框架框架可以在宿主应用的任何一个activity里面启动。
二。创建一个插件
1、配置插件工程,osgi.jar(加入最新osgi.jar包)引入工程中,注意:osgi.jar不可打包到插件apk文件中,但你可以在调试过程中选择,而在最终打包是去掉以方便调试。
2、编写 BundleActivator,BundleActivator只是一个接口他有两个函数 分别是 start(BundleContext context) ,stop(BundleContext context) 框架启动和关闭插件时会分别调用
3、添加插件配置文档,plugin.xml 是一个配置表,通过它框架可以获取插件有关的信息,
三、在宿主应用中使用插件
1、将生成的插件apk文件加入主应用。当然你也可以在适当的时候通过网络下载插件,并且利用SDK提供的系统服务安装到框架中。
2、在宿主应用中启动插件。插件apk可以通过SDK提供的服务安装到框架中,也可以在PropertyInstance接口(宿主应用)中设置该插件为自动启动安装。
3、启动插件中的activity。注意:在插件中启动activity(包括启动其他插件或宿主应用的activity)不需要使用模板代码,它与android启动activity一样就可以了。