安裝好,相應的環境之後,我們便可以開始建立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上的,即目前模擬器還未支援,所以必須用真機去調試)
如下: