ijkplayer在Android 12不能播放,闪退

在Android 12上播放音频时无法播放,总是闪退,看日志找原因也不是特别明显。
后来经过多次测试,发现每次闪退总会打印以下日志:

Fatal signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0xfffffffe in tid 28393 (ff_read), pid 27351 (oft.dingdongfm3)

通过搜索发现,主要原因是ijkplayer不兼容v8a架构的android手机版本问题

原因:v8a架构的android手机部分机型的硬件使用的MTE机制,在native层使用的过程中为每一个分配的内存空间添加了一个memery tag,在调用的时候会进行检测memery tag是否被改变(主要出于安全性考虑,参考黑客攻击手段缓冲区溢出)

解决办法:

1.native每次分配空间的时候为最高位添加4为memery tag(太麻烦了,博主也没系研究)

2.在AndroidManifest.xml文件中添加 android:allowNativeHeapPointerTagging=“false” 这个属性 如图:
在这里插入图片描述
最后非常感谢此文章作者:https://python.iitter.com/other/91575.html,提供的宝贵解决方法。

猜你喜欢

转载自blog.csdn.net/xiaoduzi1991/article/details/123232930