最近須要用到android的ndk,可是在eclipse中,一直提示Method 'NewStringUTF' could not be resolved,諸如此類的錯誤。
可問題是,jni.h等一系列的依賴庫,我都已經導入了,而且也能正常的使用build來編譯出動態庫文件。可是sb的就是eclipse的cdt,仍舊會不停的提示這類的錯誤,致使整個項目沒辦法編譯過去。
後來,我先問了baidu,而後又問了google,最終折騰了兩天也沒辦法很好解決這個問題,只好苦逼的使用code::block來寫c的jni代碼,而後關閉eclipse的code 檢查功能,最終才使得項目能夠完整編譯過去。
後來我思考了一下,並作了一些實驗,發現這個估計是adt自己的一個bug,或者說是一個信號??首先,我使用adt的add native support library 來使得jni能夠合併到項目中。這時候我發現默認生成的是cpp文件。。c++??這個問題以前我一直忽略了,因此我乾脆使用c++來寫這個庫,結果我發如今cpp文件中,不管你是按照c++語法來寫,仍是c語法來寫,最終結果都是正常的。不會出現這種好似沒有導入的錯誤。
這不得不讓我感受是否google下一步的ndk開發,主要是支持c++了???
但是更加苦逼的是,我仍舊沒有好的解決辦法,總不能以前的代碼在用c++寫一遍吧?要不就是繼續關閉cdt的語法分析檢查,委曲求全的來繼續開發?這的確是一個苦逼的問題。
後來,我實在沒辦法只好去android的官網去看看是否又解決的辦法,嘿,別說還真讓我找到了。
android自己有一個定製的eclipse版本,我晚上的時候僅僅只是報着死馬當活馬醫的想法下載下來了,結果卻發如今這個定製eclipse版本中,竟然不會在有問題了?這不得不說是一個很是好的事情,我能夠繼續在eclipse下工做了,畢竟這個ide是我最喜歡的ide。
但是另外一方面,我仍舊是對這個問題感到困惑。我從eclipse的bug提交中發現早在2011年就有人反饋這個bug了,最終他本身關閉了這個bug,說已經解決了,可是如何解決卻沒有說。我想是不是從那時候開始就一直有這個問題呢?
最後說下個人開發環境:
ubuntu 12.04桌面版
eclipse 4.2.1/4.3(都不能用,或出現上文中我所說的問題)
Eclipse IDE with built-in
ADT 21.01(正常,終於解決了使用ndk開發的問題了)
下載地址:http://eveloper.android.com/intl/zh-CN/sdk/index.html#download
ps。不知道windows上開發的朋友,是否也會遇到相似的問題?李昱但願本文能對在linux下開發的朋友起到必定的幫助,畢竟我翻了baidu,google幾百頁了,也沒有找到完美解決的方案。固然,若是您直接使用c++作jni的開發,那麼這個問題應該不會影響到你的。