我使用以下代码来处理Android和JNI中的JNI数组。
然而我发现了返回" jobjectArray"无法在API 21/22(Android 5.0)上完成,但适用于API 19.(Android 4.4) (无法完成意味着它返回JNI部分,但它挂起并且没有对Java的响应)
以下是我尝试在Android应用中实现的伪代码。
jobjectArray Java_com_test_Simplejni(JNIEnv* env, jobject thisObj)
jclass localClass = env->FindClass("java/lang/Object");
jclass objClass = reinterpret_cast<jclass>(env->NewGlobalRef(localClass));
args = env->NewObjectArray(len, objClass, 0);
return args;
}
java部分功能如下:
String[] Simplejni();
错误消息如下:
JNI DETECTED ERROR IN APPLICATION: attempt to return an instance of java.lang.Object[] from com.test.Simplejni
请告知任何有关如何调查此问题的建议,谢谢。
更新:20150427
答案 0 :(得分:1)
我找到了解决这个问题的方法:
你只需用API 21+上的java对象类替换java/lang/Object
,例如,
jclass localClass = env->FindClass("com/example/YourLocalClass");
,
从日志中,我们可以知道对象类不是yourJavaLocalObject类的实例。