Android studio加载语音识别libpocketsphinx_jni.so库文件

**

Android studio加载libpocketsphinx_jni.so库文件常见报错

**

报错一:couldn’t find “libpocketsphinx_jni.so”

  1. .so库文件推荐存放在main/jniLibs下,即可使用存放在libs文件夹下需要在build.gradle配置;
    存放在libs文件夹下需要在build.gradle配置
    在这里插入图片描述
  2. 不同CPU架构下so文件兼容问题
  1. 模拟器常用的x86支持armeabi,armeabi-v7a
    jniLibs目录下
    i. 如果存在/x86/.so文件,优先加载此文件
    ii. 如果不存在x86文件,会选择armeabi-v7a下的.so文件
    iii. 如果也不存在armeabi-v7a文件,会选择armeabi下的.so文件
  2. 现在大部分安卓手机常用的armeabi-v7a支持armeabi,armeabi-v7a
    jniLibs目录下
    i. 如果存在/armeabi-v7a/.so文件,优先加载此文件
    ii. 如果不存在armeabi-v7a文件,会选择armeabi下的.so文件
    所以build.gradle下ndk只添加armeabi,armeabi-v7a两项就可以
    (ndk 开发C/C++动态库,自动将abiFilers配置架构下的.so文件和java应用程序打包到APK中,APK中lib文件夹下会有相应的.so文件)
    在这里插入图片描述

报错二:lib/arm/libpocketsphinx_jni.so" has text relocations

原因:安卓6以上targetSdk>=23, 系统将会拒绝加载包含text relocations的共享库,同时输出错误Log
解决:版本改为22 (网上说真正的解决方案就是解决so动态链接库中的text relocations (TEXTRELs)问题)
在这里插入图片描述

报错三:找不到.so库方法

在这里插入图片描述
原因:so库里的接口都是带包名的,如果从别的项目拷贝过来,包名变了而.so库里的接口包名没变,就会造成找不到jni方法的异常。
解决:保持so库的包结构不变
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值