如何在JNI中调用Object成员函数?

时间:2017-10-26 03:08:31

标签: java android c++ android-ndk

我想在JNI中调用一个成员函数,但它会崩溃,我不会发生什么

这是我的Java代码

 public int SERIAL_hashCode() {
    String serial = Build.SERIAL;
    return serial.hashCode();
}

我想在jni中实现这个功能

这是我的JNI代码

JNIEXPORT jint JNICALL native_SERIAL_hashCode(JNIEnv * env, jclass obj) {
    jclass buildClass = (jclass)env->NewGlobalRef(env->FindClass("android/os/Build"));
    jfieldID serialId = env->GetStaticFieldID(buildClass,"SERIAL","Ljava/lang/String;");
    jobject serial = (jobject)env->GetStaticObjectField(buildClass,serialId);

    jclass stringClass = (jclass)env->FindClass("java/lang/String");
    jmethodID hashId = env->GetMethodID(stringClass,"hashCode","()I");

    jint hash = (jint)env->CallObjectMethod(serial,hashId);

    return hash;
}

但是当它运行时,它会崩溃,我的jni代码出了什么问题? 谢谢!

0 个答案:

没有答案