Android开发之搜Ya项目----项目结构说明

项目
搜芽移动客户端
项目包结构,日志,编码说明
作者
曾金龙
时间
2014-10-13
说明
简要说明工程结构,使用的log4j日志系统和UTF-8编码

第一部分:解决工程乱码问题
在windows下面建立工程默认是采用GBK编码的。而一般互联网公司(迅雷,包括我知道的百度等)都是采用UTF-8编码的。所以,在windows环境下面打开我们的工程会出现乱码,我们的APP也是乱码。所以需要更改编码方式为UTF-8.具体步骤如下
右击项目(seller,ExpandTabView等都是如此),选择properties菜单,在弹出的对话框的第一个选项Resource,如下图:在Text file encoding 中,选择 UTF-8)
注明:我的是ubuntu系统,默认是UTF-8,windows的可能要从Other里面去选UTF-8,具体自己摸索,不难)。

至此,编码问题解决。以后工程都采用UTF-8进行开发。通用。

第二部分:日志系统
1)Android.util.Log
日志在我们这里有两部分组成。一部分是Android.util.Log,Android默认的,它可以将日志打到DDMS的logcat里面,供我们实时观察。这也是我们开发中最主要的日志方法。快捷定位问题。
2)Log4j.
Logcat的日志会被冲掉,对于有些深层次的逻辑问题,而不是编程问题的时候,一般互联网公司都会采用输出日志到文件系统再进一步发送到某个日志服务器。搜芽采用的是log4j日志输出系统,在项目/libs/可以看到有两个jar库是log4j的。
Log4J的初始化配置,在文件com.souya.seller.app包中的sellerApplication文件中的setupLog4j()方法中配置,具体看代码,这样在APP启动,日志系统就配置好了。
log4j的作用还不大,但先架起来,一个完整的APP需要它。后续复杂了就会用得上。观察几十兆甚至几百兆的日志对与定位非必现的复杂问题会经常碰到的。
关于log4j,网上也有资料可查。

第三部分:包结构
如下图所示,简单说明现有包的结构
seller:包含几个重要的Activity,后续的Activity尽量不要放在这里。
app:APP范围内的全局类。
Askbuy:用户求购
Askbuy.widget:用户求购的UI组件
base:Fragment和Activity的基础类
cache:图片缓存系统
clothManager:布匹管理
data: 数据,主要是和服务器打交道的数据处理。
Database:数据库相关,本地SQLite的。
exception:异常处理
hotsearch:热门搜索
misc:常量
module:模块。主要是用到第三方库或者我们后续的其他库,升级库等用到。
search:搜索相关,在ActionBar上进行搜索,并自动提示等功能。
Upload:上传
util:工具
widget:常用UI组件。

 
Q& A
1:这个包结构合理么?
答:不合理,后续会继续优化,但暂时先这么做,毕竟重构是建立在代码多的驱动下做才有意义。
2:为什么这么多包?
答:后续把买家卖家都用到的放到一块。对于如clothmanager等这种功能性页面,还是会保持一个功能页面一个包的设计,每个包不会超过10个文件,逻辑一目了然。

时间: 2024-12-31 03:47:19

Android开发之搜Ya项目----项目结构说明的相关文章

Android开发之搜Ya项目说明(3)

项目 搜芽移动客户端 ----seller,app,base三个包的简单说明 作者 曾金龙 Tel:18664312687 QQ :470910357@qq.com 时间 2014-10-14 说明 代码说明 第一部分 Seller包 1,启动页面 StartUpActivity.java 启动页面,搜芽的第一个页面.Android开发中需要在Manifest中设置程序的入口. 如下:         <activity              android:name="com.sou

Android开发之旅:android架构

引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWorld Android 开发之旅:HelloWorld项目的目录结构 我 们对android有了个大致的了解,知道如何搭建android的环境及简单地写一个HelloWorld程序,而且知道一个android项目包括哪 些文件夹和文件及相应的作用.本篇将站在顶级的高度--架构,来看android.我开篇就说了,这个系列适合0基础的人且我也是从0开始按照这个步骤来 学的,谈架构是不是有点螳臂挡车,自不量力呢?我觉得其实不然,如

Android开发之旅:应用程序基础及组件

--成功属于耐得住寂寞的人,接下来几篇将讲述Android应用程序的原理及术语,可能会比较枯燥.如果能够静下心来看,相信成功将属于你. 引言 为了后面的例子做准备,本篇及接下来几篇将介绍Android应用程序的原理及术语,这些也是作为一个Android的开发人员必须要了解,且深刻理解的东西.本篇的主题如下: 1.应用程序基础 2.应用程序组件 2.1.活动(Activities) 2.2.服务(Services) 2.3.广播接收者(Broadcast receivers) 2.4.内容提供者(

Android 开发之旅:又见Hello World!

--量变产生质变,如果你从第一篇一直看到了这篇,可以说这就是你的质变点之一. 回顾及展望 经过数篇对Android应用程序的原理的讲述,现在我们大概回顾一下. 首先我们利用Hello World程序介绍了一个Android应用程序的目录结构,包括src文件夹.gen文件夹.Android x文件夹.assets文件夹.AndroidMainifest.xml.default.properties: 接下来我们又站在架构的高度分析了一下Android系统的主要组成部分,包括Linux Kernel

Android 开发之dataBinding与ListView及事件_Android

2015年Google IO大会分布了DataBinding库,能够更快捷便利的实现MVVM结构模式.但是,通过对DataBinding的学习,其中踩过得坑,今天要在这里记录一下.对于DataBinding一些比较基础的使用,在这里就不在记录了,毕竟现在Google一下,出来很多的教程,而且,android developer官网中,也已经对其基本使用方法做了详细介绍,有英语基础的童鞋,还是去看比较官方的文章.如果英文基础不太好的,https://realm.io/cn/news/data-bi

Android 开发之dataBinding与ListView及事件

2015年Google IO大会分布了DataBinding库,能够更快捷便利的实现MVVM结构模式.但是,通过对DataBinding的学习,其中踩过得坑,今天要在这里记录一下.对于DataBinding一些比较基础的使用,在这里就不在记录了,毕竟现在Google一下,出来很多的教程,而且,android developer官网中,也已经对其基本使用方法做了详细介绍,有英语基础的童鞋,还是去看比较官方的文章.如果英文基础不太好的,https://realm.io/cn/news/data-bi

Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果_Android

BottomBar BottomBar是Github上的一个开源框架,因为从1.3.3开始不支持fragments了,要自己配置,弄了很久,不管是app的fragment还是V4 的程序总是总是闪退.于是就用这种方式实现了,效果还不错.github有详细说明,多余的就不说了. 这个roughike是这个项目的所有者(大神致敬). 我用的是Android studio开发,fragment全部导的V4的包(以为最开始就支持的是v4的,后面也支持了app.fragment). 首先是dependen

Android 开发之旅:view的几种布局方式及实践

引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是"Hello World!" 我们对Android应用程序运行原理及布局文件可谓有了比较深刻的认识和理解,并且用"Hello World!"程序来实践证明了.在继续深入Android开发之旅之前,有必要解决前两篇中没有介绍的遗留问题:View的几种布局显示方法,以后就不会在针对布局方面做过多的介绍.View的布局显示方式有下面几种:线

Android开发之旅: Intents和Intent Filters(实例部分)

引言 上篇我们介绍了Intents和Intent Filters的理论部分,主要是介绍了:activities.services.broadcast receivers三种组件的Intent机制两种Intent(显式和隐式)及它们如何去匹配目的组件.Intent对象包含哪些信息.Intent Filters的action & category & data. Intent的重要性,我不再着重介绍了,但我还是要说:Intent能够使应用程序突破沙盒与外界交流,者这使得Android的世界变得