我有Android应用程序,我嵌入我在Unity 3D中制作的游戏。应用程序的其他部分是用Cordova / Ionic编写的,我需要使用Crosswalk来支持旧的Android手机。
但是当我将Crosswalk添加到我的项目中时,应用程序在启动后立即崩溃并输出以下内容:
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有一些问题
我相信这是因为Crosswalk试图在libunity.so中找到“XW_Initialize函数”,并且不知何故它会导致整个应用程序崩溃。
当我使用Crosswalk-Lite时,一切正常,除了网络视频(在crosswalk-lite中禁用),遗憾的是,我需要这样做。
有没有办法告诉人行横道不要加载libunity.so作为扩展?
或者是否有可能在一个文件夹中安装Unity JNI库,在第二个文件夹中安装Crosswalk库?
谢谢:)
答案 0 :(得分:0)
有点晚了,但是当我使用这个命令安装Crosswalk时,它起作用了:
cordova plugin add cordova-plugin-crosswalk-webview --variable XWALK_VERSION="15" --variable XWALK_MODE="lite"
为什么;我不知道。但是,我几乎可以肯定它不是关于神秘的&#34; XW_Initialize&#34;作为crosswalk的函数也为非Unity .so文件提供了类似的警告(对我来说至少)。
修改强>
显然,设置版本为15不是必需的;只需将设置模式设置为Lite即可:
cordova plugin add cordova-plugin-crosswalk-webview --variable XWALK_MODE="lite"
答案 1 :(得分:0)
在阅读Unity libunity.so
时,我遇到了与人行横道崩溃相同的问题,但在坚持了几天之后,我找到了一个解决方案:
如果在加载人行横道之前加载了Unity的库,那么人行横道就不会崩溃。
要实现此目的,您需要通过调用
来加载Unity的库的System.loadLibrary(&#34;统一&#34);
在您的MainActivity loadUrl(launchUrl);
中致电onCreate
之前。
这适用于我使用Cordova 7.0.1,Crosswalk webview插件2.3.0和Unity 5.6.4p3的设置