欢迎来到天天文库
浏览记录
ID:32695663
大小:154.50 KB
页数:8页
时间:2019-02-14
《android模块化app开发笔记环境搭建》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、由于项目做的越来越大,业务上就产生了要将app模块化的需求,所谓模块化就是将一个app分成不同功能的小模块(插件),当安装程序的时候并不需要将所有模块一次全部安装,用户可以在需要的时候视情况从服务器上更新添加小插件。android上模块化一直都有人在摸索也出现了不少框架各有优特点,我学习apkplug这个插件化框架。这个框架的特点是1)插件就是普通apk文件,开发插件跟普通app没有太大区别省去了学习固定api的功夫了。2)插件apk不用在本地安装,网上比较经典的插件化框架都是通过android:sharedUserId="x
2、xx"的形式将插件与app进行关联,而apkplug不用安装在app进程中运行也算是它的一大特点3)通过标准OSGI服务实现插件间通讯,我们开发应用时就可以定义自己的通讯接口了,而不必拘泥于固定的接口。一环境搭建从apkplug官网下载其最新的sdk解压出来的文件目录结构为如图1新建一个主应用工程我取名为myapkplughelloworld,将armeabi,Bundle1.4.0.jar两个文件放入工程的libs文件夹中如图28/8配置应用权限到工程的AndroidManifest.xml中5、keyboardHidden"/>下一步便是调用SDK启动插件了。8/8这里需要写一个PropertyInstance接口它是apkplug定义的目的是为了插件框架启动时传人一些启动参数,我够出来这个接口的定义如下,具体详细使用可以看apkplug官方提供的文档基本上是模块化的东西[java]viewplain6、copy1publicinterfacePropertyInstance{2/**3*框架配置信息获取接口4*框架将通过该接口从系统获取必要信息5*可以通过该接口实现框架信息的本地保存6*@paramkey7*@return8*/9publicStringgetProperty(Stringkey);10/**11*框架配置信息设置接口12*框架通过该接口设置其产生的配置信息13*可以通过该接口实现框架信息的本地保存14*@paramkey15*@paramv16*/17publicvoidsetProperty(String7、key,Stringv);18/**19*框架启动时将自动安装该该函数提供的文件20*@return本地插件绝对路径21*/22publicString[]AutoInstall();23/**24*框架启动时将自动安装并启动该该函数提供的文件25*@return本地插件绝对路径26*/27publicString[]AutoStart();28}PropertyInstance写好以后便可以调用FrameworkInstance类启动框架了如下代码[java]viewplaincopy29try30{8/812Framewo8、rkInstanceframe=FrameworkFactory.getInstance().start(null,Launcher.this,3MyProperty.getInstance(this.getApplicationContext()));4}catch(Exceptionex){5System.err.println("Couldnotcreate:"+ex);6//ex.printStackTrace();7StringBufferbuf=newStringBuffer();8buf.append("插件平台9、启动失败:");9buf.append(ex.getMessage());10this.setTitle(buf.toString());11Toast.makeText(this,"插件平台启动失败",12Toast.LENGTH_SHORT).show();13}如果
5、keyboardHidden"/>下一步便是调用SDK启动插件了。8/8这里需要写一个PropertyInstance接口它是apkplug定义的目的是为了插件框架启动时传人一些启动参数,我够出来这个接口的定义如下,具体详细使用可以看apkplug官方提供的文档基本上是模块化的东西[java]viewplain
6、copy1publicinterfacePropertyInstance{2/**3*框架配置信息获取接口4*框架将通过该接口从系统获取必要信息5*可以通过该接口实现框架信息的本地保存6*@paramkey7*@return8*/9publicStringgetProperty(Stringkey);10/**11*框架配置信息设置接口12*框架通过该接口设置其产生的配置信息13*可以通过该接口实现框架信息的本地保存14*@paramkey15*@paramv16*/17publicvoidsetProperty(String
7、key,Stringv);18/**19*框架启动时将自动安装该该函数提供的文件20*@return本地插件绝对路径21*/22publicString[]AutoInstall();23/**24*框架启动时将自动安装并启动该该函数提供的文件25*@return本地插件绝对路径26*/27publicString[]AutoStart();28}PropertyInstance写好以后便可以调用FrameworkInstance类启动框架了如下代码[java]viewplaincopy29try30{8/812Framewo
8、rkInstanceframe=FrameworkFactory.getInstance().start(null,Launcher.this,3MyProperty.getInstance(this.getApplicationContext()));4}catch(Exceptionex){5System.err.println("Couldnotcreate:"+ex);6//ex.printStackTrace();7StringBufferbuf=newStringBuffer();8buf.append("插件平台
9、启动失败:");9buf.append(ex.getMessage());10this.setTitle(buf.toString());11Toast.makeText(this,"插件平台启动失败",12Toast.LENGTH_SHORT).show();13}如果
此文档下载收益归作者所有