天天看点

百度语音应用push 到 system/app无法加载动态库解决办法

错误描述:1,集成了百度语音SDK的应用通过 install 命令安装不报so动态库错误; 2,通过 adb push apk路径 system/app 安装,报无法加载so动态库的错误。

百度语音识别错误:RecogEventAdapter: name:asr.finish; params:{"origin_result":{"sn":"","error":3,"desc":"VAD is not available","sub_error":3100},"error":3,"desc":"VAD is not available","sub_error":3100}

原因:方式1,应用会从apk安装包中读取so动态库,拷贝到 data/app/packagename-1/lib/arm 目录中,应用也会从这个路径下读取so动态库。 方式2,百度语音SDK应用 同样会从apk安装包中读取so动态库,拷贝到 system/lib/apkName/目录下,并读取。但是 system 目录是只读的,因此不存在system/lib/apkName/的路径,自然也不会有so动态库,应用是读取不到so动态库的。

解决问题的关键:获取动态库加载路径:String getApplicationInfo().nativeLibraryDir

解决办法:使用将必须动态库手动拷贝到相应目录。下面以intelligencerobot-release.apk为例: adb root adb remount adb push E:\AndroidStudioProjects\RobotGene\intelligencerobot\libs\armeabi\libBaiduSpeechSDK.so system/lib/intelligencerobot-release/ .....(拷贝必须动态库) adb push E:\AndroidStudioProjects\RobotGene\apk\release\intelligencerobot-release.apk system/app/ adb reboot

另外附上其他相类似的问题解决方法,以供参考: 1,Android应用push到/system/app/后so库不能加载: http://blog.csdn.net/feiniao8651/article/details/73387152 2,将第三方apk变成系统apk: http://blog.51cto.com/670176656/1608687 3,Android模拟器, push文件到system下文件夹权限,空间,SO文件没有自动安装的问题: https://www.mobibrw.com/2015/2370