【发布时间】:2015-03-26 11:43:50
【问题描述】:
在一个 Android 应用程序中,我有一些调用 java 静态方法的 JNI 代码。
jbyteArray response = (jbyteArray)pEnv->CallObjectMethod(handlerClass, mid, jstrServiceUrl, jstrRequest);
在 ART 环境中的 Android 5 中执行它,我得到一个 check jni 错误:
在应用程序中检测到 JNI 错误:在调用 CallObjectMethodV 时使用 CallObjectMethodV 调用静态方法 byte[] x.y.z(java.lang.String, java.lang.String)...
我在带有 Dalvik 环境的 Android 4 中没有收到此错误。
java方法就是这个:
public static byte[] z(String serviceURL, String request)
之前是这样绑定的:
jclass handlerClass = pEnv->FindClass("x/y/z");
if (handlerClass == NULL) {
return -1;
}
mid = pEnv->GetStaticMethodID(handlerClass, "z", "(Ljava/lang/String;Ljava/lang/String;)[B");
if (mid == NULL) {
return -2;
}
// Construct Strings
jstring jstrServiceUrl = pEnv->NewStringUTF(szServiceURL);
jstring jstrRequest = pEnv->NewStringUTF(szRequest);
【问题讨论】:
标签: java android c android-ndk