Android(安卓)JNI 之 .h 头文件
16lz
2021-01-26
头文件实例
/* DO NOT EDIT THIS FILE - it is machine generated */#include /* Header for class com_lilacouyang_firstjni_JniMethod */#ifndef _Included_com_lilacouyang_firstjni_JniMethod#define _Included_com_lilacouyang_firstjni_JniMethod#ifdef __cplusplusextern "C" {#endif/* * Class: com_lilacouyang_firstjni_JniMethod // Native方法的类名称。 * Method: getNativeString // Native 方法名称 * Signature: ()Ljava/lang/String; // 方法的标识,一个标识符,主要供在 JNI 操作 java对象的方法使用的。 // Signature一般是两部分构成,一个方法的参数,另一个是返回类型。 // 方法参数在括号里面,返回类型在后面 */JNIEXPORT jstring JNICALL Java_com_lilacouyang_firstjni_JniMethod_getNativeString (JNIEnv *, jclass);/* * Class: com_nedu_jni_helloword_HeaderFile * Method: doInt * Signature: (DFZ[C)I */ JNIEXPORT jint JNICALL Java_com_nedu_jni_helloword_HeaderFile_doInt__DFZ_3C (JNIEnv *, jclass, jdouble, jfloat, jboolean, jcharArray); #ifdef __cplusplus}#endif#endif
基本类型对应关系
基本类型对应关系规则
- 方法参数或者返回值为java中的对象时,必须以“L”加上其路径,不过此路径必须以“/”分开,自定义的对象也使用本规则,不在包中时直接“L”加上类名称。
- 方法参数或者返回值为数组时类型前加上[,例如[I表示int[],[[[D表示 double[][][],即几维数组就加几个[。
- 方法组成分析:
JNIEXPORT jstring JNICALL Java_com_lilacouyang_firstjni_JniMethod_getNativeString
(JNIEnv *, jclass) - JNIEXPORT 和 JNICALL:JNI 的关键字,表示此函数是要被 JNI 调用的;
- jstring:方法的返回类型;
- Java:为 JNI 中标识此方法来源于 java 的标识头;
- com_lilacouyang_firstjni_JniMethod_getNativeString:方法所在类的包名+类名+方法名
- (JNIEnv *, jclass):参数,它们有一个共同的特点,包含 JNIEnv *――它是一个接口指针,
用于定位函数表中的函数!在 JNI 规范中一般称 为 “Interface Pointer”。
JNI 中的操作过程是面向过程的!后面的jobject 是 一个指向该类的指针,
类似与 C 语言中的 this。这个第二个参数是变化的,当该方法为类的实例方法时为 jobject;
当该方法为类方法(即静态方法)时该参数为 jclass,指向该类的 class。
更多相关文章
- Android(安卓)一张图理解getWidth和getMeasuredWidth
- 淘宝客商品查询接口
- Android(安卓)instrumentation原理
- android 微型服务器
- Starting an Activity(开始活动)
- Android: ViewDragHelper tutorial
- 仿照DatePickerFragment实现的TimePickerFragment
- 探索FragmentTransaction#commit()抛出IllegalStateException
- Android学习笔记-Android初级 (二)