Android开源项目分包方式学习(eoe、oschina、github)
总感觉Android中关于分包的文章很少,或者几乎可以说没有。但是合理地分包,又可以使整个项目模块化,减少包与包之间的依赖,让整个项目的框架更加清晰,更利于后续功能的拓展。
因为没有相关的文章,所以这里晒出三款开源项目的分包方式,供大家学习。
(一) eoe社区 Android 客户端
src
├ cn.eoe.app --存放程序全局性类的包
├ cn.eoe.app.adapter --存放适配器的实现类的包
├ cn.eoe.app.adapter.base --存放适配器基类的包
├ cn.eoe.app.biz --存放DAO类的包
├ cn.eoe.app.config --存放常量,配置和api接口等类的包
├ cn.eoe.app.db --关于sqlite操作相关的类的包
├ cn.eoe.app.db.biz --详细的增删改查类的包,暂时仅有一个类
├ cn.eoe.app.entity --实体类包
├ cn.eoe.app.entity.base --实体类基类包
├ cn.eoe.app.https --网络访问相关类的包
├ cn.eoe.app.indicator --导航相关的类包
├ cn.eoe.app.slidingmenu --滑动菜单相关类包
├ cn.eoe.app.ui --界面相关的包,activity的类
├ cn.eoe.app.ui.base --activity相关的基类包
├ cn.eoe.app.utils --工具类包
├ cn.eoe.app.view --Fragment相关类的包
├ cn.eoe.app.widget --自定义view组件包
├ com.google.zxing.camera --第三方定义,控制摄像头包
├ com.google.zxing.decoding -- 二维码图像解码包
├ com.google.zxing.view -- 自定义View,控制拍摄取景框和动画等
点评:config层是一个全局都可以访问到的配置层。另一个就是dao层,这层主要用来从json字符串中将数据提取出来。其他的也就是比较常见的adatper、ui等层。
(二) 开源中国社区 Android 客户端
src
├com.weibo.net — 新浪微博SDK源码包
├greendroid.widget — 快捷菜单栏组件(国外UI库GreenDroid)
├net.oschina.app — APP启动及管理包
├net.oschina.app.adapter — APP列表适配器包
├net.oschina.app.api — API访问包
├net.oschina.app.bean — APP实体包
├net.oschina.app.common — APP工具包
├net.oschina.app.ui — APP界面包
├net.oschina.app.widget — APP控件包
点评:开源中国的分包方式简单明了,它似乎将大量的业务逻辑放在了UI层,不过项目的业务逻辑不多的情况下,这倒也没有什么。Adatper层是UI层的数据源。Bean层中提供了各种实体类。oschina中没有数据库访问相关的包。
(三) github Android 客户端
由于我没有详细读过github的源代码,并且网上也没有关于github的Android客户端的分包的解析文章,因此下面github分包的解释可能有误。
├─com.github.mobile.accounts --账户相关类
├─com.github.mobile.core –业务层,实现整个客户端中的主要业务逻辑
│ ├─code
│ ├─commit
│ ├─gist
│ ├─issue
│ ├─ref
│ ├─repo
│ ├─search
│ └─user
├─com.github.mobile.persistence –数据持久化层
├─com.github.mobile.sync –同步信息层(不确定是不是这个作用)
├─com.github.mobile.ui –界面层
│ ├─code
│ ├─comment
│ ├─commit
│ ├─gist
│ ├─issue
│ ├─ref
│ ├─repo
│ ├─search
│ └─user
└─com.github.mobile.util –实用工具层
点评:github的开源客户端很明显地实现了UI和业务逻辑的分离。比较有趣的是,github项目中没有独立一个adapter层,而是直接放在了UI层。业务逻辑被大量地放在com.github.mobile.core,这个层里面针对每一个界面都单独地建立了文件夹,界面中的业务逻辑就大量地分布在这些文件夹中。我感觉,跟一个界面相关的业务逻辑直接集中在一个文件夹中,而不是分散在各个不同的包中,其实挺方便的。
文中涉及的开源项目
Android开源项目分包方式学习(eoe、oschina、github)的更多相关文章
- Android开源项目SlidingMenu本学习笔记(两)
我们已经出台SlidingMenu使用:Android开源项目SlidingMenu本学习笔记(一个),接下来再深入学习下.依据滑出项的Menu切换到相应的页面 文件夹结构: watermark/2/ ...
- Android开源项目SlidingMenu的学习笔记(一)
SlidingMenu是眼下在应用程序上非常流行的一种UI技术.能够实现一种比較炫的滑动效果,SlidingMenu是Git上托管的一个项目,开源免费的.SlidingMenu作为一个Library的 ...
- GitHub上史上最全的Android开源项目分类汇总 (转)
GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...
- Android 开源项目及其学习
Android 系统研究:http://blog.csdn.net/luoshengyang/article/details/8923485 Android 腾讯技术人员博客 http://hukai ...
- GitHub 优秀的 Android 开源项目(转)
今天查找资源时看到的一篇文章,总结了很多实用资源,十分感谢原作者分享. 转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介 ...
- GitHub 优秀的 Android 开源项目
转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...
- GitHub 优秀Android 开源项目
阅读目录 1.Xabber客户端 2.oschina客户端 3.手机安全管家 4.星座连萌 5.玲闹铃 6.魔乐盒 7.PWP日历 8.Apollo音乐播放器 9.夏普名片识别 10.高仿人人网 11 ...
- 【转】GitHub 优秀的 Android 开源项目
转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...
- GitHub优秀的Android 开源项目
GitHub上优秀Android开源项目 转载自 : http://my.eoe.cn/sisuer/archive/3348.html http://my.eoe.cn/sisuer/archive ...
随机推荐
- 第九十九天上课 PHP TP框架 数据库查询和增加
在Model文件夹下创建模型,文件命名规则 : 表名Model.class.php <?php namespace Home\Model; use Think\Model; class yong ...
- 怎么提高ArcSDE 写入地理数据库的效率
link: http://blog.csdn.net/linghe301/article/details/20900615 2014-03-14 09:20 2686人阅读 评论(6) 收藏 举报 ...
- Allegro学习(http://www.asmyword.com/forum.php?mod=forumdisplay&fid=86)
一.资源 1.网站推荐www.eda365.com,里面有很多有用的东西:当然还有官方代理商的网站http://www.pspice.com.cn/: 2.视频教程:有库源电气的视频教程,还有在www ...
- input输入子系统
一.什么是input输入子系统? 1.Linux系统支持的输入设备繁多,例如键盘.鼠标.触摸屏.手柄或者是一些输入设备像体感输入等等,Linux系统是如何管理如此之多的不同类型.不同原理.不同的输入信 ...
- HDU 3065 病毒侵袭持续中(AC自动机)
这题数据太水,一开始没有加上Get的方法也能AC..话说AC自动机中一定要注意加上Get的方法!(不然,同一个后缀的其他单词就没被算上了.) 代码如下: #include <stdio.h> ...
- spring中Bean的生命周期
初始化方法:在Bean实例初始化后自动执行的方法 销毁方法:在Bean实例销毁前执行的方法 <bean id="bm" class="springTest.Car& ...
- UIScrollViewDelegate
一.执行顺序:(scrollView加后面的)willBeginDragging // 将要开始拖拽,手指已经放在view上并准备拖动的那一刻 DidScroll ...
- 如何在MAC上使用SVN,简单几行命令搞定
如果你要使用SVN管理代码,如果不是迫不得已,还是看看git吧,但是SVN也要知道怎么用,原理是相似的. 首先,要准备的东西:svnX软件 https://pan.baidu.com/s/1mhEay ...
- Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案
我们在使用ListView异步加载图片的时候,在快速滑动或者网络不好的情况下,会出现图片错位.重复.闪烁等问题,其实这些问题总结起来就是一个问题,我们需要对这些问题进行ListView的优化. 比如L ...
- 持续获取可访问谷歌的hosts(已证实可用)
@echo off REM 欢迎圈我,在顶栏的"查找人员"处输入Felix Hsu即可 REM Patched by logicmd REM 准备工作,先清一下DNS缓存,再备份h ...