美文网首页
jni生成方法签名

jni生成方法签名

作者: zippozeng | 来源:发表于2019-10-21 10:49 被阅读0次

1、native方法签名生成

编写jni经常写一些jni方法签名是很枯燥,而且经常用错,熟悉语法固然是好事,但有时候可以通过命令解决问题。

使用javah生成头文件,一般的方式为
javah -jni com.zippo.ffmpegplayer.MainActivity方式生成。

执行和这个命令的时候出现了这个错误。
错误: 无法确定SurfaceView的签名

原因是引入了SurfaceView,这个是android的代码,需要引入android的jar包
其命令应为:javah -classpath ${ANDROID.jar}:. -jni ${CLASS}
类似:javah -classpath /Users/zippo/Library/Android/sdk/platforms/android-23/android.jar:. -jni com.zippo.ffmpegplayer.MainActivity

2、普通方法签名获取

上述方法主要是针对调用native方法的签名生成,并不能生成普通的java方法的签名,由于我们在jni开发中难免会使用native方法调用java方法的情况,所以还需要通过命令来获取普通java方法的签名。
方法如下:
-(1)、找到需要签名的java方法的class文件目录
一般在'{modulename}/build/javac/{buildType}/packagename/x.class'
-(2)、在该目录下执行命令
javap -s -p MainActivity.class,就能在console得到该类的全部签名,desciption就是该签名
然后就可以通过callTypeMethod来调用了。

extern "C"
JNIEXPORT jint JNICALL
Java_com_github_zippozeng_jnidemo_MainActivity_nativeCallJava(JNIEnv *env, jobject thiz) {
    jclass clazz = env->GetObjectClass(thiz);
    jmethodID methodId = env->GetMethodID(clazz, "setTextViewByNative", "(Ljava/lang/String;)V");
    if (methodId == 0) {
        return -1;
    }
    jstring param = env->NewStringUTF("C中调用Java的String参数方法");
    env->CallVoidMethod(thiz, methodId, param);
    env->DeleteLocalRef(clazz);
//    env->DeleteLocalRef(methodId);
    env->DeleteLocalRef(param);
    return 1;
}

相关文章

  • jni生成方法签名

    1、native方法签名生成 编写jni经常写一些jni方法签名是很枯燥,而且经常用错,熟悉语法固然是好事,但有时...

  • Java 生成 JNI 头文件

    介绍两个生成jni头文件的方法,一般是用函数签名类型来做native 实现 1. 使用 javac 生成 JNI ...

  • javap 获取JNI方法签名

    JNI动态注册时需要方法签名,可以自己手写,但是出错的概率比较高,也可以使用javap命令自动生成。找到要获取签名...

  • Jni方法签名

    1、GetFieldID是得到java类中的参数ID,GetMethodID得到java类中方法的ID,它们只能调...

  • JNI基础(8): JNI调用Java方法

    8.1 JNI调用Java类的成员方法和静态方法 首先需要了解一下java方法在jni中签名格式。简单来说: (参...

  • JNI中基本类型数组的传递方法

    1、先看基本函数方法 官方文档:JNI doc 2、JNI .h 文件生成 可以看之前的一篇文档Java 生成 J...

  • 1. java的数据类型的签名

    开发jni经常需要在jni层调用java层的方法,或者创建引用,这个时候就需要用到java的属性或者方法的签名,详...

  • Android签名和JKS文件查看方法

    Android studio生成签名和打包的方法 方法一: android中。可以非常快速的生成签名文件.jsk文...

  • JNI方法签名规则

    本文讲解不使用javah命令怎么将.java文件生成相对应的.h文件 首先看看签名表 例子(主要为同名函数的类型签...

  • JNI类型签名和方法签名

    一、基本数据类型 二、引用数据类型 注意:1、引用数据类型则不能直接使用,需要根据JNI函数进行相应的转换后,才能...

网友评论

      本文标题:jni生成方法签名

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