android jni调用so库
今天,講講android studio 使用jni調用其他so庫的使用。
首先說一下在網上查找資料時,對于調用第三方so庫,有人說有兩種方法:
1.??? 對于so庫的API符合JNI格式(即使用javah指令生成的頭文件中那種格式),可以在Java代碼中聲明它對應的native方法,直接調? 用。
??? 比如,jni方法名為:?jstringJNICALL Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv *,jobject);??? (即前綴 Java+包名+類名+方法名)
??? 那么這個方法名就是在java中聲明的native方法名:publicnative String? stringFromJNI();
2.??? 對于so庫的API不符合JNI格式,需要自己編寫c/c++源文件,在該源文件實現自己的JNI格式native函數,在JNI函數中調用第三方so庫的函數,再在java中調用自己實現的JNI格式的native方法。這種方法更加靈活。
一.首先需要配置NDK環境。
這個可以直接參考這篇博客http://blog.csdn.net/xiaoyu_93/article/details/52870395;
二.編寫簡單的jni程序,然后編寫
Android.mk文件,Application.mk文件。
編寫jni程序很簡單,在網上自己找資料就可以。主要是在Android.mk里調用so庫
Android.mk的代碼:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS) LOCAL_MODULE := HW_H265dec_Andr //HW_H265dec_Andr是庫的名稱 LOCAL_SRC_FILES := libHW_H265dec_Andr.so LOCAL_EXPORT_C_INCLUDES := src/main/jni include $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS) LOCAL_SHARED_LIBRARIES := HW_H265dec_Andr LOCAL_MODULE := HWH265_API LOCAL_SRC_FILES =: HWH265_APIs.cpp //HWH265_APIs.cpp是C++文件的名稱 include $(BUILD_SHARED_LIBRARY)TARGET_CPU_API := armeabi //表示編譯平臺只是移動平臺 APP_ABI := armeabi
這個就是告訴HWH265_APIs.cpp引用了libHW_H265dec_Andr.so庫。
接著在HWH265_APIs.cpp就可以調用庫的代碼。
Application.mk的代碼很簡單:
APP_STL:=gnustl_static APP_CPPFLAGS:=-frtti -fexceptions APP_ABI := armeabi #表示 編譯目標 ABI(應用二進制接口)
這樣就完成了jni導入so庫。
android jni調用so庫就講完了、
就這么簡單。
總結
以上是生活随笔為你收集整理的android jni调用so库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android Json处理换行符
- 下一篇: android jni打印log信息