最近从4.2移植一段代码到4.4的时候有涉及到JNI相关的代码,结果发现4.2上运行的好好的代码居然在4.4上就crash了,
报出的错误就是 can not find native method.
反复核对来jni的函数命名,签名,一直没发现问题,后来又怀疑proguard捣的蛋,加来keep 还是不行,无奈之下尝试了
把编译出来的apk又反编译出来,结果让我大吃一惊,java代码上JNI中的一些函数居然被优化掉了,这些函数是没有被实际
用到的,只是预留出来将来或许有用的,结果正是这些被优化掉的函数导致了注册native函数的时候crash了。
想到的解决方法自然是注释掉这些函数,结果果然ok了。
十分让我费解! 看来有时间要看看编译系统的变化才能彻底搞明白。
在将使用JNI的代码从Android 4.2移植到4.4的过程中遇到crash问题,发现是由于未使用的JNI函数被编译系统优化导致。通过注释掉未使用的函数解决了问题。
3415

被折叠的 条评论
为什么被折叠?



