我想对定位Android SDK 22 (5.1)
的应用程序进行一些更改。
我在 Android Studio 3 中加载了该项目,获得了Gradle升级消息。当然,这样做会使整个事情爆炸,因为新Gradle处理依赖关系的方式变得非常挑剔。我决定全力以赴,只做整个迁移。无论如何都必须在某个时候这样做。
应用程序使用XWalkView
(在类中扩展)而不是本机Webview,因为我们希望运行一些WebGL。 Xwalk正在嵌入而不是共享。
只需将Gradle文件更新为最新的Libs,基本上将Android支持更改为最新版本和目标SDK,使应用程序在启动时崩溃(直接崩溃消息)在Android 7+设备上(Oreo在emu上测试)。应用程序之前正确加载。 Logcat如下:
在应用程序代码中,崩溃似乎来自以下行:
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
我发现它有两个版本:
我删除了maven版本并手动包含了这些文件。当我使用arm64位时,我实际上可以在Android 7平台上使用该应用程序而没有任何问题。但是后来我在其他版本中遇到了相同的xwalk崩溃。对于arm库,事情可以追溯到以前的状态。
他们无法一起工作。构建时出现Duplicate zip file
错误。
所以更新的问题是: 有没有办法告诉gradle每个架构使用哪个库文件?我一直在环顾四周,但找不到东西。
答案 0 :(得分:0)
我设法解决了这个问题。这是图书馆的兼容性问题,包括JNI。
maven加载的库只包括armeabi-v7a
和x86
" .so"文件。
我所做的是从here手动下载库的常规和arm64 aar版本,解压缩它们,将 arm64-v8a jni文件夹内容移到另一侧,然后使用jar cvf [yourLibName].aar -C [folderName]/ .
(不要忘记结尾处的点)命令重新包装aar。
现在一切似乎都运转良好。一旦我设法在设备上进行测试,希望Oreo也会好的。