NDK開發 eclipse相關開發環境的搭建

    開發環境:windows+eclipse+NDK+cygwin php

(推薦這個偶然發現的音樂,聽着心情就會變好)
android

    在《android初涉NDK,從零打造你的第一個demo》(http://my.oschina.net/sosofy/blog/78353)中,我把打造第一個jni相關demo的過程大體介紹了一下,由於該工程的功能也好,代碼也好都是很是很是淺顯易懂的,因此用notePad++之類的文本編輯工具就能直接寫好。可是若是當native code的邏輯很是複雜,代碼工做量也很是之大的話,不是大神而且剛剛開始接觸JNI開發的你我在不借助IDE的狀況下,想必十分DT。好在eclipse中也很多好用的插件幫助咱們解決這一難題。 ios

    廢話說完,進入正題。首先是CDT插件的安裝,官方地址:http://www.eclipse.org/cdt/downloads.php在該頁面找到你須要的版本下載安裝(PS:貌似該網頁提供的在線安裝的地址失效Orz,因此仍是下到本地安裝吧)。安裝完成以後,咱們如今就能夠用eclipse寫c/c++代碼了(熟悉vs開發環境的童鞋可能須要適應一下)。在上次的demo中,咱們是單獨編寫JNI相關代碼而後編譯獲得so文件,在拷貝到android工程中,這個過程有點繁瑣,有時可能還會忘記,尤爲是在之後調試的時候,反覆地重複該過程會讓人崩潰吧!在安裝了CDT後,咱們把上次的C的工程部分的D:\myfirstJNISO中的jni文件夾整個拷貝到android工程MyFirstJNI目錄下(若是沒有,稍後我會上傳相關工程代碼,不過最好仍是本身實際動手作一下會比較好:D),refresh,如今咱們的工程應該是這樣的: c++

標記的部分就是咱們新添加進來的jni實現部分。
windows

如今不要急着編譯,不然各類error可能會打擊咱們繼續下去的信心。接下來,咱們須要把這個android工程轉換成C/C++工程進行一些開發,具體操做:File->New->Other,以後如圖: bash


Next以後選取MyFirstJNI工程其餘選項默認便可。 app

如今咱們的工程已經轉換成C工程了,打開相關的.h.c文件看看,Oh,No。是否是各類error,緣由是咱們尚未在CDT中設置相關環境變量,編譯器找不到jni相關頭文件形成的。設置過程以下:Window->Preference 而後如圖定位: eclipse


在Environment中添加一些必要的環境變量,具體以下: 工具

CPLUS_INCLUDE_PATH(這個隨便你取):D:\Android\android-sdk\android-ndk-r8b\platforms\android-14\arch-arm\usr\include;D:\Android\android-sdk\android-ndk-r8b\sources\cxx-stl\stlport\stlport ui

(PS:紅色部分是你安裝NDK目錄中你須要的相關平臺的頭文件,我這裏選的最新的是14,能夠根據具體要求選擇,籃色部分則是一些C++中經常使用的頭文件,好比:iostream,還有中間的";"別忘了)

CPLUS_INCLUDE_LIB_PATH(一樣as you wish):D:\Android\android-sdk\android-ndk-r8b\platforms\android-14\arch-arm\usr\lib

添加完成後是這樣的:


下面咱們要爲咱們的工程設置一個專屬的編譯器,由於在windows下,咱們沒法直接運行ndk-build來編譯咱們的JNI代碼,那麼怎麼作呢?往下看:

在咱們的工程MyFirstJNI上右擊,選擇屬性,接着選擇"Builders",如圖:


 那個紅色的」NDK_Builder「就是咱們要建立的專屬的編譯器,方法:點擊New出現


(Name填上你喜歡的名字;①中是你安裝的cygwin中bash.exe的路徑②是bash.exe所在的目錄③中則是運行bash.exe時的命令行參數;這些配置說咱們要啓動bash.exe而後定位到咱們的MyFirstJNI工程目錄而後執行$NDK/ndk-build,簡單的說就把咱們以前的手動過程用命令行替代了,這也就是爲何是專屬編譯器的緣由

接着切換到Refresh選項卡,而後照着圖片配置:


(很簡單吧,告訴系統這個編譯器是指定工程的)

再切換到Build Options選項卡,設置以下:


這裏主要是設置自動編譯的時機,注意紅色部分,這裏須要點擊按鈕選定咱們的MyFirstJNI工程,這樣咱們MyFirstJNI的專屬編譯器就建立完成了。回到屬性界面,是否是多個一個NDK_Builder,這裏須要把這個編譯器Up到最上面,不然咱們修改JNI代碼須要編譯兩次才能生效。

如今試試,咱們建立的編譯器能不能正常工做,Project->Clean...,Console中若是輸出這樣的就說明咱們成功了


可是注意紅色的部分,雖然咱們已經能正確的編譯出so文件了,可是工程此時還有錯誤:


咱們已經解決了這麼多的問題和麻煩,怎麼能在這卡住?這個error出現是由於咱們在將android工程轉化爲C/C++工程形成的,再次打開MyFirstJNI的屬性對話框,如圖:


看到沒,咱們的工程本身是有編譯選項的,make這個原本是在*nix系統中使用的,由於咱們以前已經建立了專屬的編譯器,因此這裏將Builder Type選擇爲」Internal builder「,這樣再clean工程就能夠了。(PS:更簡單的方法是在當初創建專屬編譯器的時候,將CDT Builder的勾選狀態取消,而後多refresh幾回或者暴力點重啓eclipse)

    對了,有些人可能打開該對話框發現Builder Type是不可用狀態,不要緊解決方法以下:


照着上圖所示設置,而後再返回到以前的那個設置界面,是否是能選擇了?

    好了,我發現講的有點羅嗦:D,如今咱們就能在eclipse中直接開發JNI了而且也能很方便的編譯。因爲我接觸的時間也不長,因此講的不清楚的地方或者有誤的地方,還但願你們指正,共同進步。

關於調試的部分,windows下的配置,我還在研究,有進展了更新!!

    最後,推薦一款JNI開發相關的插件sequoyah,在線安裝地址:http://download.eclipse.org/sequoyah/updates/2.0/

注意要將」Group items by category「取消,不然看不到插件列表,咱們只須要安裝上圖所選的就好了,安裝完成後須要進行一些基本設置

如今右擊任何一個android工程,右擊選擇」Android tools「出現下圖則表示安裝成功

相關文章
相關標籤/搜索