石家莊新聞網(wǎng)seo推廣服務(wù)哪家好
Android Native Code開發(fā)學(xué)習(xí)(三)
本教程為native code學(xué)習(xí)筆記,希望能夠幫到有需要的人
我的電腦系統(tǒng)為ubuntu 22.04,當(dāng)然windows也是可以的,區(qū)別不大
對java中的對象變量進行操作
首先我們新建一個java的類
public class ClassForJNI {public int a;public int b;public void add(){System.out.println("a+b is :"+(a+b));return;}
}
我們的目標(biāo)就是更改里面的a和b,并且調(diào)用這個類,就可以看到我們的輸出
//查詢類名
jclass clz_2 = env->FindClass("com/example/nativecodelearn/ClassForJNI");
//查詢構(gòu)造函數(shù)的id
jmethodID jcmid_2 = env->GetMethodID(clz_2, "<init>", "()V");
//創(chuàng)建對象
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);
其實這個步驟一共就這幾步
- 找到類名
- 準(zhǔn)備構(gòu)造函數(shù)
- 創(chuàng)建對象
- 獲得fieldID
- 得到對應(yīng)的變量
- 更改變量的值
通過這樣我們就可以運行了,這樣就可以得到最終的結(jié)果了