Android - Oreo 迁移后 Xwalk 崩溃

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

我想对面向 Android SDK 22 (5.1) 的应用程序进行一些更改.

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

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

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

Xwalk crash

在应用程序代码中,崩溃似乎源于以下行:XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true); ,
这是在扩展 Application 的类中,它反过来只保存所用工具的调试/发布配置。删除所述行允许应用程序正常工作,直到它实际尝试加载 XWalkView 为止。 .

该应用程序在 Android 4.4 上正常运行(应用程序的 19 分钟 SDK)、5.0 (21) 和 6.0 (23)。

我一直在互联网上寻找可能的解决方案,但还没有找到有用的东西。我知道人行横道已被弃用,可能应该被替换,但 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 每个架构使用哪个库文件?我一直在环顾四周,但我找不到任何东西。

    最佳答案

    我设法解决了这个问题。这是与库中包含的 JNI 的兼容性问题。

    Maven 加载的库仅包含 armeabi-v7ax86 “.so”文件。

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

    目前一切似乎都运行良好。希望奥利奥也能好起来,一旦我设法在设备上进行测试。

    关于Android - Oreo 迁移后 Xwalk 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48294582/

    相关文章:

    android - 为什么调整大小会使我的图像看起来很奇怪?

    Android后台下载数据

    android - MVP 交互者和用例的关系

    c# - 当它在您的机器上运行良好时,您如何确定崩溃的原因?

    正常崩溃,但不是 GDB?

    javascript - THREE.Shape 挤出上的 ThreeJS 位图纹理

    android - 安卓的轮播库

    ios - 从Xcode 10和iOS 12开始的Fabric Answer崩溃iOS应用

    javascript - WebGL 中的体绘制

    javascript - Webgl Angular 循环非常慢