搞了半天终于知道原因了,jni项目的c++代码中使用了env->GetPrimitiveArrayCritical(imgSrc, 0);方法,那么在这句之后就不能再调用env相关的其他接口了,调用后就会闪退,当然google后发现可能是特殊的设备造成的,其中的原因不清楚需要看底层的源码,不过既然碰到了以后就慎用了。
我的程序查了下没有这样调用。后来发现在某个jni的接口中调用了 env->GetPrimitiveArrayCritical接口,之后调用了其他自定义函数,函数里又有回调,回调函数中又调用了 env->GetObjectClass, 所以造成了崩溃。
两块代码中间隔的比较远,经过了回调,但是还是在同一个线程,不太容易发现。