Windows平台cocos2d-x 3.0 android开发环境
cocos2d-x升级到3.0后变化不小,除了API的变化(主要是函数和类名称变化,以及使用了C++11的不少特性。function/bind, lamda, std::thread…),创建和编译project也做了一些简化调整。本文主要讨论一下cocos2d-x3.0 在android平台开发的环境设置及project创建编译流程。
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. 创建project
2.x
cocos2d-x\tools\project-creator文件夹下,命令行运行python create_project.py –project ABC –package com.xyz.abc –language cpp创建project
创建好的project文件夹在cocos2d-x\projects,不能拷贝到其它路径,否则会有project依赖问题。
3.0
cmd命令行进入自己选择的project路径,运行cocos new MyGame -p com.your_company.mygame -l cpp
等待project创建完毕。
3.0版本号会把依赖的cocos2dx源文件拷贝到自己创建的project文件夹,在cocos2d文件夹下。所以不存在拷贝project引起的依赖问题。
3. 编译project
创建完毕后,cd进入project文件夹。运行cocos compile –p android –j 4编译project,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. 清理project
官方文档的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可用,原因不明,那就不用命令清理project了,改用手动清理吧。非常easy,须要清理时把porj.android文件夹bin, obj, libs, assets, gen文件夹都删除就好了。能够写个脚本完毕。
6. 开发环境
cocos2d-x2.x版本号创建的project能够直接使用vs2010编译。
在windows上开发调试好后移植到android平台就能够了。升级到3.0版本号后,因为使用了c++11,最低支持版本号为vs2012。
vs2012要求win7以上os,没法在xp系统上调试程序了。
既然如此,就不win32project进行开发了,直接编译android平台。也省去了移植这一过程。
命令行编译部署androidproject前面都介绍过了,以下须要的就是选择一个IDE方便开发。这里推荐codeblocks。创建project过程例如以下:
1) 在游戏project根文件夹创建一个codeblocks空project。
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应该就能够过滤掉其它信息了,但运行后发现什么信息都没有了,这是为什么?
另外创建了个androidproject。调试后发现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。
又一次编译project,命令行运行adblogcat cocos2d-x_debug_info:D *:S,能够正常过滤了,仅仅显示cocos2dx的log输出。
注意,假设改动的是project路径下的cocos2d\cocos\base\CCConsole.cpp文件。下次创建新project。log函数的tag还是cocos2d-x debuginfo,想一劳永逸的话,能够改动cocos2d-x-3.0\cocos\base\CCConsole.cpp。
这样创建新project就会把这个文件拷贝到新project下,就不用每次都改动了。
最新文章
- SVG文件:从Illustrator导文件到Web
- iOS NSOperation 异步加载图片 封装NSOperation 代理更新
- Error : An error occurred while creating the WebJob schedule: Response status code does not indicate success: 409 (Conflict).
- MathType 常用快捷键
- jquery源码
- Java实现KMP算法
- 一行代码设置UITableView分割线的长度
- [LeetCode] Combinations [38]
- UIDatePicker在swift中的使用
- Asp.net core Identity + identity server + angular 学习笔记 (第三篇)
- Filter的使用(web作业)
- string赋值和操作
- leetcode — median-of-two-sorted-arrays
- SQL-8 找出所有员工当前(to_date='9999-01-01')具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示
- 《Redis设计与实现》学习笔记
- 【3】JVM-OutOfMemory异常重现
- Python使用base64编码的问题
- 56. Merge Intervals 57. Insert Interval *HARD*
- 苹果Mac OS X系统十三年视觉变化发展史
- zookeeper无法启动";Unable to load database on disk
热门文章
- Fiddler抓包工具手机添加代理后连不上网
- [Kubernetes]kubectl命令补全出错
- Anagrams(hash表)
- mysql.bat
- 高清(200万像素)多灯红外防水枪型网络摄像机 DH-IPC-HFW5200-IRA
- how to read openstack code: action extension
- http 连接失败重连机制
- Meteor集合
- Manage, Administrate and Monitor GlassFish v3 from Java code usingAMX &;amp; JMX
- 【Facebook的UI开发框架React入门之八】Image的使用简单介绍(iOS平台)-goodmao