android - C JNI 库使整个 Android 应用程序崩溃

标签 android java-native-interface

我正在使用为 android 编译的 ffmpeg 并且目前可以正常工作,但是有时会出现错误(基于某些 android 手机配置)并且应用程序只是强制关闭并显示以下消息:

Fatal signal 11 (SIGSEGV) at 0x00000001 (code=1), thread 20745 (AsyncTask #2)

ffmpeg 调用在 try/catch 中;然而,它似乎并不关心。

那么,我该如何防止这种强制关闭并向用户显示消息呢?

最佳答案

I'm afraid I can't do that.另请参阅此答案 hints at why .

当 ffmpeg 死亡时,它会带走您的整个程序。事情就是这样。用 Java 编程时,您不必考虑程序会以那种方式崩溃,但是当用 C 编写的 ffmpeg 死掉时,它可能会毁掉您的整个 Java 程序。

try/catch 没有帮助,因为 ffmpeg 不知道也不关心 Java 异常。留在 Java 程序中的唯一解决方案是找到导致 ffmpeg 死亡的错误,或者找到触发错误的原因并以不会崩溃的方式调用 ffmpeg。正如 Alex Cohn 所指出的,另一种解决方案是在另一个进程中运行 ffmpeg,这样它就只能关闭自己的进程。

关于android - C JNI 库使整个 Android 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26161122/

相关文章:

Android 在设备输入上播放声音

java - 如何使用提到的粒子效果?

java - 相机崩溃 : Fatal signal 6 (SIGABRT) with JNI code

Java调用API : Call the C function back from the java code

java - 更新的 DLL 导致 JNI 抛出 "Exception c0000005"

android - 如何从Surface View(在一个activity中运行)切换到其他activity

android - 相机 API 中是否有等效于相机 2 API 方法 camera.autoFocus() 的方法?

android studio编辑器错误jni

java - 生成不同包中的JNI头文件

android - 如何将 AppCompatActivity 与 Fabric 一起使用来获取时间轴?