如何在我的Android库模块中添加Crosswalk WebView?

13
我正在开发一个Android库模块,其中必须包含Crosswalk Webview。我使用Github Sonatype(https://github.com/sonatype/)创建了该库。如果没有Crosswalk Webview,它可以正常工作。我尝试了以下三种方法来包含Crosswalk。

方法一:

  • 在我的库项目应用gradle中添加Crosswalk Webview库

  • 错误:(编译错误)

  • 无法解析:org.xwalk:xwalk_core_library:18.48.477.13

方法二:

方法3:

注意:我已经尝试了普通和共享模式的jar文件


第二种方法应该可行。我已经下载了 crosswalk-webview-18.48.477.13-arm 压缩文件,其中包含完整的 AS 模块。它包含一个 jar 文件、一些资源和一堆 .so 本地库,这些库是 CPU 依赖的(因此,如果你将其集成到你的库中,你将被困在只有 ARM 或 x86 二进制文件的境地,否则你将不得不为每个架构创建一个版本的库。简而言之:不要这样做,通过 gradle 导入。 - Mister Smith
在Gradle方法中,我无法构建我的示例项目。 - RDY
我刚刚意识到官方页面上已经没有Gradle教程了。显然,现在添加XWalk要复杂得多,需要使用npm工具完成。 - Mister Smith
我刚刚找到了这个链接 - Mister Smith
以上链接在普通的Android应用程序中可以正常工作,但是在库中却无法工作。 - RDY
应用 Gradle 中我添加了以下代码: compile 'org.xwalk:xwalk_core_library:18.48.477.13' 在这段代码之前,这个应用程序是可以运行的。但是当我把库转移并导入另一个应用程序时,我遇到了错误“无法解析:org.xwalk:xwalk_core_library:18.48.477.13”。 - RDY
1个回答

9
我会尽力帮助您翻译这段内容。这篇文章讲述了如何将一个使用three.js的stl loader演示从webview移植到XWalkView中运行。因为无论是WebGlRenderer还是CanvasRenderer,在webview中都不支持该演示。
以下是使用crosswalk模块的步骤:
第一步:选择“文件”->“新建”->“导入模块”。

File->New->Import Module

步骤2:选择模块并根据需要重命名。保留HTML,不解释。

select the module and rename if you need

步骤3:选择所有选项。

choose all the option

这里 Android Studio 可能会要求您更新,更新它。

enter image description here

步骤4:处理模块依赖关系。

process the module dependency enter image description here enter image description here

接下来,Gradle自动运行构建。我们已经完成了Crosswalk的导入。

步骤5 使用XWalkView

将以下权限添加到AndroidManifest.xml中。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在AndroidManifest.xml的应用程序节点上添加硬件加速。
android:hardwareAccelerated="true"

将此添加到布局文件中。
<org.xwalk.core.XWalkView 
 android:id="@+id/xWalkView"
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
</org.xwalk.core.XWalkView>

将此添加到活动中。
XWalkView mXWalkView = (XWalkView) findViewById(R.id.xWalkView);
mXWalkView.load("http://192.168.1.42/test", null);

在这里我们完成了使用webview和XWalkView来渲染three.js STL加载器的结果。

webview不支持。

webview not support

XWalkView 很好地支持了

XWalkView supports well

哈哈,它起作用了。
以下是另一种旧的实现方式,您也可以参考这篇好的[文章]或文档11
这里是源代码
https://crosswalk-project.org/documentation/downloads.html下载适当的Crosswalk Android Webview包并将其解压缩。
将xwalk_core_library_java.jar从Crosswalk libs复制到Android Studio项目的app/libs/中,并在文件上单击右键,选择“添加为库”。
将Crosswalk libs下的其他内容复制到app/src/main/jniLibs/中。
创建一个Android资源目录res2,并将Crosswalk res目录中的文件复制到此目录中。
将此添加到AndroidMenifest.xml中。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


and add android:hardwareAccelerated="true" to application node.to use hardware acceleration which is needed by crosswalk webview

将此添加到布局中。
<org.xwalk.core.XWalkView android:id="@+id/webview"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    </org.xwalk.core.XWalkView>

将此添加到 Activity。
XWalkView mXWalkView = (XWalkView) findViewById(R.id.webview);
    mXWalkView.load("http://xxxxxx.com", null);

如果您想远程调试,请添加此内容。
XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);

参考进程 - RDY
1
@RDY 我今天创建了一个新的,然后我刷新了我的答案。 - LF00
1
这个链接对我很有帮助,谢谢@Kris。https://github.com/punyfeir/TestCrosswalkEmbed2 - RDY
我说这个只支持ARM,是不是正确的?如果我想要同时支持x86和ARM怎么办?我不确定我应该下载和导入哪个模块。 - RobVoisey
你在源代码中使用了哪个版本的jar包?(GitHub链接) - asad.qazi
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接