溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

玩轉(zhuǎn)Android cocos2d-x(一)創(chuàng)建、生成、運(yùn)行HelloWorld

發(fā)布時間:2020-04-11 01:44:35 來源:網(wǎng)絡(luò) 閱讀:1584 作者:杜甲同學(xué) 欄目:游戲開發(fā)

因為最近項目需要,開始研究下cocos2d-x;關(guān)于cocos2d-x這里就不廢話了。
作為一個程序員,凡事先從HelloWorld開始,這是我們的優(yōu)良傳統(tǒng)。
這里先說下如何創(chuàng)建一個cocos2d-x的HelloWorld項目。

第一步:下載cygwin并安裝,至于如何安裝cygwin就不多說了。網(wǎng)上這類資料實在是太多了。
需要注意的是一定要安裝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
第三步:創(chuàng)建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的根目錄下,運(yùn)行create-android-project.bat(一定是切換到cocos2d-x的根目錄下運(yùn)行)

按照提示輸入項目的包名,項目名,主要指定的Android sdk的targetid


[plain]view plaincopy
  1. D:\cocos2dx>create-android-project.bat  

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

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

  4. ...target的提示信息  

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

  6. Create android project  

  7. Create Android project inside proj.android  

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

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

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

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

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

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

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

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

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

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

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

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

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

好了,這個時候切換到D:\cocos2dx目錄下會發(fā)現(xiàn)多了一個MyHelloWorld的目錄。


玩轉(zhuǎn)Android  cocos2d-x(一)創(chuàng)建、生成、運(yùn)行HelloWorld
Classes目錄下放置的是c/c++頭文件和源碼文件,這里重要的是AppDelegate.cpp和AppDelegate.h(后續(xù)文章中介紹這兩個)

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

玩轉(zhuǎn)Android  cocos2d-x(一)創(chuàng)建、生成、運(yùn)行HelloWorld

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

玩轉(zhuǎn)Android  cocos2d-x(一)創(chuàng)建、生成、運(yùn)行HelloWorld

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

玩轉(zhuǎn)Android  cocos2d-x(一)創(chuàng)建、生成、運(yùn)行HelloWorld

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

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


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

  2. $ ./build_native.sh  

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

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

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

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

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

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

  9. Using prebuilt externals  

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

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

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

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

  14. Gdbsetup       : libs/armeabi/gdb.setup  

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

發(fā)現(xiàn)build出錯了,Permission denied,windows 7下的權(quán)限問題。切換到windows的命令行中,
切換到D:\cocos2dx\MyHelloWorld錄下,修改文件和目錄的權(quán)限。
[plain]view plaincopy
  1. D:\cocos2dx\MyHelloWorld>takeown /f * /a /r  

  2. 成功: 此文件(或文件夾): "D:\cocos2dx\MyHelloWorld\Classes" 現(xiàn)在由管理員組所有。  

  3. 成功: 此文件(或文件夾): "D:\cocos2dx\MyHelloWorld\proj.android" 現(xiàn)在由管理員組所有。  

  4. 成功: 此文件(或文件夾): "D:\cocos2dx\MyHelloWorld\Resources" 現(xiàn)在由管理員組所有。  

  5. 成功: 此文件(或文件夾): "D:\cocos2dx\MyHelloWorld\Classes\AppDelegate.cpp" 現(xiàn)在由管理員組所有。  

  6. 成功: 此文件(或文件夾): "D:\cocos2dx\MyHelloWorld\Classes\AppDelegate.h" 現(xiàn)在由管理員組所有。  

  7. 成功: 此文件(或文件夾): "D:\cocos2dx\MyHelloWorld\Classes\HelloWorldScene.cpp" 現(xiàn)在由管理員組所有。  

  8. 成功: 此文件(或文件夾): "D:\cocos2dx\MyHelloWorld\Classes\HelloWorldScene.h" 現(xiàn)在由管理員組所有。  

  9. 成功: 此文件(或文件夾): "D:\cocos2dx\MyHelloWorld\proj.android\AndroidManifest.xml" 現(xiàn)在由管理員組所有。  

  10. 成功: 此文件(或文件夾): "D:\cocos2dx\MyHelloWorld\proj.android\ant.properties" 現(xiàn)在由管理員組所有。  

  11. 成功: 此文件(或文件夾): "D:\cocos2dx\MyHelloWorld\proj.android\assets" 現(xiàn)在由管理員組所有。  

  12. 成功: 此文件(或文件夾): "D:\cocos2dx\MyHelloWorld\proj.android\bin" 現(xiàn)在由管理員組所有。  

  13. 成功: 此文件(或文件夾): "D:\cocos2dx\MyHelloWorld\proj.android\build.xml" 現(xiàn)在由管理員組所有。  

  14. 成功: 此文件(或文件夾): "D:\cocos2dx\MyHelloWorld\proj.android\build_native.sh" 現(xiàn)在由管理員組所有。  

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

授權(quán)everyone組


[plain]view plaincopy
  1. D:\cocos2dx\MyHelloWorld>icacls * /t /grant:r everyone:f  

  2. 已處理的文件: Classes  

  3. 已處理的文件: proj.android  

  4. 已處理的文件: Resources  

  5. (省略了中間的提示信息)  

  6. 已處理的文件: Resources\CloseNormal.png  

  7. 已處理的文件: Resources\CloseSelected.png  

  8. 已處理的文件: Resources\fps_p_w_picpaths-hd.png  

  9. 已處理的文件: Resources\fps_p_w_picpaths-ipadhd.png  

  10. 已處理的文件: Resources\fps_p_w_picpaths.png  

  11. 已處理的文件: Resources\HelloWorld.png  

  12. 已成功處理 65 個文件; 處理 0 個文件時失敗  

再切換到cygwin Terminal下,再次運(yùn)行build_native.sh包


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

  2. $ ./build_native.sh  

  3. (省略中間的編譯提示信息)  

  4. 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  

  5. 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  

  6. 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  

  7. 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  

  8. 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  

  9. collect2: ld returned 1 exit status  

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

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

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

發(fā)現(xiàn)還是報錯,同樣的是權(quán)限問題.這次是編譯鏈接后生成的靜態(tài)庫的權(quán)限問題。

jpeg.a,libcocos2d.a,libcocosdenshion.a,libgnustl_static.a,png.a,tiff.a,xml2.a
切換到D:\cocos2dx\MyHelloWorld\proj.android\obj\local\armeabi,同樣執(zhí)行上面的命令


[plain]view plaincopy
  1. D:\cocos2dx\MyHelloWorld\proj.android\obj\local\armeabi>takeown /f * /a /r  

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

再次切換到cygwin Terminal下


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

  2. $ ./build_native.sh  

  3. Using prebuilt externals  

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

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

  6. Gdbsetup       : libs/armeabi/gdb.setup  

  7. SharedLibrary  : libgame.so  

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

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

在eclipse中創(chuàng)建一個android project,注意選擇 Androdi Prolject from existing code


玩轉(zhuǎn)Android  cocos2d-x(一)創(chuàng)建、生成、運(yùn)行HelloWorld

在設(shè)備或者模擬器上運(yùn)行,出現(xiàn)了如下畫面就大功告成了。

玩轉(zhuǎn)Android  cocos2d-x(一)創(chuàng)建、生成、運(yùn)行HelloWorld


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI