Android - Oreo迁移后Xwalk崩溃

时间:2018-01-17 06:07:15

标签: android crash webgl android-gradle-3.0 android-architecture

我想对定位Android SDK 22 (5.1)的应用程序进行一些更改。

我在 Android Studio 3 中加载了该项目,获得了Gradle升级消息。当然,这样做会使整个事情爆炸,因为新Gradle处理依赖关系的方式变得非常挑剔。我决定全力以赴,只做整个迁移。无论如何都必须在某个时候这样做。

应用程序使用XWalkView(在类中扩展)而不是本机Webview,因为我们希望运行一些WebGL。 Xwalk正在嵌入而不是共享。

只需将Gradle文件更新为最新的Libs,基本上将Android支持更改为最新版本和目标SDK,使应用程序在启动时崩溃(直接崩溃消息)在Android 7+设备上(Oreo在emu上测试)。应用程序之前正确加载。 Logcat如下:

Xwalk crash

在应用程序代码中,崩溃似乎来自以下行: XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);, 它位于扩展Application的类中,而后者只支持所用工具的Debug / Release配置。删除所述行允许应用程序正常工作,直到它实际尝试加载XWalkView

该应用在Android 4.4(适用于应用的SDK为19分钟),5.0(21)和6.0(23)上正常运行。

我一直在网上寻找可能的解决方案,但还没找到有帮助的东西。我知道crosswalk已经弃用,应该可以替换,但是Android中没有给出WebGL支持,我现在看不到当前的图形变化。

如果有任何其他信息可能有帮助,请告诉我,我会提供。

希望有人可以解释一下。提前谢谢。

修改

经过一番游戏后,我发现问题出在库文件中。下载crosswalk.aar我发现它有两个版本:

  • xwalk_core_library-23.53.589.4-arm.aar
  • xwalk_core_library-23.53.589.4-arm64.aar

我删除了maven版本并手动包含了这些文件。当我使用arm64位时,我实际上可以在Android 7平台上使用该应用程序而没有任何问题。但是后来我在其他版本中遇到了相同的xwalk崩溃。对于arm库,事情可以追溯到以前的状态。

他们无法一起工作。构建时出现Duplicate zip file错误。

所以更新的问题是: 有没有办法告诉gradle每个架构使用哪个库文件?我一直在环顾四周,但找不到东西。

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。这是图书馆的兼容性问题,包括JNI。

maven加载的库只包括armeabi-v7ax86" .so"文件。

我所做的是从here手动下载库的常规和arm64 aar版本,解压缩它们,将 arm64-v8a jni文件夹内容移到另一侧,然后使用jar cvf [yourLibName].aar -C [folderName]/ .(不要忘记结尾处的点)命令重新包装aar。

现在一切似乎都运转良好。一旦我设法在设备上进行测试,希望Oreo也会好的。