Android 应用程序中嵌入的 Chromium 或 Webkit

Embedded Chromium or Webkit in Android app

提问人:Christian Klauser 提问时间:5/17/2013 最后编辑:CommunityChristian Klauser 更新时间:12/9/2021 访问量:49691

问:

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

背景

我们应用程序的重要部分由嵌入在视图中的网页片段组成(由应用程序本身提供)。我们试图尽可能透明地做到这一点(从视觉/用户体验的角度来看)。到目前为止,我们一直在使用 WebView,并且在大多数情况下都有效。除非它没有。

不幸的是,一些手机供应商决定在这里和那里调整标准的Android浏览器。在某些情况下,这会破坏我们的应用程序或使我们嵌入网页的事实更加明显。

我们的理念

我们希望有一个类似于 WebView 的组件,但我们控制使用的 Webkit/Chromium(或其他渲染引擎)版本。它不一定是最新和最好的版本。更重要的是,我们可以让我们的应用程序在尽可能多的 Android 设备上一致地工作。

迄今

到目前为止,我们的研究还没有发现任何有用的东西。我们发现了三次将 Webkit 移植到 NDK 的失败尝试(裸 Webkit for Android 端口使用了 NDK 中不可用的功能,因此不适用于应用程序开发人员):

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

我们目前正在研究 Chromium for Android(或其部分)是否可以变成我们的应用程序可以使用的库。还有其他人这样做过吗?

更新

在看了一下 GitHub 上的 chromeview 项目(已接受的答案)后,我们决定宁愿等待 Google 在未来的 Android 设备上发布基于 Chrome 的 WebView。Chromium 渲染引擎相当大(~40MB),这并没有为实际的应用程序留下太多空间:(

安卓 webkit android-ndk

评论

2赞 ajh158 6/13/2013
你决定如何前进了吗?你能提供关于你的进展或你尝试过的任何更新吗?
1赞 Bach 7/12/2014
一年后,从这篇文章开始,我们正在尝试类似的方法。@Christian 你有什么更新或技巧要分享吗?我们使用 WebView 已经太久了。谢谢
0赞 Christian Klauser 7/14/2014
@Bach:我们最终放弃了这种方法。主要是因为目标设备越来越多地融合到具有合理嵌入式浏览器版本的集合。此外,Android 现在提供了自己的基于 Chromium 的 WebView: developer.android.com/guide/webapps/migrating.html 我们只是忍受限制或开发原生应用程序。

答:

13赞 Satoshi Deguchi 6/5/2013 #1

pwnall/chromeview ·GitHub https://github.com/pwnall/chromeview

ChromeView 的工作方式类似于 Android 的 WebView,但由最新的 Chromium 代码提供支持。

评论

0赞 Tom McKenzie 12/4/2013
ChromeView 显然有一个错误,即当您滚动时(在 #Issues 下)显示的图像不会更新,除非您嵌入了与 WebView 接口截然不同的替代视图类型,并且集成起来更加困难。
4赞 Codebeat 3/20/2014
此外,它还为您的应用程序增加了高达 40MB 的空间
0赞 Bach 7/12/2014
这个项目似乎已经死了。还有其他选择吗?
3赞 Satoshi Deguchi 10/23/2014
人行横道 crosswalk-project.org 有更好的方法。如果您唯一需要担心的 WebView 是最新版本的 Google Chromium,该怎么办?使用Crosswalk,你可以
0赞 Sergio Belevskij 5/11/2015
Git 项目 Pwnall 现在已经过时了,GitHub 上的最新更新已经有两年了。
5赞 Gintas 12/7/2013 #2

没有 WebKit,就有一个 GeckoView。当然,它为项目添加了超过 20Mb 的库。

10赞 flo von der uni 8/14/2014 #3

你们都应该看看Crosswalk项目。由英特尔赞助,并正在积极开发中。他们提取了 Chromium 源,并承诺在 6 周内在 Crosswalk 中提供所有新的 Chromium 功能。

Crosswalk是一个用于雄心勃勃的HTML5应用程序的Web运行时。它提供了现代浏览器的所有功能,并结合了深度设备集成和用于添加本机扩展的 API。它特别适用于移动设备。

Crosswalk支持基于ARM和Intel架构的Android 4.0及更高版本。

在找到这个项目的一小时内,我的Cordova/Phonegap应用程序在带有Crosswalk的Android手机上运行。我很高兴我不必调整我的 Javascript 代码来尊重(4.4 之前)android.webkit.WebView 的缺点。

https://crosswalk-project.org

评论

0赞 Masoud Dadashi 7/4/2015
Crosswalk的问题在于他们的WebView必须是二进制版本。一个用于英特尔 CPU 架构,一个用于 ARM。我们如何知道用户的设备正在使用哪个平台?除非有一个库,而不是两个库,否则它实际上并没有那么有用
0赞 hariszaman 7/11/2015
您可以有一个包含 armeabi 和 x_86 库的 apk。但问题是它添加到二进制文件中的 40MB 大小
1赞 David Refoua 8/31/2020
太糟糕了,现在已经停产了。我现在热切地寻找合适的替代品。
0赞 Oded Breiner 9/28/2015 #4

我会考虑 Chrome 自定义标签:

https://developer.chrome.com/multidevice/android/customtabs

2赞 Ken 10/17/2015 #5

我尝试使用最新的 Chromium 代码版本来构建自定义 WebView,并且成功了。

我现在将给出我的方法,但不是源代码。

最终,自定义 WebView 库的大小约为 30MB,对于一些小型应用程序来说相当大。但它很棒,因为可以完美地支持 Android 4.0。

以下是我的方法:

  • 获取 chromium 的源代码并构建web_view_apk(AndroidWebView 测试shell),请按照此说明 https://www.chromium.org/developers/how-tos/android-build-instructions

  • 使用 apktool 反编译上面 Aw Shell 的 apk 文件。https://ibotpeaches.github.io/Apktool/

  • 使用 res、lib 文件夹创建您的项目,与反编译的项目相同。

  • 清单文件位于 /src/android_webview/test/src/org/chromium/shell 中

  • src 文件夹:您可以在 Chromium 项目源代码中找到类,这些类与反编译项目的 smali 文件夹中的文件相对应。

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

评论

0赞 Ken 6/22/2016
我基于 Chromium 构建了一个功能齐全的 Web 视图,但由于某些原因我无法共享我的代码。对不起@Vaia
0赞 Yogesh Seralia 7/25/2016
您好@Ken现在已经快一年了,但我尝试按照您提到的步骤进行操作,但它仍然没有给我满意的结果,我可以将这个项目导入 Android Studio 或任何其他 IDE 吗?我问你,是否还需要任何其他步骤来点缀它?
0赞 Ken 7/25/2016
它看起来像 ChromeView 项目:github.com/pwnall/chromeview 。虽然这个项目已被弃用。但它可能对您入门有用。
0赞 Allinone51 3/6/2019
@Ken,我知道这已经很老了,但你能分享更多你是如何做到这一点的吗?我需要重写一个全新的 WebView 吗?仅仅包含 libchromium.so 库和其他一些小修改就足够了吗?我的应用程序中需要最新 Chromium 版本的一些功能,这些功能必须与 KitKat 兼容......提前致谢!
4赞 Javier Antón 2/19/2019 #6

如今,GeckoView 似乎是一个值得考虑的替代方案