本文是cocos2dx移植android的第二篇教程,笔者深深感觉,cocos2dx移植android平台是永远的痛啊。。。
下面讲一下笔者花费一个周研究的Mac OS下的cocos2dx3.2+android配置
首先要准备的东西
(1)下载cocos2dx3.2
http://www.cocos2d-x.org/download
(2)Android Development Tools(adt)
http://developer.android.com/sdk/index.html
ADT中自带Eclipse,很屌。
因为android developers那个网站有些用户在进入的时候可能因为要翻墙等某些原因很难整,我上这个网站就是需要加载很长时间,真难受。所以我网云端放了一份我写博客时最新的版本,大家可以get it
http://pan.baidu.com/s/1mg4xqTq
(3)NDK,记得现在一定不要用r10,因为r10在环境搭载的时候会有bug,会出现错误,笔者被这个错误已经困扰了好久好久。。。。耽误了整整两天之后,只能用r9重新配置之后再修改博客的多出细节。
为什么笔者这么说呢。。。请看下面的网址:
http://cn.cocos2d-x.org/tutorial/show?id=1187
NDK r9 for mac下载地址如下:
https://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86_64.tar.bz2
https://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86.tar.bz2
有64后缀为64位系统的。
笔者同样在云端分享了一个64位链接:
http://pan.baidu.com/s/1dDu2fVb
注:不要看到有win3个字母就觉得是windows下的,以为我传错了或者写错了。。。
(4)ANT
这里安装ant给出两个方法
method one:这里我直接使用了Homebrew来进行安装。如果大家之前的Mac+Xcode的cocos2dx开发环境是按照我的教程配置的,就应该已经装好了homebrew,就可以直接跟我一样这样去做。
如果你没有按照我的教程配置,不知道homebrew的相关信息,可以查阅我的这两篇博客
<1>http://blog.csdn.net/u012200908/article/details/38070885 Mac下Xcode配置cocos2dx
<2>http://blog.csdn.net/u012200908/article/details/38070345 Homebrew安装和使用
建议还是装一下homebrew,如果你要在Mac下进行开发,或者想在Mac进行开发的话,这是一个很好的、程序员中使用很广泛的东西,不要嫌安装TA麻烦(何况按照我的教程只需要一句话。。。。),或者你可以看看下面TA的作用再做决定。
下面是安装方法,通过launchpad调出Terminal(建议大家把语言调成英文,terminal也就是终端,后面会称为终端,调成英文对程序员是很有好处的),这里只需要一句,brew install ant。
意思就是:嘿,Homebrew,给我装个新版的ant,Mac里面自带的太旧了!
then,home-brew就会照做。
这里大家要记住Homebrew给我们安装的地点,例如我的路径为:
/usr/local/Cellar/ant/1.9.4
method two:如果你放弃了homebrew(what a pity!),那就根据网址直接去下载吧。
http://ant.apache.org
(5)python(正常Mac下会有自带,基本上无需下载,你可以在终端输入python来查看版本,这里只是列出来说明一下,我们是需要这个东西的)
虽然基本无需下载,但为了严谨,还是说一下。不要3.0以上的版本,最好是经典的2.7(2.7.6 or 2.7.8)。这里同样两种方法
method one:
https://www.python.org/download/releases/2.7.6/
method two:
参考我的博客,使用homebrew来安装,这里要注意,我在配置的时候犯了一个错误,安装了3.0以上版本的Python,误导了大家,我已经在发现后在原博客中间部分贴出红字,警示大家,所以在这里再次订正一下,大家安装的时候不要输入brew install Python3,要输入brew install python。也再一次向大家道歉,自己的失误,导致了可能会误导别人的结果,在这里向大家表示歉意。
以上5个全部就绪后,就只欠东风了。下面正式开始:
一、配置cocos2dx初始环境
首先你要配置整个cocos2dx环境,即能用python进行项目创建,并且Xcode下能够执行你新建的项目。我之前的博客已经详细的写了,请大家参考一下:http://blog.csdn.net/u012200908/article/details/38070885
但是在这里,为了方便读者我再讲一遍,如果您已经参照我的博客,或网上的其他教程配置好了cocos2dx+Xcode的环境,请直接跳过第一步,到第二步。
(1)将下载的cocos2dx3.2解压,这里要注意,你解压的时候文件名或者文件路径里面不要有中文,不要有空格。如果你用的是中文的语言,你会发现Finder里面那几个文件夹是文档、下载、图片、电影,但是在作为路径的时候系统仍会将他们设置为Documents、Downloads、Pictures、Movies,这几个文件夹按照英文算。
(2)安装python,这里有几个选择:
<1> 你可以不更新python,使用系统自带的python,如果以后出现问题再安装更新版本的
<2> 参考我的博客,使用homebrew来安装python。(注:如果你想要成为一名程序员或开发者,建议你使用这种方法,以为Mac下的Homebrew是一个很强大的东西。如果你只是有兴趣想要研究一下cocos2dx,可以不选择这种方法。)
博客:
<3>直接去下载python 2.7forMac(笔者用的2.7.8,但是有人说2.7.6更好。who knows。。。)
(3)安装完python之后,我们要找一个简单的方法,和windows8直接在当前文件夹shifit + 右键打开命令提示符一样的方法,能够在当前文件夹快速的打开终端。
先打开system preferences——keyboard———shortcuts———services———勾选new terminal at folder即可(在当前文件夹快速打开终端节省了很多转移当前目录的时间,至于这些东西对应的中文,我想一定难不倒各位)
这些完成后,来到解压后cocos2dx文件夹(不要双击打开),右键——service———New Terminal at Folder
打开一个终端窗口,输入./setup.py回车
我们可以看到,在这里面,他只是check到了COCOS_CONSOLE_ROOT的路径
但是没有找到android平台有关的路径,他会提示你输入NDK_ROOT,或者其他android相关的root,这里不要着急,先不管他,直接关掉终端。
(4)创建并运行项目
创建和运行新项目不想多讲,简单一说,windows和Mac下语法啥的都一样,
直接在终端中输入cocos -h可以查看帮助
下面直接创建项目,创建项目的时候包我选择了缺省,大家注意。
先自己新建一个文件夹作为cocos的工作目录,然后在这个目录上(不要进去)右键 service——New Terminal at Folder
输入cocos new -l cpp helloagain
helloworld是上一个教程中创建的
用Xcode打开来run一下,结果只有一个椰子一句HelloWorld和一个退出button
二、相关变量的配置
不知道你是否还记得我们在只配置Xcode环境时执行setup.py,后面的变量为缺省,这里我们要为这些值缺省的变量赋值。
有两种方法(我是用的第二种,我也建议使用第二种):
(1)
再次运行cocos2dx3.2安装目录下的setup.py,然后根据他的提示自己将环境变量的目录粘帖进去,然后回车。
比如你执行setup.py,系统提示
Please enter the path of NDK_ROOT(or press Enter to skip):
这里你就要输入你的NDK路径(参照上面的COCOS_CONSOLE_ROOT路径输入)
/Users/Lss/Downloads/android-ndk-r9d/
然后回车。按照这个依次输入NDK_ROOT、ANDROID_SDK_ROOT、ANT_ROOT
最后根据他的提示,会让你执行source命令,更新变量。
更新之后,关掉终端并重启生效
这个方法比较简单,就不做详细的解释了。但是这里要注意同样的问题,解压的文件夹名字,No Chinese。因为这个东西牵扯到.bash_profile这个文件,建议如果你使用第一种方法配置变量,还是最好看一下第二种方法,如何找到这个文件,因为默认状态下,这个文件是隐藏的。
(2)
直接修改 .bash_profile,这个是Mac os下默认的隐藏文件,配置环境变量的。
具体打开方法请参照我的另一篇博客:
http://blog.csdn.net/u012200908/article/details/38314311
这里直接贴上第五种方法,那个APP的下载链接:
APP名字叫ShowHiddeFiles
主页:http://gotoes.org/sales/ShowHiddenFilesMacOSX/How_To_Show_Hidden_Files.php
可以直接点击左边下载。
也可以直接点击下载链接:http://gotoes.org/sales/ShowHiddenFilesMacOSX/ShowAllFiles.app.zip
直接打开app选择show special files按钮
你就可以在/Users/yourname/下面找到.bash_profile,打开并按照后面编辑
详细请参考该博客
也可以直接在终端输入
pico .bash_profile
查看.bash_profile文件内容,在终端输入下面给出的变量
如果你的系统没.bash_profile文件,那执行下面操作建一个
首先调出终端
<1>先进入用户的目录,输入 cd ~ 这里注意字母和符号之间有个空格
<2>继续输入 touch .bash_profile 这里touch和.之间也是有个空格
<3>打开文件并编辑 open -e .bash_profile 同样要注意空格
打开之后对其进行编辑,我的打开之后是这样的,因为之前已经配置过了cocos2dx在Mac进行ios开发的环境,所以会有这些内容。
接下来进行一些编辑,建议编辑之前command + shift + 4截个图备份一下
加入下列内容:
# Add android NDK_ROOT
export NDK_ROOT=/Users/Lss/Downloads/android-ndk-r9d/
#Add ANDROID_SDK_ROOT
export ANDROID_SDK_ROOT=/Users/Lss/Downloads/adt-bundle/sdk
同时编辑一下ANT_ROOT
# Add environment variable ANT_ROOT for cocos2d-x
export ANT_ROOT=/usr/local/Cellar/ant/1.9.4
export PATH=$ANT_ROOT/bin:$PATH
如果看官的profile里面没有这个就参照我写的打上去吧
#那一行没有什么用,类似于注释
注意:在路径中尽量不要出现空格,否则在下面第五步可能会有问题,笔者一开始SDK路径中,adt bundle这个出现了问题,所以才在中间仿照NDK的路径加入了一条线。如果出现问题,在你执行source .bash_profile时会提示 ****/****:not a valid identifier。所以最好不要在文件夹的名字上有空格
(4)保存文件 Command + S 并关闭文件
这些完成后,再来到解压后cocos2dx文件夹(不要双击打开),右键——service———New Terminal at Folder
打开一个终端窗口,输入./setup.py回车
这次运行结果与之前的教程会有不一样,那是因为之前讲的是Xcode作为开发平台,针对ios开发,所以SDK NDK ANT都是缺省,而本文讲的是在Mac下用eclipse针对Android开发,所以前面在.bash_profile中添加的变量这里会出现,有心人可以参照我上面的博客连接找到setup.py运行结果对比一下。
大家注意结果的最后一行有一句话。意思是让你执行命令: source /Users/Lss/.bash_profile 来让我们添加的系统变量开始发挥效用(一看这翻译水平,英语六级一定过了)
所以输入: source /Users/Lss/.bash_profile(直接复制自己终端里的就好了)
三、工程导入eclipse
先进入eclipse,打开SDK Manager,他会自己fetching一些东西,过程十分慢,fetching完了之后,更新一下SDK,一两个版本就可以了,我这儿更新了4.4.2即API19。让他先更新着。(如果有的读者因为这个地方没有图片,您不懂我说的什么意思,我想您一定是个新手,可以网上稍微查一下eclipse更新SDK。这里建议新手还是应该先使用Xcode或者VS2012进行cocos开发,然后学习一些android和java的知识,再移植android平台,不要急着真机调试,编程不可能一口吃成个胖子,要日积月累)
再进入到工作目录中创建的项目里面,打开helloagain——进入proj.android,你会看见里面有个文件叫做 build_native.py 这就是我们接下来要运行的文件。
返回上层目录,右键proj.android文件夹,服务,打开终端(应该会了吧)
输入命令:python build_native.py (会有几个warning,没有问题)
执行完之后回到eclipse,SDK更新完之后,建议重启下eclipse。
重启之后执行项目导入,File-new project-Android-Android project from existing code
选择你之前新建的项目,工作目录里面的hello again,打开proj.android,勾选下面出现的唯一的项目
这里注意,千万不要勾选,copy projects into workspace,会各种错误。
我们会发现引入之后还是会有错误在里面,不要慌,这是因为包的缺少。
这里要查看一下错误原因,在项目上右键,属性(properties),错误原因是什么,下方已经标注出来了。
解决方法:到helloagain/cocos2d/cocos/platform/android/java/src目录下
command + C 复制一下org这个文件夹,这是类包(不信打开看看啊)
然后回到项目的src下,command + V粘帖,我粘的时候有提示说已经存在是否重写,这个必须要,反正就是要粘进去,粘进去你会发现错误全部消失了
粘进去之后你还要有模拟器才可以运行。我只下了android4.4的相关东西。然后重新启动一下,创建了一个AVD。OpenGL在android2.2之后才支持真机,模拟器版本在4.0.3之后才可以跑。如果这个地方,你引入之后项目的版本是2.3.3记得切换。
切换了4.4版本之后,新建4.4的AVD,勾选下方的Use Host GPU,这个AVD就是我们要用的模拟器。
AVD要选中下面的Use Host GPU,看下图:
运行一下程序,结果如下(如果你不是跟笔者一样运行的空项目,而是导入了一个自己写的项目,或者你对里面的cpp文件有增删甚至改名,请不要运行再往下看)
在这里笔者要说明两点:
第一:就是在构建项目的过程中,你需要在android.mk这个文件里面做一些修改(在jnj文件夹下)画框的地方,这是所有的cpp的名字,如果你以后修改或者添加了cpp,你需要在下面做声明,声明的时候要注意,前面的cpp后面有斜杠,最后一个没有斜杠。
第二:笔者发现,创建的新项目直接通过import导入,他编译一阵子之后,再考入src文件下的那个包,发现示例程序依旧可以运行。我不知道这样既然可以运行那么build_native.py还有什么意义。大家可以试一下,为了避免不必要的错误,大家可以new一个新项目试一下,不执行build_native.py直接导入,拷贝一下缺少的包,仍然是可以直接运行的。这个原因我还在考查中,大家可以想想这是为什么。因为官网执行了build_native.py,所以我们还是按照官网来吧。
至此你已经可以将cocos2dx的项目移植到android上了。
2014.8.5 23:34
Mr.Losers