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 ,方法調用傳遞的參數