Android JNI

Android Studio环境下 java方法签名的获取

2017-11-20  本文已影响0人  蓝胖子_Android

1,在NDK开发中,JNI层可能需要调用到上层java对象的方法,那我们先看看这个过程是怎么样的。

JNIEXPORTvoidJNICALL Java_xime_com_jniobjdemo_NativeWuGougou_Hi_1Jni

(JNIEnv * env,jclass jcls,jobject jobj){

jclass xmClazz=env->GetObjectClass(jobj);

//注意:"(Ljava/lang/String;)V" 这个就是方法java层xm对象 的printfSelf(String hert)方法的签名。这个签名根据方法名和参数的不同会有差别。

jmethodID  printfId=env->GetMethodID(xmClazz,"printfSelf","(Ljava/lang/String;)V");

charc[10] ="wmx";

jstring jname = env->NewStringUTF(c);

env->CallVoidMethod(jobj,printfId,jname);

}

2,如何获取这个方法签名

第一步,先Build一下你的工程。

第二步,在app /build目录中可以查看到到你对应的.class文件

第三步:打开android studio的命令控制台,如图:

第四步,cd到上述目录中,执行javap -s xime.com.jniobjdemo.Hei_XM  (注意:xime.com.jniobjdemo.Hei_XM为 Hei_XM的类全名,如果你直接进入到Hei_XM的当前文件夹中则直接使用类名即可)。

E:\learn\android\demo\JniObjDemo\app\build\intermediates\classes\debug>javap -s xime.com.jniobjdemo.Hei_XM

得到结果如图:

上一篇下一篇

猜你喜欢

热点阅读