(一) 统一开发环境: strucEclipse 4
(二) 生成APK配置: createBuildxml_ByCoco 6
(三) 标准目录构建: createFolder 6
(四) 生成selector: searchSelect 8
(五) 生成列表功能模块: createCode_ListView 9
(六) 更新Activity: refreshActicity 13
(七) 检测项目并生成报告: createReport 14
(八) 生成所有APK: createAPK 15
(九) 生成正式版APK: createAPK_PRO 15
(十) 生成测试版APK: createAPK_DEV 16
(十一) 切换成测试代码: code2DEV 16
(十二) 切换成正式代码: code2PRO 16
(十三) 下载和配置build.properties 16
(十四) 命名规范 17
(十五) 错误列表和解决方法 17
COCOBuild的功能是项目构建,采用ant实现,.其核心文件为Cocobuild.xml和Cocobuild_apk.xml. 所有任务均可单独执行.
n Cocobuild.xml功能如下:
n Cocobuild_apk.xml功能如下:
使用方法:
n 在Eclipse中,右键点击Cocobuild.xml或Cocobuild_apk.xml,选择Run As
n 选择第一个Ant build将会执行所有任务
n 选择第二个Ant build可自己勾选要执行的任务.
下文的一到七功能位于Cocobuild.xml中.八到十二功能位于Cocobuild_apk.xml中.(要先执行Cocobuild.xml的createBuildxml_ByCoco任务.)
所有任务详解
(一)统一开发环境:
strucEclipse
n 作用
1. 配置Eclipse开发环境.
2. 此任务/target保证团队代码统一性,不同开发人员格式化后的代码依然会保持一致,不会对提交CVS,SVN等造成影响. 对代码质量也有一定的优化.
n 功能细节
ü 统一团队JAVA代码风格 缩进,换行,每行长度,XML样式,变量排序,方法排序等
ü 统一团队清理规范 移除无用变量,移除无用方法移除无用import,移除无用的强转
ü 统一团队注解规范 增加必要的注解@override,@deprecated,序列化
ü 统一团队快捷键 优化了合并多个Eclipse快捷键,对原本的快捷键使用无影响
ü 代码的优化 会自动对for循环,迭代器等代码做优化
ü 统一团队注释风格和内容 类注释, 方法注释,变量注释未启用
n 使用方法
1. 此任务/target运行完毕后,重启Eclipse自动生效.
2. 在编辑JAVA类时,选择菜单栏的Source,点击Clean Up会出现COCOFrame_cleanup选项.直接点击next或者finish即可完成格式化代码,清空无用的变量,清空无用的方法,优化部分代码的效果.
3. 为类增加”文档注释/双星号注释”时,自动添加公司信息,版本信,作者等内容.
4. 可以在build.properties的name_company属性修改公司名称.
5. 在XML和JAVA文件中按Ctrl+Shift+F格式化效果将更加美观.
n 部分功能截图效果
所有开发人员在类前,增加”文档注释/双星号注释”时会自动增加以下内容.此处”XX有限公司”可以在build.properties的name_company属性修改.
XML格式化后风格
(二)生成APK配置:
createBuildxml_ByCoco
n 作用
1. 根据当前项目环境,生成buildapk.xml.
2. Cocobuild_apk.xml.打包APK依赖于buildapk.xml.
n 部分功能截图效果
(三)标准目录构建: createFolder
n 作用
1. 酌情使用,为项目生成标准化目录及标准化文件.如dimens.xml,drawable-xxhdpi,Menu Folder.
2. 使用ADT创建项目时,自动创建的文件夹及文件也许不能满足常用的需求,需要在开发过程中手工创建一些标准目录及文件. 这个任务可以解决此问题.
3. 对Android项目结构不了解,不清楚什么时候该创建什么样的文件夹/文件.
4. 如果文件或文件夹已存在,不会再次生成或修改.
n 功能细节
ü 生成menu
ü 生成menu.xml 菜单文件,菜单声明.
ü 生成styles.xml 标准化styles样例,统一样式文件
ü 生成dimens.xml 标准化dimens样例,统一尺寸文件
ü 生成arrays.xml 标准化arrays样例,数组声明
ü 生成ids.xml 标准化ids样例,固定资源ID,做公用组件时常用.
ü 生成public.xml 标准化public样例,固定资源声明,做公用组件时常用,
ü 生成drawable-ldpi 原则上120dp QVGA 240x320
ü 生成drawable-mdpi 原则上160dp HVGA 320x480
ü 生成drawable-hdpi 原则上240dp WVGA FWVGA 480x800 480x854
ü 生成drawable-xhdpi 原则上320dp
ü 生成drawable-xxhdpi 原则上480dp
ü 生成drawable-nodpi 无分辨率要求的. 如.9, xml定义的drawable资源.
ü 生成tvdip 适合Android智能电视的, 关闭状态
ü 生成values
ü 生成values-v11 android 3.0 +
ü 生成values-v14 android 4.0 +
ü 生成values-zh-rCN 中文(中国)
ü 生成values-zh-rTW 中文(台湾)
ü 生成values-en 英文
n 部分功能截图效果
(四)生成selector: searchSelect
n 作用
ü 所有Drawable文件夹中的以_f结尾的图片,会自动生成对应的selector点击文件.
ü 如drawble中含有BtnLogin.png和BtnLogin_f.png,将会在drawable-nodpi下生成select_BtnLogin.xml
ü 在UED制图时遵循此标准,则开发人员可直接运行此任务来更新selector.
n 部分功能截图效果
(五)生成列表功能模块:
createCode_ListView
n 作用
生成ListView样式的功能模块,包括Activity和布局.
此功能需要四步操作.
1. 在项目中导入Cocoframe.jar
2. 定义一个Bean继承自fay.frame.tools.Bean
3. 在build.properties的beanArray属性添加Bean
4. 右键CocoBuild.xml-->createCode_ListView-->生成
刷新项目,在src/cocobuild中即可看到生成的类.res/layout中可看到生成的布局文件.
n 功能细节
1. Bean必须继承自fay.frame.tools.Bean
2. 只有在build.properties的beanArray属性中注册的Bean才会生成.
3. 支持多个Bean一起注册/生成.多个之间用;隔开.举例如下:beanArray=com.test.bean.UserBean;com.test.bean.PhoneBean;
4. Bean的属性支持注解定义类型. 如iconHead属性为用户头像, 则定义如下
5.
6. 默认为”TextView”,注解目前支持ImageView这一种最常用的类型.其他类型陆续添加中.
7. 可以直接点”编辑”输入值.”http:\\www.test.com\head.png”或者本地图片”sdcard/myfolder/head.png”都可直接显示头像. 其他更为便捷的功能参考COCOFrame的API.
8. 对应一个Bean会生成的文件有:ListActivity, Adapter, AddActivity, EditActivity, ShowActivity及其依赖的布局文件.
9. 生成的ListView具有搜索,数据本地缓存,下拉刷新,图片缓存,图片压缩,网络图片,SD卡图片,ListView添加Holder,ConvetView等功能.
10. 为了方便查看生成效果,ListView默认使用的本地数据. 如果想使用网络数据,把主Activity onRefresh()方法中的getDataFromDB()替换为getDataFromServer(), 并把url替换为接口地址即可.
n 实例/截图说明
假如在项目中有用户列表功能,用来展示用户姓名,生日,年龄,头像等信息,首次采用CocoBuild.xml生成详细步骤如下:
1. 在项目中导入Cocoframe.jar
2. 创建用户Bean位于com.example.buildtest.bean.BeanPerson并继承自fay.frame.tools.Bean,代码截图如下:
3.在build.properties中beanArray=com.example.buildtest.bean.BeanPerson
4.选择createCode_ListView任务,并执行
5.执行过程
6.执行完毕后,刷新项目,下图红圈内即为生成的代码
执行完毕后,刷新项目,下图即为生成的布局
8.右键点击项目,运行,真机效果:
(六)更新Activity: refreshActicity
n 作用
更新Activty的相关内容.包括在1.Androidmanifest.xml中注册
2.创建layout 3.更新布局中的控件至Activity中.
n 功能细节
ü 把未在AndroidManifest.xml中注册的Activity注册.
ü 如果Activity没有布局文件,则生成.
举例:存在一个LoginActivity,如果在layout中不存在activity_login.xml则会自动生成此文件. (即LoginActivity对应的布局文件必须为小写的activity_login.xml. 否则会生成.具体命名规则请参考下文COCO-Android命名规范)
ü 如果Activity对应的布局文件中,有ID未在Activity中注册,则自动注册.
举例:存在一个LoginActivity和其布局文件activity_login.xml. 在xml中存在一个ID为btn_login的Button. 如果此Button未在LoginActivity中初始化,执行本任务后,会在LoginActivity中自动添加以下代码:
(七)检测项目并生成报告: createReport
ü 生成项目检测报告,此功能基于Android的lint功能.
ü 执行此任务后,将在COCOBuild目录下生成”项目检测报告”文件夹.
ü 项目报告中关键信息已翻译为简体中文.(因为墙的问题,翻译功能暂时关闭)
检测报告截图
(八)生成所有APK: createAPK
n 任务准备
1. 使用此功能前,请先运行Cocobuild.xml的createBuildxml_ByCoco任务.
2. 把user目录的key替换为你的key.
3. 修改key.properties的key.alias和password属性跟你的key对应.
n 功能细节
ü 此任务调用createAPK_PRO和createAPK_DEV,生成正式版和测试版APK.
ü 生成的APK在user目录下
ü APK已签名
ü 相比IDE生成的APK,体积更小,性能更好.(编译期对class文件的优化)
(九)生成正式版APK: createAPK_PRO
(十)生成测试版APK: createAPK_DEV
生成测试版APK
(十一)切换成测试代码: code2DEV
在代码中,可使用”#DEV”,”XDEV”来标注测试代码. 使用”#PRO” “XPRO”来标注正式代码.
可在build.property中添加自定义标签(此功能暂时关闭)
此任务执行后,切换代码为测试版本,如下图所示:
(十二)切换成正式代码: code2PRO
切换代码为正式版本
(十三)下载和配置build.properties
1. 从http://blog.csdn.net/landehuxi下载COCOBuild.rar,并解压到项目根目录.
2. 配置好build.properties即可使用.
属性 |
作用于 |
值 |
beanArray |
功能五生成列表功能模块:createCode_ListView |
com.example.TestBean 多个值用;隔开. TestBean必须继承自Bean |
name_company |
功能一统一开发环境:strucEclipse |
XXX有限责任公司 |
path_lib |
所有功能 |
项目的lib目录 |
sdk.dir |
所有功能 |
Android SDK路径. D:\android\sdk |
(十四)命名规范
如果不遵循此规范,某些任务会无法执行.
1. 所有Activity命名样式为TestActivity. 以Activity.结尾.
2. TestActivity对应的布局名称为activity_test.xml
3. test.png如果有点击效果,则其点击效果图命名为test_f.png
4. 布局中id命名对应关系为
TextView |
txt_test |
Button |
btn_test |
ImageView |
img_test |
ListView |
list_test |
所有Layout |
layout_test |
(十五) 错误列表和解决方法
1. 错误: JDK version latest或者类似JDK版本的问题
解决: 请在Cocobuild.xml第375行插入:executable="你的路径/jdk1.7.0/bin/javac.exe"
2. 错误: Execute failed: java.io.IOException: Cannot run program "...zipalign.exe"
解决: 把android.tools.dir的值设置为包含zipalign.exe的文件夹
3. 直接用命令行运行build文件,则需额外配置Cocobuild.xml>refreshActicity_mainfest>resourcecontains>resource属性为
"你的项目地址//AndroidManifest.xml"
4. 如果ant的java命令报class version错误,是因为你的ant和Android的jre版本不一致.设置项目的java compiler和ant一致,clean项目,重新运行即可.