jni知識筆記

1.如何在jni開發中日誌打印

在ndk層打日誌

cpp文件裏面添加:

#define LOGI(...)((void) __android_log_print(ANDROID_LOG_INFO,"native",__VA_ARGS__))

 cpp的頭文件裏面引入下面這句話

#include <android/log.h>

然後在build.gradle裏面添加:

ndk{

ldLibs("log")

}

2. 如何jni調用java層非靜態代碼

jni層調用java層的非靜態代碼實際是env的CallXXXMethod方法。其中XXX代表函數返回的類型。這個方法需要傳入的參數有

被調用類的jmethodID ,獲取這兩者都需要查詢到方法簽名。jni方法簽名的獲取主要是用了javap -s 這個命令。
jObject 被調用方法需要傳入的參數

3.如何jni調用java層靜態代碼

jni層調用java的靜態代碼方法調用env的CallStaticXXXMethod。其中XXX代表函數返回的類型。傳入的參數有

被調用類的jmethodID,通過javap -s來獲取

jclass ,被調用類的class,通過env-》findClass來獲取

jObject ,方法調用傳遞的參數

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章