cocos2dx程序不能只在VS2012下运行,迟早是要搬运到Android和IOS上的。Windows下移植IOS平台先搁下不说比较困难,而且只有越狱的苹果机才可以运行,而且毕竟IOS高端、小众。这里主要讲一下移植Android,windows下cocos2dx打包成APK和在eclipse下运行的方法。
本文接上篇win8下环境配置的博客,在cocos2dx和VS2012的配置完成后( 如果还没有配置cocos2dx+VS2012的环境,请最好先参考博客进行配置:http://blog.csdn.net/u012200908/article/details/38056917)
cocos2dx和VS2012相比配置Android十分简单。在配置完成之后,这个时候系统变量path中有了cocos2dx的目录和Python的目录,这些也是移植Android平台要使用的。
篇幅长主要是因为笔者网上看过很多教程讲的不够透彻,许多新手看不懂,自己不想这样。所以这篇博客图片较多,造成长篇累牍。还请各位读者见谅。
下面先说一下准备工作配置Android有关的环境,用的东西包含如下:
1、
首先需要JDK,我用版本是1.8.0.11,64位
官网:http://www.oracle.com/technetwork/java/javase/downloads/index.html
可以上网搜一下,或者百度云(百度云共享的为64位,如果有人是win8或者win732位的系统还是按上面的网址去官网下载吧):
http://pan.baidu.com/s/1dDzRQBf
2、
Android ADT
官网可以直接下最新的(7月2号的版本):
http://developer.android.com/sdk/index.html
我的百度网盘有64位的可以下
http://pan.baidu.com/s/1bn8dwXT
解压到你习惯的目录下(建议某磁盘根目录)
如果你想使用我的版本 以避免可能出现的问题,我认为应该不会有的。。
(14年3月21号的)
网盘里面也有64位的可以下:
http://pan.baidu.com/s/1sj15u1n
3、
Android NDK
这个很关键,不要下r10版本,会有问题,这个是因为官方的原因。
参见
http://cn.cocos2d-x.org/tutorial/show?id=1187
这里选择r9d版本,我实在是在官网找不到下载链接,因为只看到r10的一堆链接,其他版本一个下载链接没找到。。。
最后找到一个网址:
https://dl.google.com/android/ndk/android-ndk-r9d-windows-x86_64.zip
https://dl.google.com/android/ndk/android-ndk-r9d-windows-x86.zip
后缀有64即为64位系统
可以去我的百度云下载64位NDK:
http://pan.baidu.com/s/1jGsWan8
先不急着解压
4、下载ANT
这里使用的是1.9.4的ANT
官网直接下载zip包:
http://ant.apache.org/bindownload.cgi
先不急着解压
5、现在将NDK和ANT全部解压到ADT下面去,以方便管理
现在ADT下面有
NDK
NDK
SDK
Eclipse
ANT
SDK Manager.exe
这里要强调一下,CMD运行要尽量都在管理员身份运行的情况下,请从查看所有程序,发送一个快捷方式到桌面,每次右键以管理员身份运行。然后CD到你要用的目录。
下面正式开始:
step 1:
安装JDK,记住JDK的路径,这里要强调一点,就是你文件夹路径里面不可以有空格和中文字符。所以你不要装在默认的program files里面。建议自己找个地方装JDK。
计算机-右键属性-高级系统设置-环境变量
点击进入环境变量,在系统变量下点击新建
JAVA_HOME C\Java\jdk1.8.0_11//就是你JDK的路径,这里不需要加分号
CLASS_PATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;//前面有个点,请大家注意
再找到path变量,要加三个东西
(1)在最前面加上:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
(2)path里面还要再加上Android SDK下面tools文件夹的路径。
例如笔者的是:C:\adt-bundle-windows\sdk\tools;
请使用绝对路径,加上这个路径之后,在使用android list targets查看sdk版本的时候就不会出现Android不是内部或者外部命令这样的错误。
(3)然后把ANT的变量也一起配置一下,有备无患。path中继续添加 ANT目录\bin;//建议直接找到那个目录然后将路径复制黏贴到里面,但注意后面要加上\bin
step2:
上面的工作完成之后,我们需要再次运行setup.py将NDK_ROOT、SDK_ROOT、ANT_ROOT关联到cocos。
打开CMD,cd到cocos2dx目录下
输入setup.py,回车。还记得一开始只配置cocos2dx和VS时候的运行结果吗?
结果如下,他会提示你Please enter the path of NDK_ROOT
参照我下面输入的一个个输入进去,建议拷贝路径之后右键黏贴,然后回车。(我的路径有点儿长,没有改ADT的名字,后来我全部删除重新调试过,大家可能会发现我的ADT前后不一样,这个大家知道一下就行了。一定要输入自己的正确的路径)
回车就会添加一个变量。到最后ANT_ROOT设置完了之后,这一块也就完了。然后他会提示你重启命令提示符或重启系统,这里重启下CMD就行了。如果有问题再重启吧。
可以在关闭之后再次在这个文件夹打开CMD,再次运行setup.py验证是否生效。
或者输入set NDK_ROOT、set ANDROID_SDK_ROOT、set ANT_ROOT查看
这里请注意,笔者再次提醒,图片笔者是两次截图,所以路径有的地方是adt-bundle-windows-x86_64-20140702,后来笔者改用了20140321的版本,造成其他地方路径是修改了之后的adt-bundle-windows,如果有不便还请谅解一下啦。
step3:
构建Android工程(apk)
下面新建一个工程,这里不做赘述。
工作目录内,shift + 右键 打开CMD
cocos new helloworld -l cpp -p com.losers.game
在工作目录下创建了一个helloworld项目(这里要注意,如果工作目录路径里面有空格建议删除工作目录重建,否则会编译出错)
在构建APK之前,先打开ADT中的Eclipse,启动SDK Manager,更新一下SDK,至少保证一个版本的SDK可以使用。但这个版本要新一些,笔者选择了4.4.2,因为太旧了会有OpenGL的问题,建议大家也更新一下4.4.2,大有用处。这里先说一下,后面具体解释。
更新SDK的时候可能存在Fetching很慢的问题,请点击Tools——option——下面的Others中,把第一个选项勾中即可。
相信速度会快很多。而且下载成功率也会大大提高。其他的方法比如修改hosts文件在此不冗述,请大家自己百度一下方法。
在确保有至少一个完整可用版本的SDK后,后面要用的是cocos2d-console,compile的命令
在helloworld目录下打开CMD下输入下列命令查看帮助
cocos compile --help或者 cocos compile -h
然后输入cocos compile -p android -j 4,打包APK。这儿说一下,要在管理员模式下执行命令提示符,以防出现问题。
即编译当前目录的安卓工程,可以同时有4个编译任务,让4核机器满负荷跑。
这里当然可以根据你的手机Android版本加上 --ap 数字(10 —— 20,目前是这样的,以后除了新版本数字会增加)这里我选择了缺省,让他自己找。因为原理上是可以自己找的,我要全方面判断是否有问题。
版本对应的数字我想在用SDK Manager的时候大家都会看到
如果你不知道,可以在CMD中输入android list targets查看,如下图
笔者SDK只有2.3.3和4.4.2的,对应数字是10和19
然后执行
cocos compile -p android -j 4,打包APK
根据它提示的路径去找到那个让我们又爱又恨的APK
跟同学借个手机来跑跑试试。结果如下,版本Android4.0:
这里要说一下,笔者在打包APK的时候遇到了一些问题,说java.exe不是内部或者外部命令,也不是可运行的程序,也不是批处理文件。
这个应该是一开始的JAVA环境变量配置有问题造成的,你要看看你的跟java有关的变量路径里面是否有类似于program files一样有空格的路径。如果有,请卸载JDK重装再别的路径没有中文和空格的文件夹里面,然后修改路径,重启电脑,以管理员方式运行CMD重试一下,笔者就是这样解决了问题。
step4:
eclipse下跑程序
继续回到前面打开的Eclipse,将我们要打开的项目给整进来。
但在这之前,最好查看NDK和SDK路径是否正确
window——preferences——Android查看SDK和NDK,检查location是否正确
如果你用的新版本(7月2号版本的)你会发现,卧槽?为啥怎么找NDK都找不到啊?这个原因我也不知道。需要往Eclipse的plugins文件夹下拷贝一个jar包,叫做com.android.ide.eclipse.ndk_23.0.2.1259578.jar
这是下载地址:
http://pan.baidu.com/s/1i3xbM0d
这个NDK里面没有应该是没有什么影响的,我是在配置环境出错的时候病急乱投医了,找了各种方法,觉得这个还是加上好,所以就说一下。幸亏我用的不是这个版本,不过我的大神舍友说,这个NDK就算空着也不会影响。。。。。
下面开始导入我们的项目
import-Existing Android Code Into Workspace
选择我们的项目中proj.android文件-Finish
这里一定不要勾选copy projects into workspace,否则后果很严重,笔者亲测。。。。
这个时候程序会有错误,是因为类库没有引入,以后每次都要引用一下了。你需要找到你创建的项目所在的地方。
我是在C:\cocosworkspace\helloworld\cocos2d\cocos\platform\android\java\src
下面,(就是原项目里面)里面有个org文件夹,复制一下,拷贝到我们用Eclipse打开的helloworld项目的src中去。提示是否重写,选yes,这样错误就没有了。
下面重点来了。
第一点:我们可以看到,这个地方默认的版本是Android2.3.3,笔者就是在这个地方被困住了两天两夜,我新建了2.3.3的AVD,也勾选了Use Host GPU,但就是报相关OPENGL的错误。后来我多方查证才知道openGl在Android2.2之后才支持真机,所以默认版本是2.3.3,模拟器版本4.0.3之后才能跑,我只想说,cocos2dx和Android都太(哔哔)了(自己和谐一下)。
所以这个地方,在项目上右键——properties——切换到4.4.2版本,等一会儿Eclipse为我们自动切换。
切换了版本之后,新建4.4.2的AVD,勾选下方的Use Host GPU,这个AVD就是我们要用的模拟器。
第二点:同时这里要注意,如果以后你编写cocos程序,增加了cpp,你需要到Android.mk文件中将cpp添加进去
下面是Android.mk文件(jnj文件夹下)
要在LOCAL_SRC_FILES下面写上你所有的cpp文件,这里要注意,除了最后一个cpp以外,每个后面都有一个斜杠。
以上都完成之后,启动AVD运行一下,大家请看~当当当当~
这里我调整成了较宽的AVD。
到此配置就完成了!~~~~~
因为我学cocos2dx的时间也不是很长,只有一个多月,写这篇博客是一位cocos2dx吧的吧友提出的疑问,我就自己配置了一下,虽然在cocos2dx下做项目,但我是用Xcode和VS2012。打包APK和一直Android平台是另一位队友的任务。这位吧友也让我学到了不少,知道了自己的不足,持续了一个多周总算是把Mac下和windows 8.0下cocos2dx3.2移植Android平台的教程都写了出来。如果大家遇到问题或者发现我的博客里面有错误请留言,我会尽力给大家解答以及修正博客。
2014.8.6 22:45
Mr.Losers