NDK學習總結

來源:互聯網
上載者:User

學習了NDK有一段時間了,自學真的蠻辛苦的,所以做一下筆記:

如今NDK已經出到了R5了,前段時間一直用android-ndk-1.6_r1-windows這個低版本的。

第一步,使用NDK前必須安裝Cygwin,先去網上找個Cygwin最新版本的,才幾十兆。然後找到E:/Cygwin/home/Administrator下的.bash_profile檔案,在尾部加入

NDK=/cygdrive/E/Android/NDK/android-ndk-r5-windows/android-ndk-r5

export NDK

這個是讓Cygwin指定NDK路徑輸入命令cd $NDK就可以進入到NDK的目錄

 

第二步,使用jni編譯標頭檔.h,

 

編譯jni時要包含包名,首先進入項目根目錄,然後javah -classpath ../TestJni/bin com.test.Test

就是javah -classpath ../項目名/bin com.test.<類名>

 

 

第三步,編譯,開啟Cygwin,輸入命令cd 加上指定項目的jni目錄,然後輸入$NDK/ndk-build進行編譯

 

第四步,添加Android.mk檔案,裡面屬性有

 

LOCAL_MODULE    := FirstJni   這個為項目名

LOCAL_SRC_FILES := hello-jni.c   這個為要編譯的c檔案,用NDK R5編譯成的so前面會自動加上一個lib,但我們在

 static{

    System.loadLibrary("FirstJni");

    }時不需要前面的lib字串。

 

 

編譯成功後控制台出現提示

Compile thumb  : FirstJni <= hello-jni.c

SharedLibrary  : libFirstJni.so

Install        : libFirstJni.so => libs/armeabi/libFirstJni.so

 

如果出現: java.lang.UnsatisfiedLinkError,可能是因為你的c檔案中的jninative與java上的工程包名不一樣所導致,這樣將不能loadLibrary庫檔案

 

 

接下來是如何將Cygwin,NDK綁定到eclipse上面,右鍵工程properties選擇build選項,new一個program,在location上輸入E:/Cygwin/bin/bash.exe,在working directory輸入E:/Cygwin/bin/,在Arguments輸入

--login -c "cd /cygdrive/D/workspace/FirstJni/jni &&  $NDK/ndk-build"

上面都是我自己電腦的檔案目錄。切換到refresh標籤下,勾選refresh source,轉到build Options,勾選allocate,after,3個during,specefy,選擇工程中的jni目錄,這樣就完成了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.