ndk 编译调试

在进行NDK交叉编译时,作者遇到了编译后的SO库导致Android应用启动崩溃的问题。尽管之前编译的SO库一直正常工作,但在修复bug后,再次编译的SO库在集成到项目中时引发了崩溃。通过尝试替换回旧版SO库,作者确认了问题出在新编译的库上。经过几天的排查,发现崩溃的原因竟然是一个LOGE打印语句中的参数错误,将原本应为`char*`的对象错误地传递给了`LOGE`,导致了应用崩溃。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在交叉编译的时候,尤其是不同中语言之间的交叉编译,往往遇到问题后,会很让人头疼。。。

这俩天在编译调试ndk的时候,就出现了!!

之前ndk编译的各种so,给android调用一直都是好好的,过了一段时间,修复了一些bug后,再编译成so,

然后给andorid调用的时候,莫名的崩溃,启动就崩溃,由于最近也给android编译了ijkPlayer播放器,然后全部都集成进去了!!

那么问题来了,运行的时候老是容易崩溃,,!!把我之前的一个so替换回来就好了,,各种迷茫啊!!

崩溃的时候也就只是提示了  libc    ****************一堆没用的信息!!

头疼啊。。各种的比较,各种的版本啊!!!找了俩三天,还是一直出现问题;;

最后找了一个调试方法!!心脏好多了!!嘿嘿

运行的时候,用 debug模式跑;

然后在

adb logcat | ndk-stack -sym ./obj/local/armeabi

调试编译,终于找到了,原因竟然是一个打印信息的问题,欲哭无泪啊  -> LOGE("------------------------");的一个问题,,,参数是一个char *, 结果手误,写成了一个对象;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值