Android NDK开发学习(五)

最后更新于:2022-04-01 16:21:37

**Android NDK开发学习(五):JNI数据类型** 调用一个Java native方法的时候,方法中的参数需要传给C/C++本地函数中。 首先可以看之前的demo,stringFromJNI方法中传入一个String类型参数。 ~~~ public class GetString { public native String stringFromJNI(String string); } ~~~ 接下来是com_example_jnitest_GetString.h文件中的接收 ~~~ #include <jni.h> /* Header for class com_example_jnitest_GetString */ #ifndef _Included_com_example_jnitest_GetString #define _Included_com_example_jnitest_GetString #ifdef __cplusplus extern "C" { #endif /* * Class: com_example_jnitest_GetString * Method: stringFromJNI * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_example_jnitest_GetString_stringFromJNI (JNIEnv *, jobject, jstring); #ifdef __cplusplus } #endif #endif ~~~ 从头文件函数的原型可以得知,stringFromJNI方法中形参的数据类型自动转换成了JNI中相应的数据类型(String ····> jstring) 剩余的类型就不一一的赘述了。可以参考下表。 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-26_571f24eb4cc40.jpg) ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-26_571f24eb645d6.jpg)
';