注:
1.罗列Android项目的分包规则
微盘使用分包规则
如下:


1).第一层com.sina.VDisk:com.sina(公司域名)+app(应用程序名称)。使用公司域名+应用程序名称。
2).第二层,各模块名称(包含实体模块)。若一个模块(主模块)下,还有子模块,那么,在主模块中定义对应的基类,如BaseActivity。VDiskClient是一个功能模块;VDiskServer是一个功能模块。
实体模块下定义相应的实体类,供全局调用。实体类的命名XXX+Info。
3).第三层,某一具体模块再分包,或者包含具体类。
网易新闻的分包规则
按照组件类型来划分,相同类型的组件放在同一个包下。比如,activity包下,存放的主要是Activity类型的类。




1).第一层,com.netease,使用公司域名。
2).第二层,分块,一块是newsreader,这一块下面的东西是网易新闻的内容。mobileanalysis,是估计是一个公用的包。
3).第三层,绿色部分,按照组件类型进行分包,activity,service,appwidget,db,bean这些包下存放对应的类型的类。
“往往activity相关的类如监听器,线程,适配器等非常多的类,这些不好直接丢在activity包下,而是直接写在相应的activity中以 匿名或者内部类形式定义,否则activity包和service包看上去会比较杂乱。”
集合上述分包规则优点的分包规则
适合多应用开发


reader,frind,life,这三个包,表示对应的应用。com.tianxia是第一层,用公司名称限定。
“其中common包为这三个应用共用,config,oauth为可选,view存放一些最通用的自定义view,比如对话框,定制的列表等”,common是从这三个应用中提取得到的,可以在这三个应用*享使用。
common是一个jar包。
考虑到多个应用会引用一个库工程(Adnroid Library),使用如下分包:


"
其中BaseApplication做一些所有app都会用到的基础初始化或者配置。之后其他应用的application应该都继承此BaseApplication。
base是一个android库,也是一个完整的android工程,而common只是一个jar文件,当然你也可以根据需要作为android库来开发。其他主工程reader,friend,life应该引用base工程。
"
在第三层,列出该项目中,你要划分的几部分,功能模块module;配置部分config;common部分,这里的common只是对该应用通用,存放该应用中常用的功能和类。
某个应用下面,按照模块划分,也就是第四层,按照功能模块划分:
如下,在module包下,划分了blog,bbs,person三个功能模块,widget是特殊功能模块,BaseActivity是该模块下通用的基类。


再细一层:
在某一个具体模块下,还可以按照组件类型进行分包(比如,按照activity,service这两大组件类型进行分包)。


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
最后总结:
对于开发一个应用来说,我会对网易新闻的分包规则做修改,然后使用。如下:
第一层,使用com+公司域名;
第二层是应用的名称。
第三层按照组件类型来划分,比如,Activity类型的放在activity包下;Serveice类型的放在service包下。然后,某个activity用到的Adapter,Listener作为该activity的内部类。
命名规则:实体类,则按照xxxInfo;activity,service,receiver组件,则按照xxxActivity,xxxService命名;
然后,该应用可以引用库工程(Android Library)。

如果是多个应用管理,开发,则使用上文中[集合上述分包规则优点的分包规则]来分包。
参考文章: