Crach log信息:
jni crach.png复现步骤:
频繁的点击登录按钮 (频繁调用xxkey.so)
分析:
这是因为在登录的时候,需要读取so库中的公钥信息,所以频繁的通过JNI机制进行了java和C相互调用,这样就产生了很多垃圾。查看c代码,发现没有释放空间,所以就crach了。
解决办法:
在c文件中,每次return返回数据前释放资源:
(*env)->ReleaseByteArrayElements(env,barr, pBarr, 0);
运行程序 测试,果然ok了。JNI技术在Android开发中用的越来越普遍了,需要花时间研究研究啦。
网友评论