最近在做NDK开发
1。对于本地静态方法 public static native String getStr(); 对应C/C++代码,不需要加入static关键字。
2。对于静态方法。第二个参数:jclass. 表示调用类。
3。对于非静态方法。第二个参数 :jobject 表示类实例。
4。对于多个参数。好吧比如两个ini,那么就是:"(II)V"); 一个:"(I)V");
一下是例子
c/c++ 代码
JNIEXPORT jstring JNICALL Java_com_permadi_testjni_JNIDemo_getStr(JNIEnv *env,
jclass obj) {
jmethodID onMapSurfaceCreate = env->GetMethodID(obj, "fsum", "(II)V");
jobject mFileDescriptor = env->NewObject(obj, onMapSurfaceCreate);
env->CallVoidMethod(mFileDescriptor, onMapSurfaceCreate, 1, 2);
return env->NewStringUTF("I'm from C!");
}
java 代码:
import android.util.Log;
public class JNIDemo {
// 本地静态方法
public static native String getStr();
// 本地方法
public native int getCint(String str);
// 回调函数
private void fsum( int i, int j){
Log.e("aaaa", "aaaaa");
}
static {
System.loadLibrary("TestJni");
}
}