搭建cocos2d-x-android环境 Windows XP3 + Eclipse + NDKR7(或ndkr7b)+COCOS2DX(没有用到cygwin和minigw)...
版本:
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)
?
?
前提條件:假設已經成功安裝了JDK + Eclipse + CDT + ADT
?
下面講解如何在Eclipse中配置NDK ,運行cocos2d-x 自帶的 test 工程
?
目錄:
Step1. 下載?android-ndk-r7-windows.zip并解壓
Step2. 下載cocos2d-x,并解壓
Step3. ?Eclipse導入cocos2d-x?? test項目
Step4. ?Eclipse中配置NDK編譯環境
Step5. 編譯Android 項目
?
?
?
?
安裝步驟:
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導入cocos2d-x? ?test項目
?
打開Eclipse
依次點擊File –? New – Project… AndroidProject
?
選擇“Create Project ?from existing? Source”
如下圖所示,找到test.android? 目錄
點擊Next
選擇Android 2.1版本,這里直接點擊Next ,或是Finish就創建完成了
Step 4. Eclipse中 配置NDK編譯環境
?
首先選擇TestDemos項目,然后選擇菜單中的Project – Properties
選擇Bilders – New -- Program
打開后,進行如下的設置:
?
Location:一定要選擇ndk-build.cmd 命令
Working Directory:選擇TestDemo
注意:這里如果是 0.13 之后的版本,請不要用ndk-build.cmd 文件,請用 我寫的build_android_ndk_tests.bat (可以到我下面指定的地點下載)
下面選擇Refresh ?,配置如下:
越過Envirment ,直接點擊Build Options,配置如下圖所示:
設置完成后,點擊OK
?
Eclipse 會自動的進行編譯,耐心等待一會,下面是Eclipse開始自動進行編譯的過程
(注意編譯過程中有個小問題)
編譯過程中的問題:
解決方法:
將android-ndk-r7\sources\cxx-stl\gnu-libstdc++\libs\armeabi\libgnustl_static.a? 文件手動的copy到cocos2d-1.0.1-x-0.11.0\tests\test.android\obj\local\armeabi目錄下
以上問題其實是Google NDK R7版本的bug,會在下一版本中更改(?NDKR7B版本已經更改了這個bug,所以在NDKR7B上的話就不需要這一步了?)
http://code.google.com/p/android/issues/detail?id=22268
copy過去后執行下Project –-clean 動作,系統又會自動的進行編譯了,等待一點時間后,庫文件就會編譯完成
?
至此,cocos2d-x庫文件就編譯完成了
?
?看到網友的反饋,說是找不到assets資源或是黑屏現象
原因是:android下的assets目錄沒有任何的資源文件,所以需要我們手動的將cocos2d-1.0.1-x-0.11.0\tests\Res ?下的資源 復制到 ?cocos2d-1.0.1-x-0.11.0\tests\test.android\assets ?目錄中
復制完成后,還需要刪除Images\test_image_rgba4444.pvr.gz ? 文件
?
Step5. 編譯Android 項目
連接Android手機
依次點擊? Run as…Android Application
?
下面是我的小米手機的運行截圖
說明:本配置過程沒有用到Cygwin或是 minigw + msys,完全用的是NDK自帶的編譯器
?
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2012-04-17更新:
cocos2d-x 0.13版本有些變動,需要用我改寫的 ndk-build.cmd ?文件進行編譯且方法有2種,直接用NKD,脫離Eclipse編譯庫,第2種還是用Eclipse 輔助編譯庫
批處理下載地址(內有使用說明)
http://download.csdn.net/detail/maojudong/4233381
脫離繁重的Cygwin.NDK編譯脫離Cygwin
1. 請將文件放到cocos2d-1.0.1-x-0.13.0-beta目錄下面
2. 打開build_android_ndk_tests.bat 文件 修改set NDK_ROOT=D:\Work7\android-ndk-r7c到你的NDK實際路徑即可
3. jni/Application.mk ?文件中加入APP_PLATFORM :=android-5 ??
4. 在jni目錄中添加雙擊此批處理即可編譯庫文件
注1:0.13版本的cocosw2d-x 搭配 Eclipse 也可以使用這個批處理,不要使用NDK自帶的ndk-build.cmd
注2:此批處理可以脫離Eclipse,只用NDK自帶的編譯器即可,這里只用來編譯庫,如果要打包到APK還是需要Eclipse的,將剛剛編譯的庫導入即可
上面講解了兩種方法,自行選擇
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
build_android_ndk.bat ?需要在開始 --> 運行 ?CMD 后 運行的批處理
方法有2:
方法1: 運行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 版本都測試通過
脫離繁重的Cygwin(但是使用cocoss2d-x下的create-android-project.bat創建還是需要Cygwin,你可以嘗試更改這個文件,讓其不依賴Cygwin,我相信能夠做到,只是時間問題 ,呵呵)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2012-10-21更新:
時代在進步,蘋果發布了IOS6和iphone5,不知道蘋果過些天的iPad mini 怎么樣,cocos2dx也更新到2.0.3 ?,社區也在不斷的進步,由于這一段時間來工作特別忙,cocos2dx的日志有就沒有更新了,今天到社區下載了最新的2dx版本進行了簡單的測試,還好基本都通過
XP32位系統 + JDK1.6 +?
NDKR8b + 2dx (0.11/0.12/.13/2.0/2.0.1/2.0.2/2.0.3) 測試通過
NDKR8 + 2dx (0.11/0.12/.13/2.0/2.0.1/2.0.2/2.0.3) ??測試通過
全部編譯通過,沒有出現網友說的問題
說下注意點:
1. ?java編譯器使用1.6.x (不建議用1.5.x/1.7.x)
2. ?有些安裝了cygwin的,請暫時從PATH中屏蔽掉關于cygwin的內容
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 編譯),更早期的版本就沒有測試了,相信做項目也很少有人用0.10以前的版本了
5. ?Eclipse編譯環境中?2.0.3/2.0.2 /2.0.1 需要先導入\cocos2dx\platform\android\java項目,然后用Eclipse編譯出一個 jar文件,最后將這個jar文件導入到 tests 項目中的libs就可完成編譯(應一個網友的要求才這么說的,感謝他,是我的表述不清楚)
2.0.2 /2.0.1 中\cocos2dx\platform\android\java導入后,源代碼不是src目錄,卻是src_common 目錄,所以可以修改.classpath ? 文件,或是更改src_common到src是最簡單的方法
6. 不要用模擬器進行調試,模擬器的速度慢,導致加載時間長,最后黑屏,時間長了,就導致ANR(應用程序無響應),建議買個android 平板或是手機吧(現在很便宜,299元錢的android平板到處都有賣(我的公司就有賣),1000元錢可以買到雙核甚至4核的手機了)
如果非要用模擬器進行調試,請將AVD模擬器中添加 GPU emulation 屬性,并將值設置為yes就可以了
經過2個小時的測試發現 只有4.0.3 和4.1.2 兩個版本的模擬器顯示正常,且模擬器需要開啟GPU emulation 功能。
我的測試平臺:
2dx 2.0.3 版本+ MAC 10.8.2 + jdk1.6 + eclipse3.7.2?
模擬器開啟GPU功能?
2.2 ??模擬器很卡,且異常退出,無法操作 ? ? ? ? ? 結論:不通過,不能用于調試2dx ? ? ?
2.3.1 ?模擬器很卡,且異常退出,無法操作 ? ? ? ? 結論:不通過,不能用于調試2dx ? ? ?
2.3.3 ??模擬器很卡,且異常退出,無法操作 ? ? ? ?結論:不通過,不能用于調試2dx ? ?
3.X ? ? ?未測試
4.0 ? ? ?模擬器不能開啟,,且異常退出,無法操作 ? ? ? ?結論:不通過,不能用于調試2dx ? ?
4.0.3 ? ??2dx可以運行,可以調試
4.1.2 ? ? 2dx運行正常,可以調試
模擬器未開啟GPU功能?
2.2 ? ? ? 黑屏 ? ? ? ? ? ?結論:不通過,不能用于調試2dx ? ? ?
2.3.1 ? ?異常退出 ? ??結論:不通過,不能用于調試2dx
2.3.3 ? ?異常退出 ? ??結論:不通過,不能用于調試2dx
3.X ? ? ?未測試
4.0 ? ? ??異常退出 ? ??結論:不通過,不能用于調試2dx?
4.0.3 ? ?異常退出 ? ??結論:不通過,不能用于調試2dx
4.1.2 ? ?異常退出 ? ??結論:不通過,不能用于調試2dx
2dx中的論壇也有討論這個
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
這位兄弟的文章也不錯
http://www.raywenderlich.com/12065/how-to-create-a-simple-android-game
原因是?
Android 4.0.3 r2 以上的版本 才 增加GPU支持和CPU加速
Android4.2模擬器 要添加一行代碼
Cocos2dxActivity.java
<code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;">將代碼</code><code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;"> </code><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">gLSurfaceView</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">setEGLConfigChooser</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">(</span><span class="lit" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(128, 0, 0);">8</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"> </span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(128, 0, 0);">8</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(128, 0, 0);">8</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(128, 0, 0);">8</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(128, 0, 0);">16</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(128, 0, 0);">0</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">);?</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">添加到</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"></span><pre class="default prettyprint prettyprinted" name="code" style="white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; background-color: rgb(238, 238, 238); font-weight: bold; padding: 5px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; overflow: auto; width: auto; max-height: 600px;"><code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">gLSurfaceView</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">setCocos2dxRenderer</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">(</span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 139);">new</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;"> </span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(43, 145, 175);">Cocos2dxRenderer</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">());</span></code>的前面即可
祝你好運!
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2012-12-26更新:
世界末日沒有到來,生活還是要繼續,勤奮的2dx社區和2dx開發者發布了新的版本,連google也發布了NDKR8C/NDKR8D (R8D支持gcc4.7了,高興中...),之前我一直認為需要用一個批處理,其實適當的編寫配置文件,可以拋開我的bat批處理,下面簡單的介紹一下
Eclipse + NDK的編譯方法
方法1:在Application.mk 下加入如下代碼(根據實際路徑進行修改)
路徑中不能有空格,根據自己的實際路徑進行編寫
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 路徑分割符號是分號 “;” ,Linux 或者OS X 系統請更改為冒號 “:”
然后Eclipse中導入NDK路徑中的?ndk-build.cmd 文件,具體請參看文章的截圖
方法2:在Eclipse中
Edit Configuration中的 參數Arguments:中加入參數 根據自己的實際路徑進行編寫
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 路徑分割符號是分號 “;” ,Linux 或者OS X 系統請更改為冒號 “:”
NDK_MODULE_PATH:= ?或者用NDK_MODULE_PATH = 即等號前面的 冒號 ":" 可有可無
其中-j8 表示開啟的編譯線程數量,請根據自己的CPU核心數進行更改,如我電腦是的8核心CPU所以是 -j8
?
然后導入NDK路徑中的?ndk-build.cmd 文件,?具體請參看文章的截圖
?
下面的方法3和方法4就是我的老式方法,讀者可以優先選用上面的方法1和方法2
方法3:
Eclipse中 直接導入一個自己寫的批處理文件
build_android_ndk_tests2.1.0.bat ?這里不指定編譯的目錄
?
方法4:
先用build_android_ndk_tests2.1.0.bat 編譯出來一個jni庫文件,然后在Eclipse中
編譯帶有libs目錄庫文件就可以了(圖片等資源還是需要自己copy到指定的目錄),編譯出一個apk文件
轉載于:https://www.cnblogs.com/Anzhongliu/p/6092008.html
總結
以上是生活随笔為你收集整理的搭建cocos2d-x-android环境 Windows XP3 + Eclipse + NDKR7(或ndkr7b)+COCOS2DX(没有用到cygwin和minigw)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【学习笔记】C++ 核心编程(二)类和对
- 下一篇: PHP获取十月九号星期几,php日期获取