http://blog.k-res.net/archives/1505.html
問題爲編譯cocos2d-x創建的android項目時,原生代碼部分編譯腳本build_native.sh觸發的NDK編譯警告被當作錯誤處理,項目實際編譯生成成功了但是Eclipse不能運行!
開發環境:
Mac OSX ML 10.8.3
Android Developer Tools Build: v21.1.0-569685 (developer.android.com下載的整合ADT SDK的Eclipse)
android-ndk-r8e 64bit
cocos2d-2.1rc0-x-2.1.2-hotfix
通過cocos2d-x自帶的create-android-project.sh腳本生成項目後Eclipse使用導入已存在項目(不拷貝到工作目錄)後編譯,發現自動生成的Hello
World項目模板並未添加Native支持,於是右鍵項目Android Tools-》添加原生支持,之後項目加入了CDT部分內容,然後按照之前導入過的TestCpp示例項目,設置C/C++ Build參數,這裏還遇到一個小問題,就是示例項目寫的是bash ${ProjDirPath}/build_native.sh這樣,而如果我在新建的項目中照抄這個命令行的話,會出現bash命令前被自動加入了NDK目錄,然後導致找不到bash執行失敗,我的解決方法是直接寫入絕對路徑/bin/bash!再有就是如果提示NDK_ROOT未定義的話,而又不想修改~/.bash_profile,那麼可以在C/C++
Build->Enviroment中加入NDK_ROOT環境變量定義解決。
都設置好後,NDK成功開始編譯,然後就會出現
android-ndk-r8e/build/core/add-application.mk:128: Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml
這樣的提示,並被作爲Errors列在了Eclipse的錯誤列表裏,最終導致雖然成功生成了libgame.so但項目卻不能運行!解決方法是在Eclipse偏好設置-> C/C++ -> Build -> Settings的Error Parsers的CDT GNU C/C++ Error Parser中加入一條新的Pattern並作爲警告處理:
Severity: Warning Pattern: (.*?):(\d+): Android NDK: WARNING:(.*) File: $1 Line: $2 Description: $3
並且一定要注意新加入的這條要Move Up到一定的高度,從而提高優先級纔可以,修改後重新編譯項目Warning被正確的當作Warning處理且不會影響項目運行了。
===========
補充,eclipse要退出後重新進才行。