Android NDK(c/c++调用Java函数)
2016-07-07 本文已影响90人
60916fc63567
1、在Activity中定义方法和调用方法


2、编译在.h文件中,生成对方法的编译

3、在cpp文件中,实现方法
JNIEXPORTvoidJNICALL Java_androids_ndk_com_myapplication_Main3Activity_executeJavaMethod(JNIEnv *env,jobject instance){
jclass clazz;
clazz = env ->GetObjectClass(instance);
//获取实例方法的方法ID
jmethodID instanceMethodId;
instanceMethodId = env->GetMethodID(clazz,"instanceMethod","()Ljava/lang/String;");
//获取静态方法的方法ID
jmethodID staticMethodId;
staticMethodId = env ->GetStaticMethodID(clazz,"staticMethod","()Ljava/lang/String;");
//调用实例方法
jstring instanceMethodResult;
instanceMethodResult = (jstring)env->CallObjectMethod(clazz,instanceMethodId);
//调用静态方法
jstring staticMethodResult;
staticMethodResult = (jstring)env->CallStaticObjectMethod(clazz,staticMethodId);
}

尼玛,各种坑,我真特么想fuck了......