安裝好,相應的環境之后,我們便可以開始創建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 %~dp0 setlocal :: Check if it was run under cocos2d-x root if 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\bin if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & pause & exit 4 :: modify it to work under your environment set _ANDROIDTOOLS=E:\android-sdk-windows\tools if not exist "%_ANDROIDTOOLS%" echo Couldn't find android sdk tools at "%_ANDROIDTOOLS%" & pause & exit 5 :: modify it to work under your environment set _NDKROOT=E:\android-ndk-r8-windows\android-ndk-r8 if not exist "%_NDKROOT%" echo Couldn't find ndk at "%_NDKROOT%" & pause & exit 6 :: create android project set /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 7 echo "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 targets set /P _TARGETID=Please input target id: set _PROJECTDIR=�%\%_PROJECTNAME% echo Create android project call "%_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 path for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "�%"') do set _CURRENTDIR=%%A :: Resolve ndk dir to cygwin path for /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 us endlocal & %_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上的,即目前模擬器還未支持,所以必須用真機去調試)
如下: