(三) 搭建cocos2d-x-android环境 Windows XP3 + Eclipse + NDKR7(或ndkr7b)+COCOS2DX(没有用到cygwin和minigw)
轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/maojudong/article/details/7261986
注
2012-12-26本文更新,更新內(nèi)容請(qǐng)移步到文章的最后
版本:
Windows XP3
JDK1.6
Eclipse 3.7.1 (需要C++插件CDT)
ADT 16.0.1
NDK7 (或是NDKR7B)
?
cocos2d-1.0.1-x-0.11.0.zip
?
?
?
注意:本教程沒有用到minigw +msys,也沒有用到cygwin ,如果用到的是NDK R6B 或是以前的版本,則需要安裝cygwin(或是minigw + msys)
?
?
前提條件:假設(shè)已經(jīng)成功安裝了JDK + Eclipse + CDT + ADT
?
下面講解如何在Eclipse中配置NDK ,運(yùn)行cocos2d-x 自帶的 test 工程
?
目錄:
Step1. 下載 android-ndk-r7-windows.zip并解壓
Step2. 下載cocos2d-x,并解壓
Step3. ?Eclipse導(dǎo)入cocos2d-x?? test項(xiàng)目
Step4. ?Eclipse中配置NDK編譯環(huán)境
Step5. 編譯Android 項(xiàng)目
?
?
?
?
安裝步驟:
Step1. 下載 android-ndk-r7-windows.zip并解壓
?
下載地址:
http://dl.google.com/android/ndk/android-ndk-r7-windows.zip
?
下載完成后,將其解壓到電腦的任何目錄中,例如:
Step2. 下載cocos2d-x,并解壓
?
下載地址:
http://cocos2d-x.googlecode.com/files/cocos2d-1.0.1-x-0.11.0.Zip
?
下載完成后,將其解壓到電腦的任何目錄中,例如:
Step3. Eclipse導(dǎo)入cocos2d-x? ?test項(xiàng)目
?
打開Eclipse
依次點(diǎn)擊File –? New – Project… AndroidProject
?
選擇“Create Project ?from existing? Source”
如下圖所示,找到test.android? 目錄
點(diǎn)擊Next
選擇Android 2.1版本,這里直接點(diǎn)擊Next ,或是Finish就創(chuàng)建完成了
Step 4. Eclipse中 配置NDK編譯環(huán)境
?
首先選擇TestDemos項(xiàng)目,然后選擇菜單中的Project – Properties
選擇Bilders – New -- Program
打開后,進(jìn)行如下的設(shè)置:
?
Location:一定要選擇ndk-build.cmd 命令
Working Directory:選擇TestDemo
注意:這里如果是 0.13 之后的版本,請(qǐng)不要用ndk-build.cmd 文件,請(qǐng)用 我寫的build_android_ndk_tests.bat (可以到我下面指定的地點(diǎn)下載)
下面選擇Refresh ?,配置如下:
越過Envirment ,直接點(diǎn)擊Build Options,配置如下圖所示:
設(shè)置完成后,點(diǎn)擊OK
?
Eclipse 會(huì)自動(dòng)的進(jìn)行編譯,耐心等待一會(huì),下面是Eclipse開始自動(dòng)進(jìn)行編譯的過程
(注意編譯過程中有個(gè)小問題)
編譯過程中的問題:
解決方法:
將android-ndk-r7\sources\cxx-stl\gnu-libstdc++\libs\armeabi\libgnustl_static.a? 文件手動(dòng)的copy到cocos2d-1.0.1-x-0.11.0\tests\test.android\obj\local\armeabi目錄下
以上問題其實(shí)是Google NDK R7版本的bug,會(huì)在下一版本中更改( NDKR7B版本已經(jīng)更改了這個(gè)bug,所以在NDKR7B上的話就不需要這一步了 )
http://code.google.com/p/android/issues/detail?id=22268
copy過去后執(zhí)行下Project –-clean 動(dòng)作,系統(tǒng)又會(huì)自動(dòng)的進(jìn)行編譯了,等待一點(diǎn)時(shí)間后,庫文件就會(huì)編譯完成
?
至此,cocos2d-x庫文件就編譯完成了
?
?看到網(wǎng)友的反饋,說是找不到assets資源或是黑屏現(xiàn)象
原因是:android下的assets目錄沒有任何的資源文件,所以需要我們手動(dòng)的將cocos2d-1.0.1-x-0.11.0\tests\Res ?下的資源 復(fù)制到 ?cocos2d-1.0.1-x-0.11.0\tests\test.android\assets ?目錄中
復(fù)制完成后,還需要?jiǎng)h除Images\test_image_rgba4444.pvr.gz ? 文件
?
Step5. 編譯Android 項(xiàng)目
連接Android手機(jī)
依次點(diǎn)擊? Run as…Android Application
?
下面是我的小米手機(jī)的運(yùn)行截圖
說明:本配置過程沒有用到Cygwin或是 minigw + msys,完全用的是NDK自帶的編譯器
?
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2012-04-17更新:
cocos2d-x 0.13版本有些變動(dòng),需要用我改寫的 ndk-build.cmd ?文件進(jìn)行編譯且方法有2種,直接用NKD,脫離Eclipse編譯庫,第2種還是用Eclipse 輔助編譯庫
批處理下載地址(內(nèi)有使用說明)
http://download.csdn.net/detail/maojudong/4233381
脫離繁重的Cygwin.NDK編譯脫離Cygwin
1. 請(qǐng)將文件放到cocos2d-1.0.1-x-0.13.0-beta目錄下面
2. 打開build_android_ndk_tests.bat 文件 修改set NDK_ROOT=D:\Work7\android-ndk-r7c到你的NDK實(shí)際路徑即可
3. jni/Application.mk ?文件中加入APP_PLATFORM :=android-5 ??
4. 在jni目錄中添加雙擊此批處理即可編譯庫文件
注1:0.13版本的cocosw2d-x 搭配 Eclipse 也可以使用這個(gè)批處理,不要使用NDK自帶的ndk-build.cmd
注2:此批處理可以脫離Eclipse,只用NDK自帶的編譯器即可,這里只用來編譯庫,如果要打包到APK還是需要Eclipse的,將剛剛編譯的庫導(dǎo)入即可
上面講解了兩種方法,自行選擇
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
build_android_ndk.bat ?需要在開始 --> 運(yùn)行 ?CMD 后 運(yùn)行的批處理
方法有2:
方法1: 運(yùn)行build_android_ndk.bat -C tests/test.android/jni
方法2:?
#cd tests/test.android/jni
#..\..\..\build_android_ndk.bat ?
效果是一樣的
0.11 0.12 0.13 版本都測(cè)試通過
脫離繁重的Cygwin(但是使用cocoss2d-x下的create-android-project.bat創(chuàng)建還是需要Cygwin,你可以嘗試更改這個(gè)文件,讓其不依賴Cygwin,我相信能夠做到,只是時(shí)間問題 ,呵呵)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2012-10-21更新:
時(shí)代在進(jìn)步,蘋果發(fā)布了IOS6和iphone5,不知道蘋果過些天的iPad mini 怎么樣,cocos2dx也更新到2.0.3 ?,社區(qū)也在不斷的進(jìn)步,由于這一段時(shí)間來工作特別忙,cocos2dx的日志有就沒有更新了,今天到社區(qū)下載了最新的2dx版本進(jìn)行了簡單的測(cè)試,還好基本都通過
XP32位系統(tǒng) + JDK1.6 +?
NDKR8b + 2dx (0.11/0.12/.13/2.0/2.0.1/2.0.2/2.0.3) 測(cè)試通過
NDKR8 + 2dx (0.11/0.12/.13/2.0/2.0.1/2.0.2/2.0.3) ??測(cè)試通過
全部編譯通過,沒有出現(xiàn)網(wǎng)友說的問題
說下注意點(diǎn):
1. ?java編譯器使用1.6.x (不建議用1.5.x/1.7.x)
2. ?有些安裝了cygwin的,請(qǐng)暫時(shí)從PATH中屏蔽掉關(guān)于cygwin的內(nèi)容
3. ?jni目錄中要有Application.mk文件,且其中一定要有APP_PLATFORM :=android-5 (2dx 的 2.0.x系列至少為android-5, ? ? ? ? 1.x至少為android-4)Eclipse編譯則不需要這一步,不過建議還是寫上好些
4. ?2dx的0.10版本,ndk_build.cmd 不能完成編譯,需要安裝cygwin才能編譯(或者linux/macos 編譯),更早期的版本就沒有測(cè)試了,相信做項(xiàng)目也很少有人用0.10以前的版本了
5. ?Eclipse編譯環(huán)境中?2.0.3/2.0.2 /2.0.1 需要先導(dǎo)入\cocos2dx\platform\android\java項(xiàng)目,然后用Eclipse編譯出一個(gè) jar文件,最后將這個(gè)jar文件導(dǎo)入到 tests 項(xiàng)目中的libs就可完成編譯(應(yīng)一個(gè)網(wǎng)友的要求才這么說的,感謝他,是我的表述不清楚)
2.0.2 /2.0.1 中\(zhòng)cocos2dx\platform\android\java導(dǎo)入后,源代碼不是src目錄,卻是src_common 目錄,所以可以修改.classpath ? 文件,或是更改src_common到src是最簡單的方法
6. 不要用模擬器進(jìn)行調(diào)試,模擬器的速度慢,導(dǎo)致加載時(shí)間長,最后黑屏,時(shí)間長了,就導(dǎo)致ANR(應(yīng)用程序無響應(yīng)),建議買個(gè)android 平板或是手機(jī)吧(現(xiàn)在很便宜,299元錢的android平板到處都有賣(我的公司就有賣),1000元錢可以買到雙核甚至4核的手機(jī)了)
如果非要用模擬器進(jìn)行調(diào)試,請(qǐng)將AVD模擬器中添加 GPU emulation 屬性,并將值設(shè)置為yes就可以了
經(jīng)過2個(gè)小時(shí)的測(cè)試發(fā)現(xiàn) 只有4.0.3 和4.1.2 兩個(gè)版本的模擬器顯示正常,且模擬器需要開啟GPU emulation 功能。
我的測(cè)試平臺(tái):
2dx 2.0.3 版本+ MAC 10.8.2 + jdk1.6 + eclipse3.7.2?
模擬器開啟GPU功能?
2.2 ??模擬器很卡,且異常退出,無法操作 ? ? ? ? ? 結(jié)論:不通過,不能用于調(diào)試2dx ? ? ?
2.3.1 ?模擬器很卡,且異常退出,無法操作 ? ? ? ? 結(jié)論:不通過,不能用于調(diào)試2dx ? ? ?
2.3.3 ??模擬器很卡,且異常退出,無法操作 ? ? ? ?結(jié)論:不通過,不能用于調(diào)試2dx ? ?
3.X ? ? ?未測(cè)試
4.0 ? ? ?模擬器不能開啟,,且異常退出,無法操作 ? ? ? ?結(jié)論:不通過,不能用于調(diào)試2dx ? ?
4.0.3 ? ??2dx可以運(yùn)行,可以調(diào)試
4.1.2 ? ? 2dx運(yùn)行正常,可以調(diào)試
模擬器未開啟GPU功能?
2.2 ? ? ? 黑屏 ? ? ? ? ? ?結(jié)論:不通過,不能用于調(diào)試2dx ? ? ?
2.3.1 ? ?異常退出 ? ??結(jié)論:不通過,不能用于調(diào)試2dx
2.3.3 ? ?異常退出 ? ??結(jié)論:不通過,不能用于調(diào)試2dx
3.X ? ? ?未測(cè)試
4.0 ? ? ??異常退出 ? ??結(jié)論:不通過,不能用于調(diào)試2dx?
4.0.3 ? ?異常退出 ? ??結(jié)論:不通過,不能用于調(diào)試2dx
4.1.2 ? ?異常退出 ? ??結(jié)論:不通過,不能用于調(diào)試2dx
2dx中的論壇也有討論這個(gè)
http://cocos2d-x.org/boards/6/topics/12563
http://www.cocos2d-x.org/boards/6/topics/12563?r=19274#message-19274
http://stackoverflow.com/questions/13702538/cocos2d-x-v-2-0-4-fatal-exception-glthread-when-run-on-android-emulator
這位兄弟的文章也不錯(cuò)
http://www.raywenderlich.com/12065/how-to-create-a-simple-android-game
原因是?
Android 4.0.3 r2 以上的版本 才 增加GPU支持和CPU加速
Android4.2模擬器 要添加一行代碼
Cocos2dxActivity.java
將代碼 gLSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 0);? 添加到 gLSurfaceView.setCocos2dxRenderer(new Cocos2dxRenderer());的前面即可
祝你好運(yùn)!
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2012-12-26更新:
世界末日沒有到來,生活還是要繼續(xù),勤奮的2dx社區(qū)和2dx開發(fā)者發(fā)布了新的版本,連google也發(fā)布了NDKR8C/NDKR8D (R8D支持gcc4.7了,高興中...),之前我一直認(rèn)為需要用一個(gè)批處理,其實(shí)適當(dāng)?shù)木帉懪渲梦募?#xff0c;可以拋開我的bat批處理,下面簡單的介紹一下
Eclipse + NDK的編譯方法
方法1:在Application.mk 下加入如下代碼(根據(jù)實(shí)際路徑進(jìn)行修改)
路徑中不能有空格,根據(jù)自己的實(shí)際路徑進(jìn)行編寫
NDK_MODULE_PATH:=D:\work7\cocos2d-2.1beta3-x-2.1.0; \
D:\work7\cocos2d-2.1beta3-x-2.1.0/cocos2dx/platform/third_party/android/prebuilt \
?
注意NDK_MODULE_PATH 路徑分割符號(hào)是分號(hào) “;” ,Linux 或者OS X 系統(tǒng)請(qǐng)更改為冒號(hào) “:”
然后Eclipse中導(dǎo)入NDK路徑中的?ndk-build.cmd 文件,具體請(qǐng)參看文章的截圖
方法2:在Eclipse中
Edit Configuration中的 參數(shù)Arguments:中加入?yún)?shù) 根據(jù)自己的實(shí)際路徑進(jìn)行編寫
NDK_MODULE_PATH:=D:\work7\cocos2d-2.1beta3-x-2.1.0;D:\work7\cocos2d-2.1beta3-x-2.1.0/cocos2dx/platform/third_party/android/prebuilt ? -j8
注意NDK_MODULE_PATH 路徑分割符號(hào)是分號(hào) “;” ,Linux 或者OS X 系統(tǒng)請(qǐng)更改為冒號(hào) “:”
NDK_MODULE_PATH:= ?或者用NDK_MODULE_PATH = 即等號(hào)前面的 冒號(hào) ":" 可有可無
其中-j8 表示開啟的編譯線程數(shù)量,請(qǐng)根據(jù)自己的CPU核心數(shù)進(jìn)行更改,如我電腦是的8核心CPU所以是 -j8
?
然后導(dǎo)入NDK路徑中的?ndk-build.cmd 文件,?具體請(qǐng)參看文章的截圖
?
下面的方法3和方法4就是我的老式方法,讀者可以優(yōu)先選用上面的方法1和方法2
方法3:
Eclipse中 直接導(dǎo)入一個(gè)自己寫的批處理文件
build_android_ndk_tests2.1.0.bat ?這里不指定編譯的目錄
?
方法4:
先用build_android_ndk_tests2.1.0.bat 編譯出來一個(gè)jni庫文件,然后在Eclipse中
編譯帶有l(wèi)ibs目錄庫文件就可以了(圖片等資源還是需要自己copy到指定的目錄),編譯出一個(gè)apk文件
?
總結(jié)
以上是生活随笔為你收集整理的(三) 搭建cocos2d-x-android环境 Windows XP3 + Eclipse + NDKR7(或ndkr7b)+COCOS2DX(没有用到cygwin和minigw)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信内置浏览器缓存清理
- 下一篇: 就读体验丨香港科技大学工学院科技领导及创