Android 使用abiFilters 解决 .so is 32

编程入门 行业动态 更新时间:2024-10-26 20:22:38

<a href=https://www.elefans.com/category/jswz/34/1771384.html style=Android 使用abiFilters 解决 .so is 32"/>

Android 使用abiFilters 解决 .so is 32


今天在添加讯飞语音识别的时候出现问题:
/lib/arm64/libmsc.so" is 32-bit instead of 64-bit

2019-11-03 17:08:38.227 29389-29389/com.jianji.delogo E/MscSpeechLog: loadLibrary msc error:java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.jianji.delogo-3HbUmp9XsNRabC4fnD9Fpg==/lib/arm64/libmsc.so" is 32-bit instead of 64-bit
2019-11-03 17:08:38.228 29389-29389/com.jianji.delogo E/MscSpeechLog: init failed

当你安装应用到系统时,系统会从lib目录下的(armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips64, mips)文件夹中查找本地库文件,不同的架构加载不同的文件夹下的库文件。例如64bit的架构从arm64-v8a、x86_64、mips64这些目录中加载。如果你的arm64-v8a文件夹下刚好有这个需要使用到的库文件,则不会从其他文件夹如armeabi加载该库文件。此时就会出现32bit库文件和64bit库文件混合使用的情况,但是32bit的库文件不能和64bit的库文件不能混合使用。因此,有一种解决办法是过滤掉64bit的库文件,全部使用32bit的库文件。在Android studio配置文件build.gradle(Module APP)中配置如下:

app下

    defaultConfig {...ndk {abiFilters "armeabi-v7a"}}

子module下

		externalNativeBuild {cmake {cppFlags "-frtti -fexceptions"abiFilters "armeabi-v7a"}}

默认情况下会生成


添加过滤后,只会保留armeabi-v7a

更多推荐

Android 使用abiFilters 解决 .so is 32

本文发布于:2024-03-08 12:50:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1720925.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Android   abiFilters

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!