您的位置:首页 > 移动开发 > Unity3D

Unity Android 5.0上 JNI DETECTED ERROR IN APPLICATION: jclass is an invalid local reference

2017-06-07 16:32 686 查看
 网上搜索的解决办法:

项目中

jclass o_class;

void initMeth(JNIEnv *env){

        o_class = env->FindClass(项目中的java的对象类);

                

}

上面这个方法初始化了这个引用,除了android5.x之前貌似都不出问题,(6.x也不会出问题)

但是在android5.0上,我的另一个函数里使用

args = env->NewObjectArray(st->Count,o_class , 0); 运行到这行的时候,就会给我报 JNI DETECTED ERROR IN APPLICATION: jclass is an invalid local reference: 0xe340001d (0xdead4321)这个错误,说我的本地引用无效。 这个是与android5.0的GC机制有关系

把所有jclass a = env ->findclass(xxx);

的地方改成 jclass a ;       

  jclass tmp = env -> findclass(xxx);   

a = (jclass)env->NewGlobalRef(tmp);   就搞定了!!!

新版本已经不允许全局使用findclass出来的局部引用了,

会被GC回收掉。所以必须new成全局引用才行。

之前没有把所有的jclass都改过来,所以还是会报错,

结果误以为是强转jclass无效。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐