在Android应用中嵌入Chromium或Webkit

59
对于我们的Android应用程序,我们希望嵌入自己的浏览器/渲染引擎。最可能的候选者是Webkit/Chromium。我们正在寻找类似于WebView的东西,但由我们控制的浏览器(版本)支持。

背景

我们应用程序的重要部分包括在视图中嵌入的网页片段(由应用程序本身提供)。我们尽可能透明地进行操作(从视觉/用户体验角度)。到目前为止,我们一直在使用WebView,这在大多数情况下都有效。除非它不起作用。
有些手机厂商不幸地决定在此处和那里调整标准Android浏览器。在某些情况下,这会破坏我们的应用程序或使我们嵌入网页的事实更加明显。

我们的想法

我们希望有一个类似于WebView的组件,但是我们可以控制使用哪个版本的Webkit/Chromium(或其他渲染引擎)。它不一定必须是最新和最好的版本。更重要的是,我们可以让我们的应用程序在尽可能多的Android设备上正常工作。
到目前为止,我们的研究没有找到任何有用的东西。我们发现了三次死亡尝试将Webkit移植到NDK(裸的Android Webkit端口使用了NDK中不可用的功能,因此无法供应用程序开发者使用)。

在StackOverflow上查看,我们还发现了许多类似的问题,大部分都是通过指向WebView来解决的(我们已经这样做了,但不够好)

我们目前正在调查是否可以将Chromium for Android(或其中的某些部分)转化为库,供我们的应用程序使用。有其他人这样做过吗?
更新
在查看了GitHub上的chromeview项目后(接受的答案),我们决定等待Google在未来的Android设备上发布基于Chrome的WebView。Chromium渲染引擎相当大(约40MB),这并不留下太多空间给实际的应用程序 :(

2
你决定如何前进了吗?你能提供一些关于你的进展或尝试的更新吗? - ajh158
1
这篇文章发表一年后,我们正在尝试类似的方法。@Christian 你有什么更新或建议可以分享吗?使用 WebView 已经让我们撞了太久的墙了。谢谢。 - Bach
@Bach:我们最终放弃了这种方法。主要是因为目标设备越来越收敛到一组具有合理嵌入式浏览器版本的设备上。此外,Android现在提供了基于Chromium的自己的WebView:http://developer.android.com/guide/webapps/migrating.html我们只能接受这些限制或者开发本地应用程序。 - Christian Klauser
6个回答

13

ChromeView 显然存在一个 bug,即当您滚动时(在#Issues下),显示的图像不会更新,除非您嵌入具有完全不同于 WebView 的界面的替代视图类型,并且更难集成。 - Tom McKenzie
4
同时,它会让你的应用程序增加高达40MB的体积。 - Codebeat
3
有一个更好的选择。如果你只需要关心一个WebView是否与最新版本的Google Chromium保持一致,会怎样呢?使用Crosswalk,你可以实现这一点。 - Satoshi Deguchi
git项目pwnall现在已经过时了,GitHub上的最新更新已经两年没有更新了。 - Sergio Belevskij
如果你正在寻找一个可以作为库集成到你的应用程序中的浏览器实现(并且不过时/已弃用),你可以查看下面其他答案中指出的GeckoView。GeckoView由Mozilla积极开发。 - LCZ
显示剩余3条评论

10
你们应该都去看看Crosswalk项目,由英特尔赞助并正在积极开发中。他们获取了Chromium的源代码,并承诺在六周内将所有新的Chromium功能提供给Crosswalk。
Crosswalk是一个适用于雄心勃勃的HTML5应用程序的网页运行时。它提供了现代浏览器的所有功能,结合了深度设备集成和添加本地扩展的API。它特别适用于移动设备。
Crosswalk支持ARM和英特尔体系结构上的Android 4.0及更高版本。
在发现这个项目的一个小时内,我已经用Crosswalk在Android手机上运行了我的Cordova / Phonegap应用。我很高兴不必调整我的Javascript代码来解决(4.4之前的)android.webkit.WebView的缺陷。 https://crosswalk-project.org

Crosswalk的问题在于他们的Webview有两个二进制版本。一个是针对Intel CPU架构的,另一个是针对ARM的。我们怎么知道用户设备使用的是哪个平台?除非只有一个库而不是两个,否则这并不实用。 - Masoud Dadashi
你可以在一个apk中同时包含armeabi和x_86库。但问题是这会增加40MB的二进制文件大小。 - hariszaman
1
太遗憾了,这个现在已经停止了。我现在正在热切地寻找一个合适的替代品。 - David Refoua

5

如果没有WebKit,可以使用GeckoView。但是它会向项目中添加超过20Mb的库。


4
现在,GeckoView似乎是需要考虑的替代选择。

2
我尝试使用最新的Chromium代码版本来构建自定义的WebView,并且成功了。
我会分享我的方法,但现在不会分享源代码。
最终,自定义的WebView库的大小约为30MB,对于一些小应用程序而言,这相当大。但它非常好,因为可以完美支持Android 4.0及以上版本。
以下是我的方法:

我稍后会更新我的代码,但如果您不想等待,现在可以尝试我的指南。


我基于Chromium构建了一个完整功能的Webview,但由于某些原因无法分享我的代码。抱歉@Vaia。 - Ken
你好 @Ken,已经快一年了,但我按照你提到的步骤尝试了很多次,但是生成的apk文件仍然不能满足我需求。我能否将这个项目导入Android Studio或其他IDE中?我想问一下是否还需要进行其他步骤? - Yogesh Seralia
它将类似于ChromeView项目:https://github.com/pwnall/chromeview。尽管该项目已被弃用,但对于您的入门可能仍然有用。 - Ken
@Ken,我知道这已经过时了,但你能分享一下你是如何实现的吗?我需要重写一个全新的WebView吗?只包含libchromium.so库和一些其他小修改就足够了吗?我的应用程序需要与KitKat兼容,并且需要最新版本的Chromium的一些功能...提前感谢! - Allinone51

0

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