码迷,mamicode.com
首页 > 移动开发 > 详细

Android应用插件式开发解决方法

时间:2015-10-14 22:09:26      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:

Android应用插件式开发解决方法

一、现实需求描述

一般的,一个Android应用在开发到了一定阶段以后,功能模块将会越来越多,APK安装包也越来越大,用户在使用过程中也没有办法选择性的加载自己需要的功能模块。此时可能就需要考虑如何分拆整个应用了。

二、解决方案提出

一般有两种方式,一种是将应用按照功能分拆成多个应用,用户需要哪个就下载哪个,都需要就都下载。应用之间,可以在代码层面做一定的关联,以共享部分信息。另一种方式,类似于其他平台插件的方式,用户可以在主应用中可以选择性的下载需要的插件,不需要该功能,则不需要下载。

第一种方式,只需要开发多个应用就够了。第二种方式稍微复杂,需要做很多额外的工作。这里我们简单讨论第二种方式的大致实现方法。

三、实现方法概述

有人可能会想到,是否可以像其他平台那样,下载一个类似于dll文件,或者jar包,就能自动识别并且加载该功能?可惜的是,在Android平台上是不允许直接动态加载jar包的,作者也没有想到类似办法。所以,想实现这种功能,还是要以独立APK的方式来加载。和第一种方式不同的是,从设计的角度,具体的插件是没有独立运行的入口的,也不允许有桌面图标存在,必须从主应用中打开,关闭后回到主应用(插件既然是APK,它安装完怎么会没有入口?怎么会没有桌面图标?QQ的跑酷等游戏不就是插件?不是就有图标入口?)。从用户的角度看,可以在应用中加载需要的功能并且使用,也就类似于其他平台插件的方式了。

为了实现这种方式,从设计的角度,就需要考虑清楚哪些功能作为独立的插件提供给用户,这里不再详述。下面从开发的角度说明大致需要做的工作。

?  主应用中需要开发的框架功能:

识别具体的插件是否已经安装(根据插件的package名)

如果已经安装要判断是否需要升级(服务器端获取最新的版本和本地的比较)

下载并且安装(或者升级)插件

卸载该插件

?  插件APK开发中需要注意的事项:

Manifest文件中不要提供启动的入口

?  主应用和插件之间交互的提示:

最好是使用相同的android:sharedUserId,插件可以方便的获取主应用的资源、数据库等等。

主应用可以以Intent方式启动具体的插件,同时带入Map类型参数或者json串参数,在插件APK中解析具体参数,实现业务逻辑。

Android应用插件式开发解决方法

标签:

原文地址:http://my.oschina.net/u/859939/blog/517271

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!