玩轉cocos2d-x(一)創建、生成、運行HelloWorld

因爲最近項目需要,開始研究下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

D:\cocos2dx>create-android-project.bat
Please enter your package path. For example: org.cocos2dx.example:com.test
Please enter your project name:MyHelloWorld
...target的提示信息
Please input target id:10
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的目錄。


Classes目錄下放置的是c/c++頭文件和源碼文件,這裏重要的是AppDelegate.cpp和AppDelegate.h(後續文章中介紹這兩個)

HelloWorldScene.cpp,HelloWorldScene.h是給出的一個項目默認顯示的場景。

Resource目錄下存放的是各種資源文件。


proj.android 目錄中放的就是我們需要的android 項目文件了。


如果還有其他平臺的就有其他的proj.xxx目錄,這個可以在D:\cocos2dx\tests目錄下看到.

好了,到了這一步,離成功就不遠了。
打開cygwin Terminal,切換目錄至/cygdrive/d/cocos2dx/MyHelloWorld/proj.android運行build_native.sh

berdy@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錄下,修改文件和目錄的權限。
D:\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組

D:\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包

berdy@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,同樣執行上面的命令

D:\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下

berdy@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



在設備或者模擬器上運行,出現瞭如下畫面就大功告成了。



好了,今天就先寫到這裏了,後面的會在這個MyHelloWorld項目中來添加素材和功能了。請期待後續。。。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章