Android Native Code开发学习(三)对java中的对象变量进行操作

Android Native Code开发学习(三)

本教程为native code学习笔记,希望能够帮到有需要的人

我的电脑系统为ubuntu 22.04,当然windows也是可以的,区别不大

对java中的对象变量进行操作

首先我们新建一个java的类

public class ClassForJNI {
    public int a;
    public int b;
    public void add(){
        System.out.println("a+b is :"+(a+b));
        return;
    }
}

我们的目标就是更改里面的a和b,并且调用这个类,就可以看到我们的输出

//查询类名
jclass clz_2 = env->FindClass("com/example/nativecodelearn/ClassForJNI");
//查询构造函数的id
jmethodID jcmid_2 = env->GetMethodID(clz_2, "", "()V");
//创建对象
jobject = env->NewObject(clz_2, jcmid_2);
jfieldID fid_a =env->GetFieldID(clz_2,"a","I");
jint num_a =env->GetIntField(jobject,fid_a);
env->SetIntField(jobject,fid_a,9);
jfieldID fid_b =env->GetFieldID(clz_2,"b","I");
jint num_b =env->GetIntField(jobject,fid_b);
env->SetIntField(jobject,fid_b,10);
//获取方法id
jmethodID jmeid_2 = env->GetMethodID(clz_2,"add","()V");
env->CallVoidMethod(jobject,jmeid_2);

其实这个步骤一共就这几步

  1. 找到类名
  2. 准备构造函数
  3. 创建对象
  4. 获得fieldID
  5. 得到对应的变量
  6. 更改变量的值

通过这样我们就可以运行了,这样就可以得到最终的结果了

20230830143015

你可能感兴趣的:(Android,android,java)