Android ndk 如何在编写本机代码时使用env?

Android ndk 如何在编写本机代码时使用env?,android-ndk,java-native-interface,Android Ndk,Java Native Interface,什么是env?请不要说指针。但它指的是什么?我们正在使用(*env)->NewStringUTF,即使没有初始化。这怎么可能呢?JNIEnv正在由VM传递到您的函数中。它本质上是指向函数指针数组的指针。(还有更多,但函数指针是有趣的一点。) 如果已启用,VM将传入指向不同函数数组的指针,这些函数在调用基函数之前执行扩展检查 与VM关联的每个线程都有自己的JNIEnv。始终使用传递到方法中的方法,不要将其存储在全局或静态本地 JNIEXPORT jstring JNICALL Java_com_m

什么是
env
?请不要说指针。但它指的是什么?我们正在使用
(*env)->NewStringUTF
,即使没有初始化。这怎么可能呢?

JNIEnv
正在由VM传递到您的函数中。它本质上是指向函数指针数组的指针。(还有更多,但函数指针是有趣的一点。)

如果已启用,VM将传入指向不同函数数组的指针,这些函数在调用基函数之前执行扩展检查

与VM关联的每个线程都有自己的
JNIEnv
。始终使用传递到方法中的方法,不要将其存储在全局或静态本地

JNIEXPORT jstring JNICALL Java_com_marakana_NativeLib_hello (JNIEnv * env, jobject obj) 
{                                         
    return (*env)->NewStringUTF(env, "Hello World!");
}