美文网首页
Android JNI 之 .h 头文件

Android JNI 之 .h 头文件

作者: LilacZiyun | 来源:发表于2017-06-21 19:15 被阅读448次

    头文件实例

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class com_lilacouyang_firstjni_JniMethod */
    
    #ifndef _Included_com_lilacouyang_firstjni_JniMethod
    #define _Included_com_lilacouyang_firstjni_JniMethod
    #ifdef __cplusplus
    extern "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
    

    基本类型对应关系

    基本类型对应关系

    规则

    1. 方法参数或者返回值为java中的对象时,必须以“L”加上其路径,不过此路径必须以“/”分开,自定义的对象也使用本规则,不在包中时直接“L”加上类名称。
    2. 方法参数或者返回值为数组时类型前加上[,例如[I表示int[],[[[D表示 double[][][],即几维数组就加几个[。
    3. 方法组成分析:
      JNIEXPORT jstring JNICALL Java_com_lilacouyang_firstjni_JniMethod_getNativeString
      (JNIEnv *, jclass)
    4. JNIEXPORT 和 JNICALL:JNI 的关键字,表示此函数是要被 JNI 调用的;
    5. jstring:方法的返回类型;
    6. Java:为 JNI 中标识此方法来源于 java 的标识头;
    7. com_lilacouyang_firstjni_JniMethod_getNativeString:方法所在类的包名+类名+方法名
    8. (JNIEnv *, jclass):参数,它们有一个共同的特点,包含 JNIEnv *――它是一个接口指针,
      用于定位函数表中的函数!在 JNI 规范中一般称 为 “Interface Pointer”。
      JNI 中的操作过程是面向过程的!后面的jobject 是 一个指向该类的指针,
      类似与 C 语言中的 this。这个第二个参数是变化的,当该方法为类的实例方法时为 jobject;
      当该方法为类方法(即静态方法)时该参数为 jclass,指向该类的 class。

    相关文章

      网友评论

          本文标题:Android JNI 之 .h 头文件

          本文链接:https://www.haomeiwen.com/subject/vtmtcxtx.html