Android,firefly3399开发板,arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题

1.先说下报的错

大概意思就是arm64-v8a文件夹下找不到libarcsoft_face_engine.so这个库,(这个库是虹软人脸识别2.0)

2.分析原因

百度了下,大概原因: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里面也必须有

3.解决方法

网上找了各种方法好像都不行,如删除arm64-v8a文件夹,仍然报错,可能是因为用的其他的library,里面包含arm64-v8a

既然没办法删除,那有没办法直接指定系统用什么so架构呢?

答案是可以的:

android {

    ...
        
    defaultConfig {
       
        ...

        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
        }
    }

 }

就是在项目build.gradle里面,加上

ndk {
    abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}

发现竟然不报错了,O(∩_∩)O哈哈~

发布了3 篇原创文章 · 获赞 0 · 访问量 458

猜你喜欢

转载自blog.csdn.net/qq_28734961/article/details/100014928