天天看點

Android NDK環境搭建及調用JNI的簡單步驟

Java Native Interface (JNI)标準是java平台的一部分,它允許Java代碼和其他語言寫的代碼進行互動。JNI 是本地程式設計接口,它使得在 Java 虛拟機 (VM) 内部運作的 Java 代碼能夠與用其它程式設計語言(如 C、C++ 和彙編語言)編寫的應用程式和庫進行互動操作。

2. 在項目中建立一個名為jni的檔案夾,在jni中新增Android.mk檔案,檔案内容如下:

LOCAL_MODULE:目前子產品的名稱

LOCAL_SHARED_LIBRARIES:目前子產品需要依賴的共享庫。 

LOCAL_SRC_FILES:所要調用的C源碼

3. 把PhotoUtil.c檔案複制到jni目錄下

PhotoUtil.c,包含一個圖檔處理方法:

方法Java_com_wangjie_customviews_PicturesDialog_functionToBlur的取名方式:

Java_:固定

com_wangjie_customviews:java包名

PicturesDialog:java類名

functionToBlur:java使用的方法名

4. 編譯C源碼,生産so庫檔案

進入jni目錄:

ndk-build 或者

ndk-build APP_PLATFORM=android-8

執行完畢之後,android項目的libs目錄下就會生成so檔案:

\libs\armeabi\libPhotoUtil.so

5. 在android中java代碼調用:

加載photoUtil庫(libPhotoUtil.so)

并添加:

然後在其他地方隻需要調用該functionToBlur()方法即可:

參考:

<a href="http://www.ibm.com/developerworks/opensource/tutorials/os-androidndk/section5.html">http://www.ibm.com/developerworks/opensource/tutorials/os-androidndk/section5.html</a>

<a href="http://developer.android.com/tools/sdk/ndk/index.html#Installing">http://developer.android.com/tools/sdk/ndk/index.html#Installing</a>

<a href="http://stackoverflow.com/questions/2067955/fast-bitmap-blur-for-android-sdk">http://stackoverflow.com/questions/2067955/fast-bitmap-blur-for-android-sdk</a>