Administrator
Published on 2022-01-22 / 161 Visits
0

SO库的兼容问题

一般我们生成的库有armeabiv-v7a,arm64-v8a,x86,x86_64。
假如我们的手机cpu架构是arm64-v8a,但是没有arm64-v8a的so库,我们可以使用armeabiv-v7a的库。因为arm64-v8a的cpu可以兼容armeabiv-v7a。

做法1:
arm64-v8a是可以向下兼容的,但前提是你的项目里面没有arm64-v8a的文件夹,如果你有两个文件夹armeabi和arm64-v8a,两个文件夹,armeabi里面有a.so 和 b.so,arm64-v8a里面只有a.so,那么arm64-v8a的手机在用到b的时候发现有arm64-v8a的文件夹,发现里面没有b.so,就报错了,所以这个时候删掉arm64-v8a文件夹,这个时候手机发现没有适配arm64-v8a,就会直接去找armeabi的so库,所以要么你别加arm64-v8a,要么armeabi里面有的so库,arm64-v8a里面也必须有。
做法2:
如果是引入的aar中的so,则可能上面的做法无效。这时候,就需要在build.gradle中指定要使用的so库的类型,如图
image.png

参考:
https://www.cnblogs.com/janehlp/p/7473240.html
https://blog.csdn.net/hss01248/article/details/51505531