您的位置:首页 > 移动开发 > Cocos引擎

玩转Android cocos2d-x(一)创建、生成、运行HelloWorld

2013-06-28 13:56 423 查看
因为最近项目需要,开始研究下cocos2d-x;关于cocos2d-x这里就不废话了。
作为一个程序员,凡事先从HelloWorld开始,这是我们的优良传统。
这里先说下如何创建一个cocos2d-x的HelloWorld项目。

第一步:下载cygwin并安装,至于如何安装cygwin就不多说了。网上这类资料实在是太多了。
需要注意的是一定要安装gcc g++ gdb make这些工具。
第二步:下载NDK
到这个页面http://developer.android.com/tools/sdk/ndk/index.html 下载需要的版本(最好是最新的)
解压缩至任意一目录下。
第二步:下载cocos2d-x
git clone https://github.com/cocos2d/cocos2d-x.git 第三步:创建Hello World项目
a、首先需要确定三个路径
1)android sdk 目录下的tools目录 (D:\Android\android-sdk\tools)
2)cygwin的bin目录(D:\dev\cygwin\bin)
3)NDK的目录(D:\Android\android-sdk\android-ndk-r8b)
b、修改cocos2d-x目录下的create-android-project.bat文件
并分别替_ANDROIDTOOLS _CYGBIN _NDKROOT三个变量的值为上面三个值。
c、在命令行中切换到cocos2d-x的根目录下,运行create-android-project.bat(一定是切换到cocos2d-x的根目录下运行)

按照提示输入项目的包名,项目名,主要指定的Android sdk的targetid
[plain]view plaincopyD:\cocos2dx>create-android-project.bat

Please enter your package path. For example: org.cocos2dx.example:<span style="color:#ff0000;">com.test</span>

Please enter your project name:<span style="color:#ff0000;">MyHelloWorld</span>

...target的提示信息

Please input target id:<span style="color:#ff0000;">10</span>

Create android project

Create Android project inside proj.android

Created project directory: D:\cocos2dx\MyHelloWorld\proj.android

Created directory D:\cocos2dx\MyHelloWorld\proj.android\src\com\test

Added file D:\cocos2dx\MyHelloWorld\proj.android\src\com\test\MyHelloWorld.java

Created directory D:\cocos2dx\MyHelloWorld\proj.android\res

Created directory D:\cocos2dx\MyHelloWorld\proj.android\bin

Created directory D:\cocos2dx\MyHelloWorld\proj.android\libs

Created directory D:\cocos2dx\MyHelloWorld\proj.android\res\values

Added file D:\cocos2dx\MyHelloWorld\proj.android\res\values\strings.xml

Created directory D:\cocos2dx\MyHelloWorld\proj.android\res\layout

Added file D:\cocos2dx\MyHelloWorld\proj.android\res\layout\main.xml

Added file D:\cocos2dx\MyHelloWorld\proj.android\AndroidManifest.xml

Added file D:\cocos2dx\MyHelloWorld\proj.android\build.xml

Added file D:\cocos2dx\MyHelloWorld\proj.android\proguard-project.txt

好了,这个时候切换到D:\cocos2dx目录下会发现多了一个MyHelloWorld的目录。
650) this.width=650;" src="http://my.csdn.net/uploads/201208/14/1344949980_3742.png" style="border:none;max-width:100%;" />
Classes目录下放置的是c/c++头文件和源码文件,这里重要的是AppDelegate.cpp和AppDelegate.h(后续文章中介绍这两个)HelloWorldScene.cpp,HelloWorldScene.h是给出的一个项目默认显示的场景。650) this.width=650;" src="http://my.csdn.net/uploads/201208/14/1344950012_9271.png" style="border:none;max-width:100%;" />Resource目录下存放的是各种资源文件。650) this.width=650;" src="http://my.csdn.net/uploads/201208/14/1344950046_2856.png" style="border:none;max-width:100%;" />
proj.android 目录中放的就是我们需要的android 项目文件了。
650) this.width=650;" src="http://my.csdn.net/uploads/201208/14/1344950104_5639.png" style="border:none;max-width:100%;" />
如果还有其他平台的就有其他的proj.xxx目录,这个可以在D:\cocos2dx\tests目录下看到.
好了,到了这一步,离成功就不远了。
打开cygwin Terminal,切换目录至/cygdrive/d/cocos2dx/MyHelloWorld/proj.android运行build_native.sh

[plain]view plaincopyberdy@berdy-PC /cygdrive/d/cocos2dx/MyHelloWorld/proj.android

$ ./build_native.sh

cp: cannot open `/cygdrive/d/cocos2dx/MyHelloWorld/Resources/CloseNormal.png' for reading: Permission denied

cp: cannot open `/cygdrive/d/cocos2dx/MyHelloWorld/Resources/CloseSelected.png' for reading: Permission denied

cp: cannot open `/cygdrive/d/cocos2dx/MyHelloWorld/Resources/fps_images.png' for reading: Permission denied

cp: cannot open `/cygdrive/d/cocos2dx/MyHelloWorld/Resources/fps_images-hd.png' for reading: Permission denied

cp: cannot open `/cygdrive/d/cocos2dx/MyHelloWorld/Resources/fps_images-ipadhd.png' for reading: Permission denied

cp: cannot open `/cygdrive/d/cocos2dx/MyHelloWorld/Resources/HelloWorld.png' for reading: Permission denied

Using prebuilt externals

make: Entering directory `/cygdrive/d/cocos2dx/MyHelloWorld/proj.android'

/cygdrive/d/Android/android-sdk/android-ndk-r8b/build/core/add-application.mk:49: jni/Application.mk: Permission denied

/cygdrive/d/Android/android-sdk/android-ndk-r8b/build/core/setup-toolchain.mk:169: jni/Android.mk: Permission denied

Gdbserver : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver

Gdbsetup : libs/armeabi/gdb.setup

make: Leaving directory `/cygdrive/d/cocos2dx/MyHelloWorld/proj.android'

发现build出错了,Permission denied,windows 7下的权限问题。切换到windows的命令行中,
切换到D:\cocos2dx\MyHelloWorld录下,修改文件和目录的权限。
[plain]view plaincopyD:\cocos2dx\MyHelloWorld>takeown /f * /a /r

成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\Classes" 现在由管理员组所有。

成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android" 现在由管理员组所有。

成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\Resources" 现在由管理员组所有。

成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\Classes\AppDelegate.cpp" 现在由管理员组所有。

成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\Classes\AppDelegate.h" 现在由管理员组所有。

成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\Classes\HelloWorldScene.cpp" 现在由管理员组所有。

成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\Classes\HelloWorldScene.h" 现在由管理员组所有。

成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android\AndroidManifest.xml" 现在由管理员组所有。

成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android\ant.properties" 现在由管理员组所有。

成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android\assets" 现在由管理员组所有。

成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android\bin" 现在由管理员组所有。

成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android\build.xml" 现在由管理员组所有。

成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android\build_native.sh" 现在由管理员组所有。

(省略后面的提示信息了。。。)

授权everyone组

[plain]view plaincopyD:\cocos2dx\MyHelloWorld>icacls * /t /grant:r everyone:f

已处理的文件: Classes

已处理的文件: proj.android

已处理的文件: Resources

(省略了中间的提示信息)

已处理的文件: Resources\CloseNormal.png

已处理的文件: Resources\CloseSelected.png

已处理的文件: Resources\fps_images-hd.png

已处理的文件: Resources\fps_images-ipadhd.png

已处理的文件: Resources\fps_images.png

已处理的文件: Resources\HelloWorld.png

已成功处理 65 个文件; 处理 0 个文件时失败

再切换到cygwin Terminal下,再次运行build_native.sh包

[plain]view plaincopyberdy@berdy-PC /cygdrive/d/cocos2dx/MyHelloWorld/proj.android

$ ./build_native.sh

(省略中间的编译提示信息)

d:/android/android-sdk/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld.exe: cannot find ./obj/local/armeabi/png.a: Permission denied

d:/android/android-sdk/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld.exe: cannot find ./obj/local/armeabi/jpeg.a: Permission denied

d:/android/android-sdk/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld.exe: cannot find ./obj/local/armeabi/xml2.a: Permission denied

d:/android/android-sdk/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld.exe: cannot find ./obj/local/armeabi/tiff.a: Permission denied

d:/android/android-sdk/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld.exe: cannot find ./obj/local/armeabi/libgnustl_static.a: Permission denied

collect2: ld returned 1 exit status

/cygdrive/d/Android/android-sdk/android-ndk-r8b/build/core/build-binary.mk:378: recipe for target `obj/local/armeabi/libgame.so' failed

make: *** [obj/local/armeabi/libgame.so] Error 1

make: Leaving directory `/cygdrive/d/cocos2dx/MyHelloWorld/proj.android'

发现还是报错,同样的是权限问题.这次是编译链接后生成的静态库的权限问题。
jpeg.a,libcocos2d.a,libcocosdenshion.a,libgnustl_static.a,png.a,tiff.a,xml2.a
切换到D:\cocos2dx\MyHelloWorld\proj.android\obj\local\armeabi,同样执行上面的命令
[plain]view plaincopyD:\cocos2dx\MyHelloWorld\proj.android\obj\local\armeabi>takeown /f * /a /r

D:\cocos2dx\MyHelloWorld\proj.android\obj\local\armeabi>icacls * /t /grant:r everyone:f

再次切换到cygwin Terminal下

[plain]view plaincopyberdy@berdy-PC /cygdrive/d/cocos2dx/MyHelloWorld/proj.android

$ ./build_native.sh

Using prebuilt externals

make: Entering directory `/cygdrive/d/cocos2dx/MyHelloWorld/proj.android'

Gdbserver : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver

Gdbsetup : libs/armeabi/gdb.setup

SharedLibrary : libgame.so

Install : libgame.so => libs/armeabi/libgame.so

make: Leaving directory `/cygdrive/d/cocos2dx/MyHelloWorld/proj.android'

在eclipse中创建一个android project,注意选择 Androdi Prolject from existing code
650) this.width=650;" src="http://my.csdn.net/uploads/201208/14/1344950384_9153.png" style="border:none;max-width:100%;" />

在设备或者模拟器上运行,出现了如下画面就大功告成了。650) this.width=650;" src="http://my.csdn.net/uploads/201208/14/1344950439_2248.png" style="border:none;max-width:100%;" />

本文出自 “7087095” 博客,请务必保留此出处http://7097095.blog.51cto.com/7087095/1219233
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: