gpt4 book ai didi

android - 将 jobjectArray 从 JNI 传递到 Java 在 Android API 21/22 上崩溃但在 API 19 上工作

转载 作者:行者123 更新时间:2023-11-30 02:13:02 25 4
gpt4 key购买 nike

我使用以下代码来处理 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

  • 我尝试简化在 Android 4.4 中工作但在 Android 5.0 中失败的空 jobjectArray(使用相同的代码)
  • 我的 IDE 是 Android Studio

最佳答案

我找到了解决这个问题的方法:您只需将 java/lang/Object 替换为 API 21+ 上的 java 对象类,例如, jclass localClass = env->FindClass("com/example/YourLocalClass");,从日志中,我们可以知道对象类不是您的 JavaLocalObject 类的实例。

关于android - 将 jobjectArray 从 JNI 传递到 Java 在 Android API 21/22 上崩溃但在 API 19 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29844310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com