`

#include <stdio.h>

#include <stdlib.h>
typedef const struct JNINativeInterface *JNIEnv;

struct JNINativeInterface
{
//方法指针
const char(NewStringUTF)(JNIEnv,const char);
};

//方法实现
const char NewStringUTF(JNIEnv env, const char* c_str) {

return c_str;

}

const char Java_com_yppcat_ndk_NdkSimple_getStr(JNIEnv env) {

return (*env)->NewStringUTF(env, "940223");

}

void main() {

1
2
3
4
5
6
7
struct JNINativeInterface nativeInterface;
nativeInterface.NewStringUTF = NewStringUTF;//给方法指针赋值
JNIEnv env = &nativeInterface; //JniEnv本身就是一级指针
JNIEnv* jniEnv = &env;
const char* jString = Java_com_yppcat_ndk_NdkSimple_getStr(jniEnv);
printf("jString = %s ", jString);
getchar();

}`

本文地址: http://www.yppcat.top/2020/03/18/JNIEnv实现原理/