编程算法基础3.3-测试驱动风格

cocos2d-x升级到3.0后变化不小,除了API的变化(主要是函数和类名称变化,以及使用了C++11的不少特性,function/bind, lamda, std::thread…),创建和编译工程也做了一些简化调整。本文主要讨论一下cocos2d-x3.0 在android平台开发的环境设置及工程创建编译流程。

1.   初始设置

除了2.x所需要的python,jdk, android sdk和ndk之外,还需要部署apache-ant。

1)      在path中设置好java环境变量:

JAVA_HOME=C:\jdk_xx.xx.xx

path加上%JAVA_HOME%\bin;

CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

2)      安装python 2.x版本。

3)      部署好android sdk, ndk, ant之后,运行...\cocos2d-x-3.0\ setup.py。提示输入ndk,sdk和ant目录,这里要注意,androidsdk设置为 …\adt-bundle-windows-x86\sdk,ndk目录设置为…\android-ndk,而ant目录要设置为…\apache-ant\bin,和前两者设置为根目录不同,要设置到bin目录,否则不生效,部署apk的时候会提示找不到ant。

4)      三个目录设置完成后自动关闭setup.py脚本。开发环境设置完毕。

2.   创建工程

2.x

cocos2d-x\tools\project-creator目录下,命令行执行python create_project.py –project ABC –package com.xyz.abc –language cpp创建工程

创建好的工程目录在cocos2d-x\projects,不能复制到其他路径,否则会有工程依赖问题。

3.0

cmd命令行进入自己选择的工程路径,执行cocos new MyGame -p com.your_company.mygame -l cpp

等待工程创建完毕。

3.0版本会把依赖的cocos2dx源文件复制到自己创建的工程目录,在cocos2d文件夹下。所以不存在拷贝工程引起的依赖问题。

3.   编译工程

创建完成后,cd进入工程目录,执行cocos compile –p android –j 4编译工程,cocos run –p android –j 4编译+部署apk+运行。

-p参数指定平台

-j参数指定使用多少个线程执行编译,官方的说法是可以加快编译速度。(可选项)

默认是debug编译,-m release可以指定编译为发布版。注意,release必须小写,写成Release无效。

更多参数参见官方文档:

https://github.com/cocos2d/cocos2d-console/issues/27

4.   部署apk

cocos deploy –p android部署编译好的apk,cocos run –p android可以编译好直接部署。

5.   清理工程

官方文档的cocos clean命令执行后提示Error:argument ‘clean‘ not found。

看一下cocos2dx的命令脚本,目录在cocos2d-x-3.0\tools\cocos2d-console。

查看bin目录下的cocos2d.ini:

#

#cocos2d command line tool configuration file

#

[plugins]

project_new.CCPluginNew

project_compile.CCPluginCompile

project_run.CCPluginRun

project_deploy.CCPluginDeploy

plugin_jscompile.CCPluginJSCompile

#plugin_version.CCPluginVersion

#plugin_install.CCPluginInstall

#plugin_update.CCPluginUpdate

#plugin_clean.CCPluginClean

#plugin_dist.CCPluginDist

# To adda new plugin add it‘s classname here

可以看到clean命令被注释掉了,只有new,compile, run, deploy可用,原因不明,那就不用命令清理工程了,改用手动清理吧,很简单,需要清理时把porj.android目录bin, obj, libs, assets, gen目录都删除就好了。可以写个脚本完成。

6.   开发环境

cocos2d-x2.x版本创建的工程可以直接使用vs2010编译。在windows上开发调试好后移植到android平台就可以了。升级到3.0版本后,由于使用了c++11,最低支持版本为vs2012。vs2012要求win7以上os,没法在xp系统上调试程序了。

既然如此,就不win32工程进行开发了,直接编译android平台,也省去了移植这一过程。

命令行编译部署android工程前面都介绍过了,下面需要的就是选择一个IDE方便开发,这里推荐codeblocks。创建工程步骤如下:

1)      在游戏工程根目录创建一个codeblocks空工程。

2)      添加Classes和cocos2d目录所有文件。

3)      预编译宏定义添加ANDROID 指定平台。

设置完毕,就可以进行开发了。需要编译时命令行执行cocos compile –p android –j 4就可以了。

根据命令行提示的错误代码行在codeblockside中查找相应源文件的对应行来定位bug。

添加新文件时可不要只在codeblocks里添加,还要在proj.android/jni/Android.mk中添加LOCAL_SRC_FILES。

另外,如果需要使用cocos2dx的extensions模块,也需要修改Android.mk文件。

修改如下:

LOCAL_C_INCLUDES:= $(LOCAL_PATH)/../../Classes \

$(LOCAL_PATH)/../../cocos2d\extensions

LOCAL_WHOLE_STATIC_LIBRARIES+= cocos_extension_static

$(call import-module,extensions)

添加其他模块与之类似。

7.   Log输出

cocos2d-x3.0使用新的打印函数log(2.x版本是CCLog),我们需要使用adb和logcat工具查看log输出(要在命令行里使用adb,记得配置adt-bundle-windows-x86\sdk\platform-tools到path)。

命令行执行adb logcat,如果android设备连接USB或者开着模拟器,就可以看到输出的log信息了,但信息太多,程序里打印的重要信息很快会被淹没,必须设置过滤条件。

可以看到cocos2d-x的log信息格式为 D/cocos2d-xdebug info(12358): xxxx。

D表示debug,表示打印优先级,优先级是下面的字符,顺序是从低到高:

V — 明细 (最低优先级)

D — 调试

I — 信息

W — 警告

E — 错误

F — 严重错误

S — 无记载 (最高优先级,没有什么会被记载)

logcat的使用详见http://blog.csdn.net/xyz_lmn/article/details/7004710

执行adb logcat cocos2d-xdebug info:D *:S应该就可以过滤掉其他信息了,但执行后发现什么信息都没有了,这是为什么?

另外创建了个android工程,调试后发现tag里有空格adb就无法正确过滤,问题清楚了,下面需要修改一下cocos2dx的log函数。

打开cocos2d\cocos\base\CCConsole.cpp,找到_log函数(log和CCLog都调用这个),里面

#ifCC_TARGET_PLATFORM == CC_PLATFORM_ANDROID

__android_log_print(ANDROID_LOG_DEBUG, "cocos2d-x debug info",  "%s", buf);

修改cocos2d-x debug info为cocos2d-x_debug_info。

重新编译工程,命令行执行adblogcat cocos2d-x_debug_info:D *:S,可以正常过滤了,只显示cocos2dx的log输出。

注意,如果修改的是工程路径下的cocos2d\cocos\base\CCConsole.cpp文件,下次创建新工程,log函数的tag还是cocos2d-x debuginfo,想一劳永逸的话,可以修改cocos2d-x-3.0\cocos\base\CCConsole.cpp。这样创建新工程就会把这个文件拷贝到新工程下,就不用每次都修改了。

编程算法基础3.3-测试驱动风格

时间: 2024-08-08 13:46:02

编程算法基础3.3-测试驱动风格的相关文章

03-03测试驱动风格_设计程序

设计程序 在编写图形界面软件的时候,经常会遇到处理两个矩形的关系. 如图[1]所示,矩形的交集指的是:两个矩形重叠区的矩形,当然也可能不存在(参看[2]).两个矩形的并集指的是:能包含这两个矩形的最小矩形,它一定是存在的. 本题目的要求就是:由用户输入两个矩形的坐标,程序输出它们的交集和并集矩形. 矩形坐标的输入格式是输入两个对角点坐标,注意,不保证是哪个对角,也不保证顺序(你可以体会一下,在桌面上拖动鼠标拉矩形,4个方向都可以的). 输入数据格式: x1,y1,x2,y2 x1,y1,x2,y

编程算法基础-一刀切法

1.5一刀切法 编程和编筐一样,处理边缘问题相同重要. 程序逻辑 開始 中间 结束 一刀切法上式 用空格或逗号分隔的串,提取为各个部分 abc ttt,kmd,uuu xyz 切分成每一部分. /* * "abc ttt,kmd,uuu xyz" 用逗号或者空格隔开字符串 分解为各个部分 */ package OneCut; public class SplitString { public static void main(String[] args) { // 一刀切(上式:事先补

编程算法基础-2.7作业-通讯编码-格式检查

作业 通信编码 如果通信的物理设备仅仅能表示1和0两种状态. 1和0状态都不能持续太久,否则物理设备会出现问题.因而人们设计出一种变通的方法: 多个0后人为地补入一个1 多个1后人为地补入一个0 当然,在解码的时候,要对应处理. 以下我们用串来模拟这个算法. 如果有须要通信的串: String s = "1010100100100001011110100010101010100001010101111"; 连续的3个0,后须要插入一个1 连续的3个1,后须要输入一个0 10101001

编程算法基础-3.2自底向上风格

3.2自底向上风格 自顶向下不是万能的 需求发生变化时,会很尴尬 变化是需求的本质特征 内部或外界的环境一旦发生小小的变化,就会造成很大的变动 个人---完全掌控----->简单的软件逻辑<-----完全计划的模式 小组协作---掌控变化---->庞大的软件规模---产生-->自适应变化<-----解决-----主流解决方案:面向对象 面向对象正是采用自底向上的设计风格 打印控制台表格2 实际开发中,使用混合风格,根据项目的要求而定 需求:不变,变 不变--->多种风格

编程算法基础-3.1自顶向下风格

第三讲 风格与模式 3.1自顶向下风格 复杂问题分解,直到小问题足够简单,能够掌控为止 是一种思考方式 把大的任务不断的分解为更小的子任务 还有一法宝:忽略,忽略细节 程序问题 制定框架--->逐步细化--->逐步精华--->分解为子问题 打印特定的形状 做一个二维数组的缓冲区 向缓冲区输出 缓冲区输出屏幕上 数组初始元素都是0 表格:横线.竖线. /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $

编程算法基础-2.3进制转换

2.3进制转换 使用int存一个整数时.内存中是用二进制存储的,当要显示的时候.用十进制显示. 随意进制间的转换 n进制转m进制 String s = "2001201102" 3进制转换为5进制 先转换为2进制.再转换为5进制 /* 随意进制间的转换 n进制转m进制 String s = "2001201102" 3进制转换为5进制 先转换为10进制,再转换为5进制 */ package BinaryTrans; public class NToM { publi

编程算法基础-暴力破解法

1.1   暴力破解法 鸡兔同笼 50头,120脚,鸡兔分别几仅仅? /*鸡兔同笼 * 鸡兔同笼,头50,脚120 * 鸡兔几何? */ package ChickRabbit; public class ChickRabbit { public static void main(String[] args){ int chick; int rabbit; int HEAD=50; int FEET=120; for(chick=0;chick<=HEAD;chick++){ rabbit=HE

机器学习实践 测试驱动的开发方法——互动出版网

这篇是计算机类的优质预售推荐>>>><机器学习实践 测试驱动的开发方法> 用测试驱动方法开发出可靠.稳定的机器学习算法. 编辑推荐 本书介绍在开发机器学习算法时如何运用测试驱动的方法,捕捉可能扰乱正常分析的错误.这本实践指南从测试驱动开发和机器学习的基本原理讲起,展示了如何将测试驱动开发运用于若干机器学习算法,包括朴素贝叶斯分类器和神经网络. 任何机器学习算法都有一些传统的测试方法,但它们通常都不会考虑编码中的人为错误.借助测试驱动的开发方法,你便不会像其他研究者那样盲

(转)Android高性能编程(1)--基础篇

关于专题     本专题将深入研究Android的高性能编程方面,其中涉及到的内容会有Android内存优化,算法优化,Android的界面优化,Android指令级优化,以及Android应用内存占用分析,还有一些其他有关高性能编程的知识.    随着技术的发展,智能手机硬件配置越来越高,可是它和现在的 PC 相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于 PC 的桌面应用程序.以上理由,足以需要开发人员更加专心去实现和优化你的代码了.选择合适的算