项目
搜芽移动客户端
项目包结构,日志,编码说明
作者
曾金龙
时间
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个文件,逻辑一目了然。