前两章用apkplug框架实现了两个基本的功能,但它们都是在本地安装测试的,在实际开发过程中我们肯定是需要与服务器联网将更新的插件远程推送给用户手机客户端。今天利用apkplug提供的插件托管服务轻松实现插件的远程部署与客户端更新。
一,还是利用上一章所建的主应用,只是在主应用的assert文件夹中添加一个插件"BundleService0.0.2.apk",该插件是apkplug官网提供服务插件,它封装了与托管服务器通讯,文件下载,文件缓存等功能只留出了简单易用的接口给开发者,开发者通过接口可以任意设计自己的应用界面而不必关心通讯细节。
二,编写我们自己的应用更新插件
首先新建一个工程MyApkplugService 照例编写插件所必须的几个java类和plug.xml文档。工程结构如图
在这个插件中我们除了需要添加osgi.jar包以外还需要添加installService0.0.2.jar来与我们的BundleService0.0.2.apk插件通讯。
环境搭建好了现在我们可以在MyApkplugService通过与BundleService0.0.2.apk插件通讯更新下载插件了。
三 编写自己的应用管理插件
BundleService0.0.2.apk插件对插件管理的整个过程都封装的很好,提供给开发者一个灵活而方便的操作方式,其接口主要有
1.appSearch.java 通过这个接口我们可以任意组合查询条件如插件 appid,插件名称 appname,查询页page,插件关键词b_keywords,插件添加时间排序方式b_order等
2.appDownload.java 通过这个接口可以实现插件的自动下载安装
3.checkupdate.java 通过这个接口我们可以查询服务端插件与本地插件的差异,进而进行以后的操作
简单说明了托管服务的接口下面就通过具体的代码讲解其使用过程
我们的MyApkplugService只使用一个MainActivity做为显示界面。
首先我们编写一个search()函数来查找BundleService0.0.2.apk提供的appSearch接口,通过这个接口我们就可以查询服务器上的插件了代码入下
02
|
*
插件搜索服务 appSearch 为BundleService提供的一个插件搜索服务
|
03
|
*
@param bean appSearchBean 可以填写你搜索插件的一些搜索条件 比如按关键词搜索 按时间排序 按模糊名称搜索等
|
04
|
*
@param callback 为服务结果回调接口 开发者可以通过该接口可以得知返回结果进行后续操作
|
06
|
public void search(appSearchBean
bean,AppSearchCallBack callback){
|
07
|
ServiceReference
reference=BundleContextFactory.getInstance().getBundleContext()
|
08
|
.getServiceReference(appSearch. class .getName());
|
11
|
appSearch
service=(appSearch) BundleContextFactory.getInstance().getBundleContext()
|
12
|
.getService(reference);
|
15
|
service.search(bean,callback);
|
17
|
BundleContextFactory.getInstance().getBundleContext()
|
18
|
.ungetService(reference);
|
当我们获取到appSearch 接口以后便可以service.search(appSearchBean bean,AppSearchCallBack callback);方法进行查询了。
appSearchBean.java类是一个查询类bean我们可以传入我们的查询条件
AppSearchCallBack.java类是一个回调函数,异步查询完成以后的值将通过这个回调函数返回给我们
以下便是我们初始化时查询代码
02
|
public void updataDate(){
|
04
|
appSearchBean
bean= new appSearchBean();
|
06
|
bean.setB_keywords( "test" );
|
08
|
bean.setG_order(appSearchBean.order_desc);
|
10
|
bean.setB_btime( "2013-10-15" );
|
17
|
search(bean, new AppSearchCallBack(){
|
19
|
public void onSuccess( int stutas,msg
msg,appSearchBean bean) {
|
22
|
if (msg.getStutes()>= 0 ){
|
27
|
List<appBean>
aps=(List)msg.getMsg();
|
28
|
for ( int i
= 0 ;
i < aps.size(); i++) {
|
29
|
appBean
ab=aps.get(i);
|
33
|
MainActivity. this .getListView().post( new Runnable(){
|
35
|
adapter.notifyDataSetChanged();
|
44
|
public void onFailure( int arg0, final String
arg1) {
|
很简单吧,通过这样就完成了客户端的开发工作。
四 注册帐号-->将主应用添加到服务器上如图
将插件apk上传到服务器上并且将插件与主应用绑定
如图
添加完成以后我们也可以看该应用一个添加了的插件
设置插件的关键词(可以做为我们本地查询的一个条件)
至此整个过程便都操作完毕了,我们可以运行应用查看效果了 如图
点击运行
最后源码奉上
最后注意的是服务器以应用的包路径做为ID(主应用和插件都是),所以在服务器上包路径是不可以重复了(跟应用商店一样),如果你要用以上的源码实验请修改为你自己的包路径再上传。
分享到:
相关推荐
基于Android手机app开发与设计--毕业设计--开题分析报告.pdf基于Android手机app开发与设计--毕业设计--开题分析报告.pdf基于Android手机app开发与设计--毕业设计--开题分析报告.pdf基于Android手机app开发与设计--...
基于android的阅读软件App设计-开题报告 (2).docx基于android的阅读软件App设计-开题报告 (2).docx基于android的阅读软件App设计-开题报告 (2).docx基于android的阅读软件App设计-开题报告 (2).docx基于android的...
基于Android手机app开发与设计--毕业设计--开题分析报告 (2).pdf基于Android手机app开发与设计--毕业设计--开题分析报告 (2).pdf基于Android手机app开发与设计--毕业设计--开题分析报告 (2).pdf基于Android手机app...
基于Android手机app开发与设计--毕业设计--开题分析报告 (2).docx基于Android手机app开发与设计--毕业设计--开题分析报告 (2).docx基于Android手机app开发与设计--毕业设计--开题分析报告 (2).docx基于Android手机...
安卓app开发项目-LumaQQ-Android qq 代码(源码).zip安卓app开发项目-LumaQQ-Android qq 代码(源码).zip安卓app开发项目-LumaQQ-Android qq 代码(源码).zip安卓app开发项目-LumaQQ-Android qq 代码(源码).zip安卓app...
Uni-App模块化开发的组件封装
安卓app开发项目-联想Android开发工程师面试题(源码).zip安卓app开发项目-联想Android开发工程师面试题(源码).zip安卓app开发项目-联想Android开发工程师面试题(源码).zip安卓app开发项目-联想Android开发工程师面试...
android开发_使用Android-Studio开发的android版新闻APP
AppUpdater for Android 是一个专注于App更新一键傻瓜式集成的开源库,主要包括app-updater和app-dialog。 > 下载更新和弹框提示分开,是因为这本来就是两个逻辑。完全独立开来能有效的解耦。 app-updater 主要负责...
安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android...
安卓开发之串口通信android-serialport-api-master,虽然是从Github上面下载下来的,但是从下载到使用还是有很多问题,其中之一就是由于该api是今年前开发出来的,sdk版本过低导致现在的eclipse不能直接使用,关于此...
基于Android手机app开发与设计--毕业设计--开题报告.doc
Android模块化开发、组件化开发架构Demo,由一个宿主App,一个基类library,其他三个module构成,以及页面路由ARouter的使用介绍,包括模块间数据传递,服务调用,常规跳转,带参数跳转,跳转监听,页面拦截,降级...
5.13_内容卡片数据初始化|uni-app_项目实战(首页功能模块)|uni-app_&_uniCloud_从零入门开发《IT
Github已开源:...详细内容也可看我的文章:https://mp.csdn.net/mp_blog/creation/editor/124478948《Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】》
sketch-app-asset-export, Sketch3插件,一个关键输出 Android/iOS/Mac/Windows 应用程序图标 #Sketch Plugin:App 资产导出Sketch插件,用于导出 android/ios应用程序图标的一个按键。为 Android/iOS/iPhone 应用...
大家自行下载,这个都是免费公开的,其中也是我自己毕业设计的一部分,只允许提供给大家学习使用。
android-app-master 源代码。开源项目
学习使用AndroidStudio开发App
Android Studio实现安卓APP大作业百宝箱app源代码移动终端开发大作业。Android Studio实现安卓APP大作业百宝箱app源代码移动终端开发大作业。Android Studio实现安卓APP大作业百宝箱app源代码移动终端开发大作业。...