Cocos2d-x學習之建立Android工程和編譯

來源:互聯網
上載者:User

安裝好,相應的環境之後,我們便可以開始建立cocos2d-x 的android 工程了

進入cocs2d-x目錄,用文字編輯器開啟create-android-project.bat(在windows 7上如果正常雙擊,可能建立時有些檔案的許可權不足,導致建立工程不成,可以在此檔案的第一行加上cd /d %~dp0,然後右鍵以管理員身份運行)

找到以下幾個定義:

@echo off:: This script is used to create an android project.:: You should modify _ANDROIDTOOLS _CYGBIN _NDKROOT to work under your environment.:: Don't change it until you know what you do.cd /d %~dp0setlocal:: Check if it was run under cocos2d-x rootif not exist "�%\create-android-project.bat" echo Error!!! You should run it under cocos2dx root & pause & exit 2    if not exist "%~dpn0.sh" echo Script "%~dpn0.sh" not found & pause & exit 3:: modify it to work under your environment     set _CYGBIN=D:\cygwin\binif not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & pause & exit 4:: modify it to work under your environmentset _ANDROIDTOOLS=E:\android-sdk-windows\toolsif not exist "%_ANDROIDTOOLS%" echo Couldn't find android sdk tools at "%_ANDROIDTOOLS%" & pause & exit 5:: modify it to work under your environmentset _NDKROOT=E:\android-ndk-r8-windows\android-ndk-r8if not exist "%_NDKROOT%" echo Couldn't find ndk at "%_NDKROOT%" & pause & exit 6:: create android projectset /P _PACKAGEPATH=Please enter your package path. For example: org.cocos2dx.example:set /P _PROJECTNAME=Please enter your project name:if exist "�%\%_PROJECTNAME%" echo "%_PROJECTNAME%" exists, please use another name & pause & exit 7echo "Now cocos2d-x suppurts Android 2.1-update1, 2.2, 2.3 & 3.0"echo "Other versions have not tested."call "%_ANDROIDTOOLS%\android.bat" list targetsset /P _TARGETID=Please input target id:set _PROJECTDIR=�%\%_PROJECTNAME%echo Create android projectcall "%_ANDROIDTOOLS%\android.bat" create project -n %_PROJECTNAME% -t %_TARGETID% -k %_PACKAGEPATH% -a %_PROJECTNAME% -p %_PROJECTDIR%     :: Resolve ___.sh to /cygdrive based *nix path and store in %_CYGSCRIPT%for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%~dpn0.sh"') do set _CYGSCRIPT=%%A:: Resolve current dir to cygwin pathfor /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "�%"') do set _CURRENTDIR=%%A:: Resolve ndk dir to cygwin pathfor /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%_NDKROOT%"') do set _NDKROOT=%%A     :: Throw away temporary env vars and invoke script, passing any args that were passed to usendlocal & %_CYGBIN%\bash --login "%_CYGSCRIPT%" %_CURRENTDIR% %_PROJECTNAME% %_NDKROOT% %_PACKAGEPATH% "windows"pause

將_CYGBIN=設定為cycgwin\bin安裝的的絕對路徑。

將_ANDROIDTOOLS設定為android sdk 的tools絕對路徑

將_NDKROOT設定為android ndk的絕對路徑

修改完畢,儲存後

雙擊create-android-project.bat開始工程建立嚮導

首先是輸入包名(建議按照android的命名規則),如com.android.test

然後輸入工程名稱(注意不要輸入已有的檔案夾的名字,如果同名,會被覆蓋掉的),如testandroid,如:

然後選擇target id,

其會列出機器上安裝的所有版本的sdk,我們選擇6,即2.3.2的sdk.

進入g:\cocos2d-x目錄發現多了一個名為testandroid的目錄,裡麵包含三個目錄

其中Classes:是存放預設工程的C++檔案

proj.android 是android的eclipse工程項目

Resources 資源檔

下來我們開始編譯剛建立的testandroid項目

開啟cygwin,進入到testandroid/proj.android目錄,輸入 ./build_native.sh 開始編譯如:

執行完畢,發現編譯出錯,如:

發現報的是檔案 Permission denied 錯誤,考慮的是windows 7的環境,我們看下jni/helloword/mai.cpp的檔案的許可權。

結果在進jni目錄時,邊報無權訪問了,如:

我們不管,因為上面報的是具體檔案(main.cpp)檔案無許可權,而非檔案夾,說明編譯器已經能訪問到檔案夾裡面了,觀察下main.cpp的檔案許可權:

發現目前使用者(ming)都沒有讀寫的許可權,編譯當然報錯了。我們給它賦個完全控制的許可權,如下:

點擊應用,和確定,再次執行./build_native.sh

還是檔案許可權的問題,我們按之前的方法,重新賦權一下,再次編譯,如果過程中發現還有類似的問題,賦權即可,我為了省麻煩,寫了個快速賦權的註冊表檔案內容如下:

Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\runas]@="管理員取得所有權""NoWorkingDirectory"=""[HKEY_CLASSES_ROOT\*\shell\runas\command]@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F""IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"[HKEY_CLASSES_ROOT\exefile\shell\runas2]@="管理員取得所有權""NoWorkingDirectory"=""[HKEY_CLASSES_ROOT\exefile\shell\runas2\command]@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F""IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"[HKEY_CLASSES_ROOT\Directory\shell\runas]@="管理員取得所有權""NoWorkingDirectory"=""[HKEY_CLASSES_ROOT\Directory\shell\runas\command]@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t""IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"

以管理員身份運行這個檔案後,就可以為windows 7右鍵添加取得所有權的菜單。如:

如果再次出現有存取權限的問題,右鍵點擊下目錄,選擇管理員取得所有權即可。

最後編譯成功如下:

編譯成功之後,會直接在testandroid\proj.android\libs\armeabi這個目錄底下產生so檔案(libgame.so)

編譯完畢,下來就是在eclipse裡面編譯成apk檔案,並安裝運行一把。

1、將剛編譯完的工程匯入到eclipse中。

以管理員身份開啟eclipse(因為之前都是以管理員身份擷取的許可權的,否則會出現編譯時間許可權有問題的),選擇FILE->New->Android Project,然後選擇如下:

點擊next,選擇Build Target,如下:

運行該工程,右鍵該工程,選擇Run as ->android application(從cocos2d-2.0-rc0a-x-2.0起,支援了open gl es2.0,預設的工程建立是要求運行於open gl es2.0上的,即目前模擬器還未支援,所以必須用真機去調試)

如下:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.