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


轉載請注明:http://www.cnblogs.com/tiantianbyconan/p/3396595.html

Java Native Interface (JNI)標准是java平台的一部分,它允許Java代碼和其他語言寫的代碼進行交互。JNI 是本地編程接口,它使得在 Java 虛擬機 (VM) 內部運行的 Java 代碼能夠與用其它編程語言(如 C、C++ 和匯編語言)編寫的應用程序和庫進行交互操作。

1. 下載NDK(http://developer.android.com/tools/sdk/ndk/index.html),並解壓,配置Path路徑

 

2. 在項目中新建一個名為jni的文件夾,在jni中新增Android.mk文件,文件內容如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := PhotoUtil
LOCAL_SRC_FILES := PhotoUtil.c
LOCAL_LDLIBS    := -llog -ljnigraphics
include $(BUILD_SHARED_LIBRARY)

LOCAL_MODULE:當前模塊的名稱

LOCAL_SHARED_LIBRARIES:當前模塊需要依賴的共享庫。 

LOCAL_SRC_FILES:所要調用的C源碼

 

3. 把PhotoUtil.c文件復制到jni目錄下

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

JNIEXPORT void JNICALL Java_com_wangjie_customviews_PicturesDialog_functionToBlur(JNIEnv* env, jobject obj, jobject bitmapIn, jobject bitmapOut, jint radius) {
    ……
}

方法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

"Compile thumb : PhotoUtil <= PhotoUtil.c
SharedLibrary  : libPhotoUtil.so
Install        : libPhotoUtil.so => libs/armeabi/libPhotoUtil.so

執行完畢之后,android項目的libs目錄下就會生成so文件:

\libs\armeabi\libPhotoUtil.so

5. 在android中java代碼調用:

static{
      System.loadLibrary("PhotoUtil");
}

加載photoUtil庫(libPhotoUtil.so)

並添加:

private native void functionToBlur(Bitmap bitmapIn, Bitmap bitmapOut, int radius);

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

functionToBlur(bgBitmap, bitmapOut, 50);

 

參考:

http://www.ibm.com/developerworks/opensource/tutorials/os-androidndk/section5.html

http://developer.android.com/tools/sdk/ndk/index.html#Installing

http://stackoverflow.com/questions/2067955/fast-bitmap-blur-for-android-sdk

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM