文档章节

Android开源项目分包方式学习(eoe、oschina、github)

你我青春时
 你我青春时
发布于 2014/05/06 15:00
字数 947
阅读 281
收藏 1

总感觉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,这个层里面针对每一个界面都单独地建立了文件夹,界面中的业务逻辑就大量地分布在这些文件夹中。我感觉,跟一个界面相关的业务逻辑直接集中在一个文件夹中,而不是分散在各个不同的包中,其实挺方便的。


文中涉及的开源项目

eoe android客户端

github Android客户端

oschina android 客户端


本文转载自:http://www.cnblogs.com/kissazi2/p/3516439.html

共有 人打赏支持
你我青春时
粉丝 1
博文 20
码字总数 2690
作品 0
武汉
后端工程师
开源 Android App 增量更新库 版本升级

开源 Android App 增量更新库 版本升级 经过几天的重构,我将之前写的一个Android 应用增量更新的示例程序重构为了一个开源库,现在已经push 到 GitHub 上,欢迎大家Watch、Star、Fork。 包含...

Cundong
2014/09/02
0
2
Android 开发者,如何提升自己的职场竞争力?

前言 该文章是笔者参加 Android 巴士线下交流会成都站 的手写讲稿虚拟场景,所以大家将就看一下。 开始 大家好,我是刘世麟,首先感谢安卓巴士为我们创造了这次奇妙的相遇。现场的氛围也让我...

南尘2251
2017/08/18
0
0
开源中国/android-app

OSChina Android 开源中国官方App客户端开源代码。 注意 master中不再放置源码,请切换到对应tag或branch查看 源码仅作学习,接口将进行限制,如需请求API接口应使用 openapi 历史分支 序号 ...

开源中国
2013/08/06
0
0
解决Android 应用方法数不能超过65K的问题

作为一名Android开发者,相信你对Android方法数不能超过65K的限制应该有所耳闻,随着应用程序功能不断的丰富,总有一天你会遇到一个异常: Conversion to Dalvik format failed:Unable toex...

恰同学少年
2015/08/03
0
0
github上的NB Android项目

最近想捣鼓捣鼓Android,下了Oschina的android client source,看得挺舒服的,写得很清晰,受益匪浅,想再深入了解下,当然是接着看优秀开源项目咯。google到CSDN上的“直接拿来用,最火的A...

pengzai
2013/05/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
25分钟前
0
0
麒麟AI首席科学家现世

8月31日,华为发布了新一代顶级人工智能手机芯片麒麟980,成为全球首款7nm工艺手机芯片,AI方面也实现飞跃,支持人脸识别、物体识别、物体检测、图像分割、智能翻译等。 虽然如今人人都在热议...

问题终结者
昨天
1
0
告警系统主脚本、告警系统配置文件、告警系统监控项目

告警系统主脚本 main.sh内容 #!/bin/bash#Written by aming.# 是否发送邮件的开关export send=1# 过滤ip地址export addr=`/sbin/ifconfig |grep -A1 "ens33: "|awk '/inet/ {pr...

芬野de博客
昨天
2
0
MySQL autocommit探究

-- sessionA:tx_isolation=REPEATABLE-READmysql> select connection_id();+-----------------+| connection_id() |+-----------------+| 28 |+-----------------+......

安小乐
昨天
7
0
c++多线程锁 Mutex  自动判断死锁

c++多线程锁可以使用absl::Mutex std::mutex这两种,下面是demo代码。 使用absl:Mutex的时候打印: [mutex.cc : 1338] RAW: Cycle: [mutex.cc : 1352] RAW: mutex@0x683b68 stack: @ 0x43856......

青黑
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部