標籤:
摘要: 轉載請聲明:原文轉自:http://www.cnblogs.com/xiezie/p/5929996.html 一、java調用本地函數的開發步驟:1.編寫本地方法的類(可以說是用來敘述本地方法的類):
2.編譯這個類,產生該類的.class檔案
在Android Studio下有很多方法:
- Clean Project + Rebuild Project
3.用javah命令產生該.class檔案的.h標頭檔
在Android Studio中,可以開啟命令終端並將目錄切換到app/build/intermediates/classes/debug(編譯產生的.class檔案的存放路徑)下:
終端上的命令:
cd app/build/intermediates/classes/debug
點擊斷行符號,再輸入要>javah -jni 該類所在的包+該類名稱,樣本如下:
javah -jni com.x.mp4player.TestNdk
4.在src/main下建立jni檔案夾、並將產生的.h檔案複製到該目錄下
5.建立一個同名的.cpp檔案(用來編寫C/C++代碼)
產生的.h檔案代碼:
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_x_mp4player_TestNdk */#ifndef _Included_com_x_mp4player_TestNdk#define _Included_com_x_mp4player_TestNdk#ifdef __cplusplusextern "C" {#endif/* * Class: com_x_mp4player_TestNdk * Method: getStringFromNative * Signature: ()I */JNIEXPORT jint JNICALL Java_com_x_mp4player_TestNdk_getStringFromNative (JNIEnv *, jclass);#ifdef __cplusplus}#endif#endif
編寫的.cpp檔案代碼:
#include <jni.h>#include <com_x_mp4player_TestNdk.h>JNIEXPORT jint JNICALL Java_com_x_mp4player_TestNdk_getStringFromNative (JNIEnv *env, jclass cls){ return 1;}
- 在.cpp檔案下要匯入產生的標頭檔 : #include <com_x_mp4player_TestNdk.h>
- .h檔案和.cpp檔案的名稱一致,另外,他們的方法名稱也要一致
6.在build.gradle下加入ndk模組
- 模組名稱要與本地方法所在的類所匯入的連結庫檔案名稱字相同,如下
static { System.loadLibrary("MyJni");//匯入產生的連結庫檔案 }
7.編譯運行
- 如果出現錯誤,請試著在jni檔案夾下建立一個空的util.c檔案 或者自行調試
Android JNI之JAVA調用C/C++層