本案例中编写 android app中对应的jni函数

staticnativeStudentgetStudent();



jni中获取自定义的类函数描述定向总结



定义一个char *指向自定义类

1、返回类型:jobject

2、获取自定义的类

3、通过自定义类的构造函数在jni中构建jobject类:获取方法的域id的描述符填写"<init>"

4、jni回调app中的特定方法来设置自定义对象

或者不使用回调来设置对象属性;set***Field

5、最后返回jobject对象



完整代码

constchar*jnistudentname="com/jniacpp/Student";jobjectgetStudent(JNIEnv*env,jobjectthiz){jclassstuClass=env->FindClass(jnistudentname);//取得构造方法的域idjmethodIDconstuctId=env->GetMethodID(stuClass,"<init>","()V");//构建obj对象jobjectstuObj=env->NewObject(stuClass,constuctId);//取得特定方法的域idjmethodIDsetStudentId=env->GetMethodID(stuClass,"setStudent","(ILjava/lang/String;Z)V");//调用app中的setStuudent函数env->CallVoidMethod(stuObj,setStudentId,"110917010","mrzhang",true);/*//取得各个属性的域id;jfieldIDnameID=env->GetFieldID(stuClass,"name","Ljava/lang/String;");jfieldIDidID=env->GetFieldID(stuClass,"id","I");jfieldIDisBoyID=env->GetFieldID(stuClass,"isBoy","Z");env->SetIntField(stuObj,nameID,21);env->SetObjectField(stuObj,nameID,env->NewStringUTF("zhangsir"));env->SetIntField(stuObj,isBoyID,true);*/returnstuObj;}


参考电子书

Android技术之JNI和HAL.pdf