本文介绍了添加Crosswalk后,Unity JNI库的Android项目崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有Android应用程序,我嵌入了我在Unity 3D中制作的游戏。应用程序的其他部分是用Cordova / Ionic编写的,我需要使用Crosswalk来支持较旧的Android手机。

I have android app where I embed game that I make in Unity 3D. Other part of app is written in Cordova/Ionic and I need to use Crosswalk to support older android phones.

但是当我将Crosswalk添加到我的项目中时,app会立即崩溃从以下输出开始:

But when I add Crosswalk to my project, app crashes right after start with following output:

W/chromium: [WARNING:xwalk_external_extension.cc(58)] Error loading extension '/data/app/com.example.app-2/lib/arm/libmono.so': couldn't get XW_Initialize function.
W/chromium: [WARNING:xwalk_extension_server.cc(407)] Failed to initialize extension: /data/app/com.example.app-2/lib/arm/libmono.so
W/chromium: [WARNING:xwalk_external_extension.cc(58)] Error loading extension '/data/app/com.example.app-2/lib/arm/libxwalkcore.so': couldn't get XW_Initialize function.
W/chromium: [WARNING:xwalk_extension_server.cc(407)] Failed to initialize extension: /data/app/com.example.app-2/lib/arm/libxwalkcore.so
I/chromium: [INFO:xwalk_extension_renderer_controller.cc(42)] EXTENSION PROCESS DISABLED.
W/chromium: [WARNING:xwalk_external_extension.cc(58)] Error loading extension '/data/app/com.example.app-2/lib/arm/libVuforiaWrapper.so': couldn't get XW_Initialize function.
W/chromium: [WARNING:xwalk_extension_server.cc(407)] Failed to initialize extension: /data/app/com.example.app-2/lib/arm/libVuforiaWrapper.so
W/chromium: [WARNING:xwalk_external_extension.cc(58)] Error loading extension '/data/app/com.example.app-2/lib/arm/libunity.so': couldn't get XW_Initialize function.
32398-32443/com.example.app A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 32443 (Chrome_FileThre)
I/DEBUG: property debug.db.uid not set; NOT waiting for gdb.
I/DEBUG: HINT: adb shell setprop debug.db.uid 100000
I/DEBUG: HINT: adb forward tcp:5039 tcp:5039
A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
A/DEBUG: Build fingerprint: 'google/razor/flo:6.0.1/MMB29Q/2480792:user/release-keys'
A/DEBUG: Revision: '0'
A/DEBUG: ABI: 'arm'
A/DEBUG: pid: 32398, tid: 32443, name: Chrome_FileThre  >>> com.example.app <<<
A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
A/DEBUG:     r0 00000000  r1 98034abc  r2 00000002  r3 0013064c
A/DEBUG:     r4 00000000  r5 00130630  r6 00001000  r7 9771a0a0
A/DEBUG:     r8 b5b27000  r9 b5b27dc4  sl b6cfc444  fp 0000000c
A/DEBUG:     ip 00007ebb  sp 9b1fffe8  lr 9771a0e0  pc 9771ac38  cpsr 600f0010
A/DEBUG: backtrace:
A/DEBUG:     #00 pc 00498c38  /data/app/com.example.app-2/lib/arm/libunity.so
A/DEBUG:     #01 pc 004980dc  /data/app/com.example.app-2/lib/arm/libunity.so
A/DEBUG:     #02 pc 00491f88  /data/app/com.example.app-2/lib/arm/libunity.so
A/DEBUG:     #03 pc 004980a8  /data/app/com.example.app-2/lib/arm/libunity.so
A/DEBUG:     #04 pc 00047f9f  /system/lib/libc.so (__cxa_finalize+138)
A/DEBUG:     #05 pc 00002559  /system/bin/linker (__dl__ZN6soinfo13call_functionEPKcPFvvE+48)
A/DEBUG:     #06 pc 00002623  /system/bin/linker (__dl__ZN6soinfo10call_arrayEPKcPPFvvEjb+134)
A/DEBUG:     #07 pc 000026e3  /system/bin/linker (__dl__ZN6soinfo16call_destructorsEv+58)
A/DEBUG:     #08 pc 0000668b  /system/bin/linker (__dl__ZL13soinfo_unloadP6soinfo+266)
A/DEBUG:     #09 pc 000068d7  /system/bin/linker (__dl__Z10do_dlcloseP6soinfo+14)
A/DEBUG:     #10 pc 00001b89  /system/bin/linker (__dl_dlclose+16)
A/DEBUG:     #11 pc 00287de5  /data/app/com.example.app-2/lib/arm/libxwalkcore.so

所以显然,libunity.so与libxwalkcore.so存在某种问题

So, obviously, libunity.so have some kind of problem with libxwalkcore.so

我认为这是因为Crosswalk试图在libunity.so中找到XW_Initialize函数并且它会以某种方式导致整个应用程序崩溃。

I believe that it is because of Crosswalk is trying to find "XW_Initialize function" in libunity.so and somehow it cause crash of whole app.

当我使用Crosswalk-Lite时,一切正常,除了网络视频(在crosswalk-lite中禁用),我不幸的是,需要。

When I Use Crosswalk-Lite Everything works fine, except web video (disabled in crosswalk-lite), which I, unfortunately, need.

有没有办法告诉人行横道不要加载libunity.so作为扩展?

Is there any way to tell crosswalk not to load libunity.so as a extension?

或者是否有可能拥有Unity JNI libr一个文件夹中的aries和第二个中的Crosswalk库?

Or is there any possibility to have Unity JNI libraries in one folder and Crosswalk libraries in second?

谢谢:)

推荐答案

当它读取Unity的 libunity.so 时,我遇到了与人行横道崩溃相同的问题,但是在坚持了几天之后我找到了一个解决方案:

I have had the same problem with crosswalk crashing when it reads Unity's libunity.so, but after being stuck on this for days I found a solution:

如果在加载人行横道之前加载了Unity的库,则人行横道不会崩溃。

要实现这一点,您需要通过调用

To achieve this you need to load Unity's library by calling

在MainActivity的 onCreate loadUrl(launchUrl); 之前$ c>。

before calling loadUrl(launchUrl); in your MainActivity's onCreate.

这适用于我使用Cordova 7.0.1,Crosswalk webview插件2.3.0和Unity 5.6.4p3的设置

This worked on my setup with Cordova 7.0.1, Crosswalk webview plugin 2.3.0 and Unity 5.6.4p3

这篇关于添加Crosswalk后,Unity JNI库的Android项目崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-30 09:25