整个多个第三方的so库

本来做了个objectbox的demo,运行正常;还有一个图片文字扫描识别,也运行正常。

但是识别模块所用的so文件是armeabi的,objectbox项目的不需要自己去导入。问题来了,识别模块自能是armeabli的cpu架构,其他的不可以,所以demo是直接固定了安装需要的cpu 。

ndk {
   
    abiFilters 'armeabi'
    
}
但现在是要把这两者合在一起,第一波问题不大,只要在对应的armeabi文件夹加上objectbox的so库上去就好了,因为加了这句话后,当系统要找so文件时就会去找对应目录,但objectbox的so都集成到jar包里面了,怎么引用就不知道了,反正加了ndk限制后就找不到so库了,要自己补上去,怎么找整个so文件呢,可以在可以允许的demo中直接搜索,因为已经生成在build/intermediates,自己对应的来拿。


第二波问题来了,我们普通的手机的cpu架构大概都是arm的,而我们开发的模拟器却基本都用x86的(不是没有,而是太慢了),所以我们指定了arm架构,模拟器就用不了,而且还有部分手机是x86的,这样会有部分影响,所以把x86加上去。


ndk {
    //选择要添加的对应cpu类型的.so库。
    abiFilters 'armeabi','x86'
    // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
}

我模拟器用的是x86_64的,我一开始把这个加上去,但是问题来了

UnsatisfiedLinkError X.so is 64-bit instead of 32-bit之Android 64 bit SO

这个问题原因是说,我们一开始有地方使用了64架构了,但后面有其他地方使用了32架构的so,系统是不支持这种操作。

因为armeabi是属于32的,而x86_64是64位的,当两个都使用的时候,就会报错,所以,当你某些so库只支持某种架构时就要注意了,那时候最后同时只支持一个,要不都32位,要不都64位。

猜你喜欢

转载自blog.csdn.net/qq_34884729/article/details/79020182