DeepSpeechDemo应用程序可与Gradle cli一起使用,但在使用Android Studio构建时会崩溃

问题描述

android-mic-streaming demo使用./gradlew installDebug可以立即使用,但是当使用Android Studio中的播放按钮编译并安装完全相同的项目时,在点击记录后会崩溃并导致以下崩溃:>

2020-08-19 00:44:24.862 12872-12872/org.deepspeechdemo E/AndroidRuntime: FATAL EXCEPTION: main
    Process: org.deepspeechdemo,PID: 12872
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
        at android.view.View.performClick(View.java:7448)
        at android.view.View.performClickInternal(View.java:7425)
        at android.view.View.access$3600(View.java:810)
        at android.view.View$PerformClick.run(View.java:28296)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
        at android.view.View.performClick(View.java:7448) 
        at android.view.View.performClickInternal(View.java:7425) 
        at android.view.View.access$3600(View.java:810) 
        at android.view.View$PerformClick.run(View.java:28296) 
        at android.os.Handler.handleCallback(Handler.java:938) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:223) 
        at android.app.ActivityThread.main(ActivityThread.java:7656) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 
     Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "libdeepspeech-jni.so" not found
        at java.lang.Runtime.loadLibrary0(Runtime.java:1087)
        at java.lang.Runtime.loadLibrary0(Runtime.java:1008)
        at java.lang.System.loadLibrary(System.java:1664)
        at org.mozilla.deepspeech.libdeepspeech.DeepSpeechModel.<clinit>(DeepSpeechModel.java:9)
        at org.deepspeechdemo.MainActivity.createModel(MainActivity.kt:90)
        at org.deepspeechdemo.MainActivity.onRecordClick(MainActivity.kt:120)
        at java.lang.reflect.Method.invoke(Native Method) 
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) 
        at android.view.View.performClick(View.java:7448) 
        at android.view.View.performClickInternal(View.java:7425) 
        at android.view.View.access$3600(View.java:810) 
        at android.view.View$PerformClick.run(View.java:28296) 
        at android.os.Handler.handleCallback(Handler.java:938) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:223) 
        at android.app.ActivityThread.main(ActivityThread.java:7656) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 


该问题似乎与libdeepspeech-jni.so有关,因此在使用Android Studio时未包含该问题。我是Android开发的新手(我正在构建Mozilla-STT React Native模块,仅支持iOS是没有用的),所以这尤其令人困惑。

谢谢!

编辑

几小时后的随机试验和错误:在Android Studio中将此选项从“默认APK”更改为“来自应用包的APK”使该演示开始工作

Screen Shot 2020-08-21 at 12 26 56 AM

但是,在我的React Native模块示例应用程序(具有依赖项android项目,最终取决于实际的libdeepspeech)上执行相同的操作没有用。使用x86_64时它开始工作,因此必须没有libdeepspeech x86二进制文件。

解决方法

几小时后的随机试验和错误:在Android Studio中将此选项从“默认APK”更改为“来自应用包的APK”使该演示开始工作 Screen Shot 2020-08-21 at 12 26 56 AM

但是,在我的示例应用程序上对React Native模块(它具有一个依赖项android项目,最终取决于实际的libdeepspeech)进行了同样的操作不起作用。使用x86_64时它开始工作,因此必须没有libdeepspeech x86(32位)二进制文件

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...