之前做过一个小私活,要用到一个第三方的硬件设备,那边提供了几个 so 库,Android native 很久没做了,写了些逻辑完成功能后,用 ndk21 编译了在自己手机上跑了下没什么问题,就交给甲方了,结果在甲方的荣耀上只要调用第三方库的函数就会 crash ,一开始以为是 android 11 分区存储的问题,排查了下发现不是(顺便吐槽下,荣耀的 android11 居然完全取消了分区存储?那这 11 有啥意义。。。)。
搞了一下午才想起可能是 ndk 版本不一致,看了下第三方库的 gcc 版本,确认用的是 ndk14 编译的,因为用了一些新特性,不想降级,看 logcat 是 libc++共享库的问题,我直接把 libc++
_shared.so 替换成 ndk14 的版本,居然能正常跑了……
结果过了一个月,荣耀系统更新了,又莫名其妙跑不了了……这回统一用 ndk14 编译,最终正常了。
我其实疑惑的反倒不是为什么会 crash ,而是为什么除了荣耀以外的手机基本都能正常跑?有没有做 os 的大佬能解惑下。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/821990
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.