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 ,方法调用传递的参数