今天我们遇到了一个奇怪的崩溃。在第一次安装期间,应用程序下载并将openh264解压缩到应用程序的内部目录,发生在rxAndroid的Schedulers.io()线程上。 这是第一次这种崩溃(> 5k安装),我找到了这个link(顺便说一句非常有趣的博客),并附带了匹配的错误消息。我不确定是否真的有人试图更换openH264 lib或者有人试图在x86设备上安装apk文件。我还在使用1.4的openH264并阅读了1.5发行说明。没有任何安全修复提示。
有关该设备的更多详细信息:
Android:4.3
制造商:三星
型号:GT-I9300
最后,这是崩溃日志:
java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread.
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:62)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/path/files/libopenh264.so" has bad ELF magic
at java.lang.Runtime.load(Runtime.java:330)
at java.lang.System.load(System.java:511)
at path.BeatMarker.init(BeatMarker.java:33)
at path.fragments.main.MainFragment.onOpenH264Done(MainFragment.java:475)
at path.fragments.main.MainPresenterImpl.onOpenH264Done(MainPresenterImpl.java:25)
at path.fragments.main.MainLoaderImpl$1.onCompleted(MainLoaderImpl.java:61)
at rx.observers.SafeSubscriber.onCompleted(SafeSubscriber.java:81)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.pollQueue(OperatorObserveOn.java:201)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber$2.call(OperatorObserveOn.java:170)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
... 9 more
我很确定,崩溃发生在这里:
at path.BeatMarker.init(BeatMarker.java:33)
这些是:
File libOpenH264File = new File(context.getFilesDir(), "libopenh264.so");
System.load(libOpenH264File.getAbsolutePath()); //line 33
在下载和解压缩完成后调用。
当lib正在下载并且网络连接丢失时,是否会发生错误?
欢迎任何帮助或暗示,提前感谢! :)