近幾天看JNI的問題,都說要怎麼編譯,要輸入不少命令行的東西。我以爲既然有IDE應用開發環境,就會有相應的JNI開發,很方便的沒必要輸入什麼命令行的。 html
SDK應用經常使用的編譯環境是Eclipse,而後就想像SDK同樣開發NDK程序。下面是我從網上搜來的一些步驟: android
1.環境問題:Windows下用Eclipse編程,編譯含Jni代碼的程序,須要Cygwin和Android NDK開發包。 編程
安裝過程,查看如下連接:[1-6步驟] bash
http://www.cnblogs.com/skyseraph/archive/2012/03/16/2400567.html
函數
這樣,就完成了Cygwin和NDK的環境安裝,並檢測了可用性。 ui
2.而後,我想在Eclipse上編譯,而不是在Cygwin下輸入命令編譯。 spa
下面的一個文檔是我從網上下到的,後來找不到出處了,好像不少地方都有這個文檔,我也懶得去找出處了,我把用到的部分帖在這裏。
.net
這是一個編譯NDK中的一個Sample的過程,根據本身的操做稍微作了修改: 命令行
一、 Eclipse下調試samples 調試 選擇new—>project-->androidproject from existing Code 接下來以下圖所示-> Next 接下來選擇Source Code的位置(此處的解釋是能夠選擇拷貝samples目錄下hello-jni到本身的workspace,也可不選擇,直接在NDK下的samples裏建立工程) 而後,finish,完成了建立。 二、 工程編譯 工程編譯以前須要作一些設置,第一步設定一個新的Builder,用於編譯Jni代碼: projec->properties->builders選項卡:選擇New,彈出框中,選擇Program 選擇program,配置以下圖: Name欄填入自定義的名稱; Main選項卡中,Location設置到{cygwin-root}\bin\bash.exe 個人是:D:\ProgramFiles\cygwin\bin\bash.exe Working Directory設置到當前工程目錄:D:\Android_WorkSpace\HelloJni Arguments設置,這個是對Cygwin的命令行: --login -c "cd /cygdrive/d/Android_WorkSpace/HelloJni && $NDK/ndk-build" 注意選擇你本身的真實目錄,別抄個人,否則你死定了。 綠色是工程路徑,紅色是Cygwin設置的NDK路徑。點擊 Apply 接着配置Refresh選項 再配置Build Options選項 特別要注意選擇specify resources,由於要編譯C++,因此必須選擇jni目錄的C++ code ,以下圖所示 finish->Apply->ok->ok 當以上步驟都正確配置無誤,保存配置後應該就會自動編譯jni目錄下的C相關代碼並輸出相應的.so庫文件到工程的libs目錄下,libs目錄會自動建立。(apk也自動在bin目錄裏生成,可直接拷貝到手機上安裝運行) 這樣,就能夠和運行SDK程序同樣,運行包含Jni代碼的Android程序了。 Run->Run As -> Android Application. |
上面這個例子是編譯的NDK自帶的一個Sample工程 Hello Jni。脫離這個Sample編譯個徹底是本身的工程也和這個同樣。
個人作法是,建立一個TestJni工程,把Hello Jni的Java代碼和Jni文件夾拷貝到本身的目錄下,而後按照上面的設置進行。開始的時候有問題,運行說是找不到庫,最後發現是我本身犯了個低級的錯誤,由於新建的工程和Sample引出的工程的包路徑不一樣,因此,在C文件中函數名的定義就會有相應的改變(Java_包名段1_包名段2_..._包名段n_類名_方法名),這樣就是簡單Jni程序的開發過程了。
最後給出一個站內的連接: