根據前兩篇文章,我們大概搭建完成了開發環境,現在來建立Android工程和編譯:
1、cygwin編譯
進入cocos2d-x,用編輯器開啟create-android-project.bat,修改三個路徑:
@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.setlocal:: Check if it was run under cocos2d-x rootif not exist "%cd%\create-android-project.bat" echo Error!!! You should run it under cocos2dx root & pause & exit 2if not exist "%~dpn0.sh" echo Script "%~dpn0.sh" not found & pause & exit 3:: modify it to work under your environment set _CYGBIN=g:\cygwin\bin// 修改1if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & pause & exit 4:: modify it to work under your environmentset _ANDROIDTOOLS=g:\android\sdk\tools// 修改2if not exist "%_ANDROIDTOOLS%" echo Couldn't find android sdk tools at "%_ANDROIDTOOLS%" & pause & exit 5:: modify it to work under your environmentset _NDKROOT=g:\cygwin\android-ndk-r8e// 修改3if 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 "%CD%\%_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=%CD%\%_PROJECTNAME%echo Create android projectmkdir %_PROJECTDIR%echo Create Android project inside proj.androidcall "%_ANDROIDTOOLS%\android.bat" create project -n %_PROJECTNAME% -t %_TARGETID% -k %_PACKAGEPATH% -a %_PROJECTNAME% -p %_PROJECTDIR%\proj.androidcall "%_ANDROIDTOOLS%\android.bat" update project -l ../../cocos2dx/platform/android/java -p %_PROJECTDIR%\proj.android:: 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 "%cd%"') 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.hello
然後輸入工程名稱(注意不要輸入已有的檔案夾的名字,如果同名,會被覆蓋掉的),如helloworld,如:
然後選擇target id:機器上安裝的所有版本的sdk,我們選擇6,即2.3.2的sdk,按斷行符號就會建立工程:
注意下面紅色的框框,如果在上一篇文章最後的NDK環境變數配置成功就會出現這段文字。
進入g:\cocos2d-x目錄發現多了一個名為helloworld的目錄,裡麵包含三個目錄
其中Classes:是存放預設工程的C++檔案
proj.android 是android的eclipse工程項目
Resources 資源檔
接下來編譯helloworld工程,開啟cygwin,輸入 cd /cygdrive/g/cocos2d-x/helloworld/proj.android進入helloworld/proj.android
輸入./build_native.sh開始編譯:
這個過程會有點久,大家請耐心等等。注意了,編譯這個過程如果出現關於NDK_ROOT的錯誤,比如說找不到檔案,都是因為NDK環境變數配置出錯,筆者也在這個問題糾結了很久,最後是發現.bash_profile添加NDK路徑時候不是用UE開啟的,所以再一次強調必須用UE編輯器編輯。具體配置大家請看上一篇文章最後部分。
最後編譯成功如下:
2、匯入到Eclipse編譯
接下來就要把編譯好的Android工程匯入Eclipse裡面了,經過Eclipse編譯成功,則可以在手機上運行。
首先將helloworld裡面的proj.android匯入Eclipse中:
匯入之後,如果出現以下錯誤,就是你沒有把cocos2d-x的包匯入Eclipse工程裡面:
這時候選中工程右鍵 -> Build Path -> Link Source -> Browser,添加G:\cocos2d-x\cocos2dx\platform\android\java\src到項目中。
上述那種匯入的方法並不是一勞永逸的,現在介紹一種一勞永逸的。
修改xxx\cocos2d-x\template\android下的 copy_file.sh :
在copy_src_and_jni 函數中添加 cp -rf $COCOSJAVALIB_ROOT/src $APP_DIR/proj.android 。
以後每次匯入工程都會自動匯入cocos2d-x所需的包。
運行該工程,右鍵該工程,選擇Run as ->android application(從cocos2d-2.0-rc0a-x-2.0起,支援了open gl es2.0,預設的工程建立是要求運行於open gl es2.0上的,即目前模擬器還未支援,所以必須用真機去調試)。
到此,建立Android工程和編譯,再匯入到Eclipse編譯教程完成。