当前位置:   article > 正文

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

jclass is an invalid local reference

 网上搜索的解决办法:

项目中

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无效。。。




声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/158492
推荐阅读
相关标签
  

闽ICP备14008679号