科大讯飞语音引擎错误20021或者21001

科大讯飞在5.0手机系统上报:本地语音引擎错误(20021,和科大论坛上的21001很类似),解决思路如下:

  • 工程中压根就没有放so库。这种情况怎么解决就不多说了
  • 混淆时没有-keep class com.iflytek.**{*;}。这种情况下有可能程序直接崩溃,而不会抛出21001,但是原理是类似的。就是SDK代码的混淆导致jni层中native方法名的混乱,从而导致在so库中找不到对应的方法,和so库没有找到(加载)的效果是一样的。
  • 虽然工程中放了so库,但是如下图所示,部分文件夹下没有放置,从而导致部分手机上面可以运行,部分手机上面运行出现21001的情况。这个和Android的so库加载机制有关,不同的平台会使用不同平台对应的文件夹下的so库,如果某平台对应的文件夹里没有libmsc.so就会报错,如果某平台对应的文件夹不存在,系统会到armeabi文件夹中去找。注意:32位so和64位so是不能通用的目前,64位在线功能的的so以及上线,但是离线功能的还要过一段时间才能上线。

    QQ图片20151****50331.png (3.73 KB, 下载次数: 17)

    下载附件

    2015-10-12 15:04 上传

  • 如果开发环境是Android Studio,那么你需要将so放在jniLibs目录下,或者在配置文件中指定so加载的路径。因为AS默认是从jniLibs目录加载so库的,这里有想详细了解的,可以自行百度一下。
             如果你的目录不是jniLibs,那么需要在gradle中指定so加载的路径如下:



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值