cocos2d-x3.0教程 windows环境
一、环境依赖配置
1. 配置 JDK
JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
本人的系统是 Win7 64 位版,但安装的是 JDK7 Windows X86 版。假设安装目录为 C:\Program Files (x86)\Java\jdk1.7.0_21 ,当然也可以安装在其他位置。
设置环境变量:
JAVA_HOME:C:\Program Files (x86)\Java\jdk1.7.0_21CLASSPATH:.;%JAVA_HOME%\lib;Path:增加%JAVA_HOME%\bin;
本文假设你知道如何设置环境变量,若不清楚,请使用搜索引擎查找相关资料。设置完成后,打开 cmd,输入 java -version。若出现以下提示,则表明环境变量设置成功:
C:\Users\arlin>java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) Client VM (build 23.21-b01, mixed mode, sharing)
2. 下载 Android SDK
Google 为 Android 开发者提供了 ADT(Android Developer Tools),其中包含了 SDK 和 Eclipse。 下载地址:http://developer.android.com/sdk/index.html
可以选择 32 位或 64 位版本,这里选择 32 位版,并将其解压到一个目录,例如 d:\adt-bundle-windows-x86\ ,目录结构如下:
--<adt-bundle-windows-x86>
--<eclipse>
--<sdk>
--SDK Manager.exe
3. 下载 Android NDK
下载地址:http://developer.android.com/tools/sdk/ndk/index.html
同样有 32 位和 64 位版可选,这里选择 32 位版,并将其解压到 adt 同目录下。此时 adt 的目录结构如下:
--<adt-bundle-windows-x86>
--<eclipse>
--<sdk>
--<android-ndk-r8e>
--SDK Manager.exe
4. 下载 ANT
ANT 用于自动构建 Android 程序。 下载地址:http://ant.apache.org/bindownload.cgi
这里选择 apache-ant-1.9.3-bin.zip ,并解压到 adt 目录下。此时 adt 的目录结构如下:
--<adt-bundle-windows-x86>
--<eclipse>
--<sdk>
--<android-ndk-r8e>
--<apache-ant-1.9.3>
--SDK Manager.exe
5. 下载 Python
原来 cocos2dx 在不同平台下需要使用不同的脚本来创建和构建工程,3.0 版本以后统一使用 Python。因此,Windows 环境下需要安装 Python 环境。 下载地址:https://www.python.org/ftp/python/2.7.3/python-2.7.3.msi
曾尝试下载最新版本,在使用 setup.py 时发现存在语法错误,所以建议使用 2.7.3 版本,亲测该版本没有问题。
配置环境变量:最新版本可以自动添加到 path 环境变量中,但 2.7.3 版本不行,需要手动设置。假设 Python 安装在 d:\Python27\ ,将该路径添加到 path 环境变量中。
当在 cmd 下输入 python ,出现以下字样,则说明环境变量设置正确:
C:\Users\arlin>python
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
二、cocos2d-x 下载与配置
1. 下载 cocos2d-x
目前最新版本是 3.0RC,下载地址:http://cocostudio.download.appget.cn/Cocos2D-X/3.0RC0/cocos2d-x-3.0rc0.zip
下载完成后,将其解压到指定位置,例如 f:\cocos2dx\cocos2d-x-3.0rc0\ 。
2. 设置环境变量
cc 需要以下几个环境变量,用于后续的新建工程、构建工程等操作:
COCOS_CONSOLE_ROOT:cocos 控制台路径,用于新建、构建、发行工程。NDK_ROOT:NDK 根目录。ANDROID_SDK_ROOT:SDK 根目录。ANT_ROOT:ANT 根目录。
这几个环境变量可以通过 cocos2d-x 根目录下的 setup.py 进行配置。启动 cmd,运行 setup.py:
F:\cocos2dx\cocos2d-x-3.0rc0>setup.py
此时脚本会要求输入 NDK、SDK、ANT 的路径,根据之前的解压路径输入即可。整个命令过程如下:
Setting up cocos2d-x...
-> Adding COCOS2D_CONSOLE_ROOT environment variable... OK
-> Added: COCOS_CONSOLE_ROOT = F:\cocos2dx\cocos2d-x-3.0rc0\tools/cocos2d-console/bin
-> Looking for NDK_ROOT envrironment variable... NOT FOUND
Please enter its path (or press Enter to skip): d:\adt-bundle-windows-x86\android-ndk-r8e
ADDED
-- Added: NDK_ROOT = d:\adt-bundle-windows-x86\android-ndk-r8e
-> Looking for ANDROID_SDK_ROOT envrironment variable... NOT FOUND
Please enter its path (or press Enter to skip): D:\adt-bundle-windows-x86\sdk
ADDED
-> Added: ANDROID_SDK_ROOT = D:\adt-bundle-windows-x86\sdk
-> Looking for ANT_ROOT envrironment variable... NOT FOUND
Please enter its path (or press Enter to skip): d:\adt-bundle-windows-x86\apache-ant-1.9.3\bin
ADDED
-> Added: ANT_ROOT = d:\adt-bundle-windows-x86\apache-ant-1.9.3\bin
Set up successfull:
COCOS_CONSOLE_ROOT was added into registry
NDK_ROOT was added into registry
ANDROID_SDK_ROOT was added into registry
ANT_ROOT was added into registry
Please restart the terminal or restart computer to make added system variables take effect
命令最后提示重启终端或者重启系统,以使这些环境变量生效。一般关闭 cmd 和资源浏览器即可。如果后续遇到环境变量找不到的错误,可直接重启系统尝试。
要测试环境变量是否生效,重新打开 cmd,输入以下命令查看,正常输出如下:
F:\cocos2dx\cocos2d-x-3.0rc0>set NDK_ROOT
NDK_ROOT=d:\adt-bundle-windows-x86\android-ndk-r8e
F:\cocos2dx\cocos2d-x-3.0rc0>set ANT_ROOT
ANT_ROOT=d:\adt-bundle-windows-x86\apache-ant-1.9.3\bin
F:\cocos2dx\cocos2d-x-3.0rc0>set ANDROID_SDK_ROOT
ANDROID_SDK_ROOT=D:\adt-bundle-windows-x86\sdk
F:\cocos2dx\cocos2d-x-3.0rc0>set COCOS_CONSOLE_ROOT
COCOS_CONSOLE_ROOT=F:\cocos2dx\cocos2d-x-3.0rc0\tools/cocos2d-console/bin
三、新建和构建工程
1. 新建工程
使用 tools\cocos2d-console 工具来新建工程,该工具提供了以下几个功能:
new:创建一个新的工程。compile:编译当前工程,生成二进制文件,个人认为写为build更合适。deploy:发布程序到一个平台。run:编译、发布并运行程序。
目前只需要使用 new 命令,查看 new 命令提供的参数,在 cmd 中输入:
cocos new --help
得到以下帮助信息:
usage: cocos new [-h] [-p PACKAGE_NAME] -l {cpp,lua,js} [-d DIRECTORY] [-t TEMPLATE_NAME] [--no-native] [PROJECT_NAME]
创建一个新工程
必要参数:
PROJECT_NAME 工程名
可选参数:
-h, --help 显示帮助信息
-p PACKAGE_NAME, --package PACKAGE_NAME
设置包名,如 com.colin.mbgame
-l {cpp,lua,js}, --language {cpp,lua,js}
使用的主要语言,可以是:[cpp | lua | js]
-d DIRECTORY, --directory DIRECTORY
工程所在的目录
-t TEMPLATE_NAME, --template TEMPLATE_NAME
要创建的工程模板名
lua/js 工程参数:
--no-native No native support.
现在在 cmd 中输入以下命令:
F:\cocos2dx>cocos new mygame1 -p com.colin.mbgame -l cpp -d f:\cocos2dx\mbgame
得到以下输出:
F:\cocos2dx>python F:\cocos2dx\cocos2d-x-3.0rc0\tools\cocos2d-console\bin\/cocos.py new mygame1 -p com.colin.mbgame -l cpp -d f:\cocos2dx\mbgame
Runing command: new
> Copy template into f:\cocos2dx\mbgame\mygame1
> Copying cocos2d-x files...
> Rename project name from 'HelloCpp' to 'mygame1'
> Replace the project name from 'HelloCpp' to 'mygame1'
> Replace the project package name from 'org.cocos2dx.hellocpp' to 'com.colin.mbgame'
这表明已经成功创建一个工程,工程目录位于 f:\cocos2dx\mbgame\ ,目录结构如下:
--<mygame1>
--<Classes>
--<cocos2d>
--<proj.android>
--<proj.ios_mac>
--<proj.linux>
--<proj.win32>
--<Resources>
--.cocos-project.json
--CMakeLists.txt
可以看到,各种平台下的工程都已创建,同时 cocos2d 整个框架也被拷贝过来,其优缺点因人而异。
2. 构建 Android 工程
同样使用 cocos2d-console 工具,这里使用 compile 命令。在 cmd 中输入以下命令查看帮助:
f:\cocos2dx\mbgame\mygame1>cocos compile --help
得到以下帮助信息:
usage: cocos compile [-h] [-s SRC_DIR] [-q] [-p PLATFORM] [-m MODE] [-j JOBS] [--ap ANDROID_PLATFORM] [--source-map]
把当前工程编译为二进制
可选参数:
-h, --help 显示帮助信息
-s SRC_DIR, --src SRC_DIR
工程根目录,比如上面应该是 f:\cocos2dx\mbgame\mygame1
如果不设,就为当前目录(cmd 定位到的那个目录)
-q, --quiet less output
-p PLATFORM, --platform PLATFORM
选择一个平台 android|ios|mac|web|win32|linux
-m MODE, --mode MODE
编译模式 debug|release, 默认为 debug.
-j JOBS, --jobs JOBS
并行编译,如果你有 4 核,可以设为 4。
Android Options:
--ap ANDROID_PLATFORM
指定 SDK 版本?没试过,不敢枉下定论,保留英文:
parameter for android-update.Without the parameter, the
script just build dynamic library for project. Valid
android-platform are:[10|11|12|13|14|15|16|17|18|19]
Web Options:
--source-map Enable source-map
现在在 cmd 中输入以下命令:
F:\cocos2dx\mbgame\mygame1>cocos compile -p android -j 4
这表示要编译当前目录下的 Android 工程,同时可以有 4 个编译任务,4 核机器将满负荷运行。如无意外,应该可以看到编译开始,最后若看到以下内容,则说明编译成功:
BUILD SUCCESSFUL
Total time: 7 seconds
Move apk to F:\cocos2dx\mbgame\mygame1\bin\debug\android
build succeeded.
到 f:\cocos2dx\mbgame\mygame1\proj.android\bin\ 目录下,可以看到 mygame1-debug.apk ,说明构建完成。
将其安装到手机上运行,感觉启动速度似乎快了很多,不知是否为心理作用。
四、在 Eclipse 下运行程序
还记得之前下载的 adt 中包含了 Eclipse,现在将工程导入到 Eclipse 中运行。
1. 启动 Eclipse
到 d:\adt-bundle-windows-x86\eclipse 目录下找到 eclipse.exe 并启动。第一次启动会提示设置工作区,可根据需要设置,这里为了演示使用默认设置。
2. 检查 SDK 和 NDK 路径
选择 Windows/Preferences 菜单项,打开选项对话框。
- 选择
Android结点,查看SDK Location是否正确,这里为F:\software\adt-bundle-windows-x86-20131030\sdk,若没有值,手动将 SDK 的根目录设置进去。 - 接着选择
Android/NDK结点,在NDK Location输入d:\adt-bundle-windows-x86\android-ndk-r8e。
3. 导入工程
选择 file/import ,打开导入对话框。
- 选择
Android/Existing Android Code Into Workspace,然后点击Next。 - 第一步先导入
libcocos2dx:在Root Directory输入F:\cocos2dx\mbgame\mygame1\cocos2d\cocos\2d\platform\android\java,此时会列出libcocos2dx工程,点击finish导入该工程。 - 第二步导入我们的工程:在
Root Directory输入F:\cocos2dx\mbgame\mygame1\proj.android,此时会列出mygame1工程,点击finish导入该工程。
最后连接手机,选择运行或调试即可运行程序。
4. 导入工程遇到的问题及解决方法
- 未导入
libcocos2dx:只导入mygame1时不会有编译错误,但运行时会出现ClassNotFound异常,提示找不到org/cocos2dx/lib/Cocos2dxHelper类。该问题困扰了很久,后来在论坛看到相关帖子才解决,希望官方后续能提供详细文档。 Build target设置问题:由于 adt 只包含了android4.4 (api-19)的版本,默认使用该版本。自己拷贝了几个更低的版本,并将Build target设置为android2.3 (api-9),运行程序时会提示以下错误:Unable to execute dex: java.nio.BufferOverflowException后来在网上查询发现是 Android SDK Build tools 的 BUG,将其升级到
19.0.3后问题解决:打开 SDK Manager,找到 19.0.3 的 Android SDK Build Tools 并安装。