在交叉编译的时候,尤其是不同中语言之间的交叉编译,往往遇到问题后,会很让人头疼。。。
这俩天在编译调试ndk的时候,就出现了!!
之前ndk编译的各种so,给android调用一直都是好好的,过了一段时间,修复了一些bug后,再编译成so,
然后给andorid调用的时候,莫名的崩溃,启动就崩溃,由于最近也给android编译了ijkPlayer播放器,然后全部都集成进去了!!
那么问题来了,运行的时候老是容易崩溃,,!!把我之前的一个so替换回来就好了,,各种迷茫啊!!
崩溃的时候也就只是提示了 libc ****************一堆没用的信息!!
头疼啊。。各种的比较,各种的版本啊!!!找了俩三天,还是一直出现问题;;
最后找了一个调试方法!!心脏好多了!!嘿嘿
运行的时候,用 debug模式跑;
然后在
adb logcat | ndk-stack -sym ./obj/local/armeabi
调试编译,终于找到了,原因竟然是一个打印信息的问题,欲哭无泪啊 -> LOGE("------------------------");的一个问题,,,参数是一个char *, 结果手误,写成了一个对象;
在进行NDK交叉编译时,作者遇到了编译后的SO库导致Android应用启动崩溃的问题。尽管之前编译的SO库一直正常工作,但在修复bug后,再次编译的SO库在集成到项目中时引发了崩溃。通过尝试替换回旧版SO库,作者确认了问题出在新编译的库上。经过几天的排查,发现崩溃的原因竟然是一个LOGE打印语句中的参数错误,将原本应为`char*`的对象错误地传递给了`LOGE`,导致了应用崩溃。
1171

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



