Call Us Now! 020-87540245

App开发工程结构搭建:几种常见Android代码架构分

时间:2014-12-15 16:05来源:广州移乐

移乐信息技术总监分析称:小米应用包括3个应用,小米分享,小米阅读,小米标签,从实际代码开发来看,感觉不是同一个团队,或者同一组人开发的。 这种情况下,他们的架构又使如何?

2011062610021614.png

2011062610022797.png

上面的结构以及结构内部的细节其实很多地方我都是不大苟同的,但是能做出来好东西就是值得大家学习的,所以我只把其中我认为最值得学习的一点拿出来说。

首先,widget,provider这些特殊模块分类建立单独的模块包即可,这里久不多说什么。

第二,通过观察,我们发现小米分享中每个应用都有common包,不仅有应用程序级别的common包,而且有应用程序内级别的common包。我想说的 是,android开发中随着项目开发的积累,确能提取到很多公用的方法、类、功能模块。各个项目之间如此,各个项目内部也是如此,所以针对项目类被各个 模块调用的方法,类也可以提取出相应的公用库。

那么这里有个问题,公用common包的内部包可能涉及到很多的内容,是否要分包分级呢,又如何分包分级?我觉得,这个因情况而已,一般来说移动开发,为 了减少包的大小,我们会控制common包的膨胀,往往common包仅仅包括一些最简洁最经典的东西,东西又很少的话就无需分包,但是如果贵公司开发成 百上千,每个项目都用到行为分析,意见反馈等公用模块,分一下包会更清楚一点。总而言之,分不分包无关紧要,尽量让你的代码结构清晰,思路了然就好。

5. 聚各家之长,集大家之成

上面粗略的分析之后,我们应该对android程序的架构有一个感觉,清晰而杂乱。我也没有去了看更多其他应用的结构,暂时就总结一下,得出一个我们自己的通用的工程结构。

假如公司名为tianxia,目前公司准备开发读书应用,交友应用,生活服务应用。

第一时间我们应该得出下面这种整个的架构(具体的app开发当然要分开):

2011062610544467.png

公司下开发3个应用reader,friend,life,其中common包为这三个应用共用,config,oauth为可选,view存放一些最通 用的自定义view,比如对话框,定制的列表等,如果你觉得有些view可能不会通用,最好把它放在应用程序类的common包下。

如果各位看过Android学习系列(6)--App模块化及工程扩展的话,对于这种多应用模式,应该存在android库共用情况,来解决资源替换,工程复用的问题。所以我又修改如下:

2011062612094744.png

其中BaseApplication做一些所有app都会用到的基础初始化或者配置。之后其他应用的application应该都继承此BaseApplication。

base是一个android库,也是一个完整的android工程,而common只是一个jar文件,当然你也可以根据需要作为android库来开发。其他主工程reader,friend,life应该引用base工程。

ad包存放公司自定义的一些软广告。

feedback包下存储一些用户反馈等通用功能模块。

其实,很多情况下,upgrade模块也可以添加到base工程下,制定统一的软件升级机制。

接下来我们以reader为例子,来详细完成它的工程结构的设计。

2011062612384522.png

其中,config包下的AppConfig.java存放应用程序的根配置,比如版本,目录配置等等。

module包下分为各个模块,blog为博客模块,bbs为论坛模块,person为整站个人信息模块,widget表示一种特殊功能模块。

common包下存放一些工具类,本应用程序的一些自定义View等等。

再结合之前所讲的内容,我们把整个串起来,完善一个reader的最后的架构如下(两外两个freind和life亦是类似如此):

2011062614353019.png

注意:1).功能模块和类型模块均可以划分,如果没有需要的话,模块的划分都可以省略。

2).activity和service这类组件划分,如果没有需要的话,组件的划分都可以省略。

3).所有的划分,如果没有需要的话,所有的划分都可以省略。

但是,但是,这种分类,我个人还是觉得层次清晰,架构明朗,值得参考的,当然其中很多细节我也没有仔考虑,如有不妥,还请发现者指出。

广州移乐信息有限公司(www.appnios.com)
广州移乐信息科技有限公司主营手机APP开发、移动应用开发、手机客户端开发、手机软件开发、APP、APP开发、APP开发公司、安桌开发、ios开发、APP托管、微信公众平台、APP推广、微信推广、APP定制、APP推广服务。欢迎拨打24小时咨询热线:020-87540245。

下一篇:没有了
0