声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级后的cocos2d-x有了一些变化,目前的博文还没有关于Cocos2d-x 2.2.1最新版搭建Android交叉编译环境组建的说明,所以我这几天研究了一下,现在将具体的搭建方法分享出来,也给自己学习Cocos2d-x做个笔记。
参考博文:
http://www.cnblogs.com/lhming/archive/2012/06/27/2566460.html
http://www.cnblogs.com/lhming/archive/2012/06/27/2566467.html
http://www.douban.com/note/229610750/
http://www.cnblogs.com/dekins/archive/2012/08/22/2650131.html
本文地址:
http://blog.csdn.net/sttyytw/article/details/17005263
如果转载,请注明出处!
本文搭建环境
系统:win7 64位 旗舰版 原版
软件:只装了系统的半裸机
预备下载的软件(为了方便,软件安装包请放在一个文件夹下)
请大家先行下载,但不要安装,一步一步的来
1、cocos2d-x2.2.1 2013年11月19日更新
cocos2d-x游戏引擎开发环境,大家都懂的
下载地址:(这个不用说了吧,搭建cocos2d-x的平台会不知道哪里下代码?好吧,还是贴上)
http://www.cocos2d-x.org/download
2、VisualStudio 2012
cocos2d-x需要的IDE编译环境,网上随便下,这里提供一个下载地址
下载地址:http://pan.baidu.com/share/link?shareid=90168&uk=2769186556
密钥:YKCW6-BPFPF-BT8C9-7DCTH-QXGWC
3、python
cocos2d-x2.0版本以后用python脚本来创建工程,所以需要python环境
下载地址:http://www.python.org/download/
注意:请下载python2.7.6 64位版本,不要下3.3的版本
以上是组建cocos2d-x编译环境所需要的软件,接下来是android交叉编译所需要的软件
4、java
java环境是必须的,这个在官网上下载即可,注意要选择64位版本
下载地址:http://www.java.com/zh_CN/download/manual.jsp
5、Android SDK
这个是android交叉编译必须的IDE环境,内含Eclipse
下载地址:http://developer.android.com/sdk/index.html
6、Android NDK
android交叉编译时,对C/C++代码的解释编译工具
下载地址:http://developer.android.com/tools/sdk/ndk/index.html
7、cygwin
对cocos2d-x本地C/C++代码的解释编译工具
下载地址:http://cygwin.com/install.html
这是个文本编辑软件,方便我们对之后的sh文件进行编辑
下载地址:http://www.pc6.com/softview/SoftView_36775.html
注意:sh等linux文件在用windows记事本打开时,输入的回车格式与linux回车格式不同,会造成错误。
这个软件是推荐大家使用的,大家可以自行选择
至此我们所需要的软件都已经准备完毕,接下来可以开始正式搭建环境了
1、安装VisualStudio2012
对VS2012_ULT_chs.iso文件进行解压,安装,对安装程序一路狂点。。。。。
像这种编程环境最好装在系统盘内,免得之后出各种莫名其妙的错误。等了一段时间,终于安装完毕。
2、用VisualStudio组建cocos2d-x的Windows编译环境
将下载好的cocos2d-x-2.2.1放在英文路径下,注意,英文路径不要有空格
例如:我的目录配置D:\study\cocos2d-x\cocos2d-x-2.2.1
在cocos2d-x-2.2.1目录下找到Visual Studio2012的sln文件,打开
等了将近10分钟,终于编译好了,我们来尝尝鲜,试着运行HelloCpp,看到那个熟悉的HelloWorld界面
在HelloCpp项目上面点击右键,然后选择调试->启动新实例
接着程序开始自动编译了,运气好的话应该可以看到牛X的HelloWorld的界面了
在这里我遇到了一个小问题,由于是新系统,还没有安装显卡驱动,所以编译时提示OpenGL的版本太低,这时候只需要用驱动精灵或是类似的驱动软件更新一下自己的显卡驱动就没有问题了。
3、创建自己的HelloWorld工程
接下来就要创建自己的Cocos2d-x HelloWorld项目,这是所有游戏编写的开端。好的,这时我们就要用到python环境了。安装我们已经下载好的python-2.7.6.amd64,选择默认路径。
安装完毕,我们接下来使用python命令创建自己的cocos2d-x工程。
首先需要设置python的系统环境,由于刚才是默认安装,所以python的安装路径为C:\Python27\,大家可以手动在开始->计算机(在上面点右键)->属性->高级系统设置->环境变量中设置path路径,添加python的安装目录,不过我个人比较喜欢用cmd的wmic命令改变环境变量。(顺便提一句,大家可以用一个批处理将本文所有涉及环境变量的设置都用wmic命令写入。)
好了,win+R运行cmd,输入下列命令
wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%path%;C:\Python27"
注意以上命名为一行
然后重新打开cmd,输入python,结果发现python不是内部命令,再输入命令:
echo %path%
发现没有刚才我们设置的python目录,怎么回事?其实这里是环境变量没有更新的缘故,大家再设置完后,还是要进入开始->计算机(在上面点右键)->属性->高级系统设置->环境变量,然后什么都不用改,直接点确定,再回来cmd查看path目录,这才发现已经出现我们设定的python目录了。有的童鞋肯定会问,既然还是要进入环境变量设置界面,我干嘛不直接在里面设置不就行了吗,还要这么麻烦干什么?这样最为直接。
但是我是不喜欢path那一长条的输入框,拖过来拖过去的,而且分号什么的路径写入容易出错,所以建议大家还是多采取命令的形式比较好一点。
好了,赶紧试一下我们的配置是否正确吧。输入命令:
python -?
然后balabala...出现一堆,这就说明我们的python配置好了。
接下来使用python创建工程。进入cocos2d-x-2.2.1目录下的tools->project-creator,大家可以看到有一个create_project.py脚本,如果有兴趣的童鞋可以右键在IDE中打开来看看,从中可以截取到该脚本的使用方法
好了,我们赶快将这个脚本使用起来吧
在project-creator目录下按住shift+鼠标右键,选择在此处打开命令窗口,输入命令:
python create_project.py -project HelloWorld -package org.HelloWorld.game -language cpp
然后等待结果
大家可以看到,我们的工程创建完毕了,其中,HelloWorld是我们命令中输入的工程名,也就是在cocos2d-x-2.2.1->Projects文件夹下创建了我们的工程,名字就是HelloWorld,在HelloWorld文件夹下的proj.android文件夹就是我们之后需要编译的android项目,创建命令后面的org.HelloWorld.game是安卓APK的识别名,大家可以按照“xxx.xxx.xxx”的格式自己命名。
这里我写了一个bat批处理,大家可以放在project-creator目录下,以后可以很方便的创建工程
在project-creator目录下点右键创建一个文本文档,打开,将以下内容复制进去,然后点保存,更改文件的后缀名为bat即可
-----------------------------------------------------------------------------------------
@echo off
:label1
@cls
echo 欢迎使用Python创建Cocos2d-x工程
set /p project=请输入需要创建的工程名:
set /p aID=请输入需要创建的android版本包标识名:
echo 您输入的工程名为%project%
echo 您输入的android版本包标识名为%aID%
echo 确认创建工程吗?
CHOICE /C 123 /M "确认请按 1,取消请按 2,或者退出请按 3。"
echo %errorlevel%
if %errorlevel%==1 goto label2
if %errorlevel%==2 goto label1
if %errorlevel%==3 goto label3
:label2
echo 正在创建工程...
python create_project.py -project %project% -package %aID% -language cpp
:label3
pause
-----------------------------------------------------------------------------------------
注意只需复制以上紫色部分。
回到Visual Studio2012,在解决方案上点击右键,点添加->现有项目
然后在这个目录(cocos2d-x-2.2.1\projects\HelloWorld\proj.win32)下找到HelloWorld.vcxproj
点击打开
可以看到我们的HeloWorld已经添加进我们的工程中了。好了,还等什么,编译一下吧。这里提一句,我们可以将HelloWorld设置为启动项目,这样每次调试的时候就可以方便的点击“本地Windows调试器”进行调试,而不是每次都得启动新实例。在HelloWorld上点右键,可以找到“设为启动项目”这一栏。
设置完成后我们会发现我们的HelloWorld加粗了,好了,运行一下试试
点本地Windows调试器,弹出窗口,选择不再显示此对话框,然后点是
等待编译,然后就会输出HelloWorld窗口了,这次是“小瓶”的,呵呵!
好了,以上我们已经将自己的工程创建好了!
接下来要来配置cocos2d-x在win7下的android交叉编译环境
4、安装java,设置java环境
android环境的搭建少不了java这玩意,选择默认路径安装好后便可以用wmic命令向系统添加java的环境变量了,win+R运行cmd,输入以下三个命令
wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="C:\Program Files\Java\jre7"
以上为一行
wmic ENVIRONMENT create name="CLASSPATH",username="<system>",VariableValue=";%JAVA_HOME%\lib\;"
以上为一行
wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%path%;C:\Program Files\Java\jre7\bin"
以上为一行
然后进入系统环境变量设置界面更新一下,重启cmd,试一下输入java,只要不是出现“java不是内部命令或外部命令”之类的,就表示你设置成功了。
5、安装cygwin与配置Android NDK
运行下载好的cygwin-setup-x86_64.exe,看到下列安装界面
点击下一步
继续
默认路径安装,然后选择下载保存的路径,这个大家可以自己配置,安装完毕后最好做个备份,免得再次需要安装时还要下载,国内的网速下载还是比较蛋疼的~~~~~
默认选择,下一步
选择第一个网站
这里大家注意了,一定要将红框标出来的点击一下,变成install
点击下一步,漫长的等待下载~~~~~~
终于安装完毕,我们赶紧打开来试试吧
第一次点开cygwin目录会在c:\cygwin64\home文件下生成以系统登录账户为名字的文件夹
然后在我们下载的软件里找到Editplus软件,默认安装后就可以将任何文本文件以Editplus软件打开
现在,将我们下载下来的Android NDK也就是android-ndk-r9b-windows-x86_64.zip解压缩至英文路径下,这个路径将会在接下来写入到cygwin的.bash_profile配置文件中,好了,我的解压路径为:D:\study\android\IDE\
注意:该路径不能存在空格,全英文
大家在c:\cygwin64\home文件下生成的以系统登录账户为名字的文件夹下找到.bash_profile文件,点击右键,用EditPlus软件打开,在结尾处输入回车,接着输入下列语句:
NDK_ROOT=/cygdrive/d/study/android/IDE/android-ndk-r9b
export NDK_ROOT
以上为两行
然后点击保存,关闭。这里的cygwin是指本地磁盘,d是d盘,后面是NDK路径,大家按照自己的文件路径填写,注意windows路径中“\”和cygwin中“/”的区别。顺便提一句,目录一直要写到有ndk-build.cmd文件的文件夹。
接着用EditPlus打开C:\cygwin64\etc文件夹下的bash.bashrc文件,在结尾处输入回车,输入自己的cocos2d-x工程的文件夹路径(还记得我们之前创建的HelloWorld工程吗?),注意,这一步不是必要的,完成的功能是在每次打开cygwin的时候不用去输入完整路径跳转至你的工程文件夹下。好了,我的路径配置为:
cd d:/study/cocos2d-x/cocos2d-x-2.2.1/projects/HelloWorld/proj.android
以上为一行
大家可以根据自己的路径改变,以后新建工程时也要记得改变自己的编译路径。还是要提醒大家注意windows路径中“\”和cygwin中“/”的区别。
重启cygwin,大家可以发现当前路径已经变成了我们设置的路径了
好了,输入ls命令,会发现一个build_native.sh的文件,这就是我们需要用NDK编译的文件了
接着输入以下命令:
./build_native.sh
以上为一行
如果顺利的话(仔细按照步骤来的话是没有什么问题的),就可以看到我们的NDK开始辛勤的编译cocos2d-x的一些本地C++代码了~~~~~又是漫长的等待。
编译完成后就可以退出cygwin了
这是完成后的最后界面的截图,如果你能看到这个界面的话就代表本步骤顺利完成。
6、安装Android SDK,配置Android的Eclipse编译环境
找到我们下载的adt-bundle-windows-x86_64-20131030.zip,解压,路径大家可以自己配置,还是注意英文路径,不加空格即可。
接着运行adt-bundle-windows-x86_64-20131030\eclipse下的eclipse(ADT自带Eclipse编译环境),选择工程文件夹,这里可以随意配置
接着关掉说明页,进入主界面。在主界面点击配置SDK
然后大家可以按照需求选择Android SDK的版本,这里我选择下载Android(API 8),然后选择安装
慢慢等待下载安装结束。
接下来配置Android VDM
然后选择DeviceDefinitions,随便选择一个创建,好像是现在的VDM不支持OpenGL的高版本,所以我使会用BlueStacks模拟器来调试,这里只是生成apk
7、编译Android项目
好了,以上我们所有的环境都已搭建完成,在将我们的项目导入eclipse之前,我们还需要将cocos2d-x-2.2.1\cocos2dx\platform\android\java\src下的org文件夹拷贝至我们的项目中,也就是cocos2d-x-2.2.1\projects\HelloWorld\proj.android\src下,由于我们之前创建项目时定的android包名前面也是org,所以会有覆盖选项,大家请选择合并覆盖即可
(那是不是每次编译安卓项目是都要复制这个包过来呢?其实是不用的,这个放在文章的末尾来讨论)
接着,回到eclipse环境,导入项目
注意在选择路径时写到HelloWorld文件夹下即可
导入工程后,在工程HelloWorld上点选右键,选择Properties
选择builders,点击New
选择program
然后在接下来的界面中的
name栏输入:Native_Builder
Location栏输入:C:\cygwin64\bin\bash.exe
Arguments栏输入:--login -c "cd /cygdrive/d/study/android/IDE/android-ndk-r9b && make APP=HelloWorld"
以上为一行
Arguments栏中,login前有两个"-"符号,中间的目录设置参考前面教程中对NDK_ROOT的路径设定,后面的HelloWorld为创建的工程名,这个根据自己创建的工程名设定。
(提示:如果不是按照默认路径安装的,请选择Browse File System,找到相关的路径)
选择OK,选中Native_Builder,并将其调到最上面
然后选择C/C++ Build->Environment->Add
接下来在Name栏输入path,在Value栏输入C:\cygwin64\bin
然后在Java Build Path里面选择Libraries栏,将Android Dependencies以及Android Private Libraries两个library删掉
(说明一下,以上我们是将cygwin的编译环境合并到了Eclipse里,Eclipse利用cygwin并调用cygwin的bash以及make,通过NDK来编译我们的Android程序,所以每次导入新的工程都要将上述步骤重新配置一下,这点非常重要,如果配置不正确,会导致很多莫名其妙的报错,最典型的错误就是提示找不到bash命令什么的~~~~)
好了,现在我们可以生成APK文件了,在主界面选中自己的工程,然后在命令条上选择Run->Run as->Android Application
如果以上步骤都按照教程设定的话,就能够生成APK了,APK存放在proj.android->bin文件夹下
快将APK装在自己的真机上进行测试吧!!!!!
以上编译环境就配置结束了。
——————————————————————————————————
深入讨论问题:每次在编译Android项目之前是不是都要将cocos2d-x-2.2.1\cocos2dx\platform\android\java\src下的org文件夹拷贝至我们的项目中呢?
其实不然,大家可以发现,每次我们执行./build_native.sh时,proj.android文件夹中的Resource里面的内容都会复制到assets文件夹中,所以我们可以稍微修改一下sh文件就可以免去每次创建项目的时候都要拷贝一遍本地编译库的操作
方法:
1、在C:\cygwin64\home\“自己的用户名”\文件夹下找到.bash_profile
2、用EditPlus打开编辑
3、在文件末尾输入回车,加入以下路径设定
COCOS2DX_DIR=/cygdrive/d/study/cocos2d-x/cocos2d-x-2.2.1
export COCOS2DX_DIR
以上为两行
然后在\cocos2d-x-2.2.1\template\multi-platform-cpp\proj.android目录下找到原生的build_native.sh,我们用EditPlus打开对它进行修改
在36行找到这句话,这句话是对NDK_ROOT的路径进行判断
我们在后面加入一样的语句,只是将NDK_ROOT替换为我们设定的目录,也就是COCOS2DX_DIR
然后再继续向后翻,在50行这里加入
echo "COCOS2DX_DIR = $COCOS2DX_DIR"
接着在后面我们发现了这样的语句
嘿嘿!!!!大家看出来了吧,这句话就相当于复制文件了,好了,我们依葫芦画瓢吧~~~~
也就是在后面加上如下语句:
for file in "$COCOS2DX_DIR"/cocos2dx/platform/android/java/src/*
do
if [ -d "$file" ]; then
cp -rf "$file" "$APP_ANDROID_ROOT"/src
fi
if [ -f "$file" ]; then
cp "$file" "$APP_ANDROID_ROOT"/src
fi
done
OK,文件修改完毕,大家记得保存哦!
这样修改了之后,在大家重新创建工程时,cocos2d-x的python脚本就会将template\multi-platform-cpp文件夹下的内容稍加修改(主要是项目名称的修改)后直接复制到我们的工程里,这样我们修改后的文件就可以使用了,哈哈!
———————————————————————————————————
教程到此就结束了,如果大家对本教程有任何问题,或者有什么错误之处,敬请大家指出!也欢迎大家对Cocos2d-x环境的搭建提出好的建议。