0

我想对应用程序目标进行一些更改Android SDK 22 (5.1)

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

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

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

Xwalk 崩溃

在应用程序代码中,崩溃似乎源自以下行: XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);,它位于类扩展 中Application,而该类又包含所用工具的调试/发布配置。删除所述行允许应用程序正常工作,直到它实际尝试加载XWalkView.

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

我一直在互联网上寻找可能的解决方案,但还没有找到有用的东西。我知道人行横道已被弃用,可能应该被替换,但 Android 中没有提供 WebGL 支持,我目前看不到当前图形发生变化。

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

希望有人可以阐明。提前致谢。

编辑:

经过一番玩耍,我发现问题出在库文件上。下载crosswalk.aar我发现它有2个版本:

  • 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 每个架构使用哪个库文件?我一直在四处寻找,但我找不到任何东西。

4

1 回答 1

0

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

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

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

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

于 2018-01-25T02:53:35.213 回答