【问题标题】:Embedded Chromium or Webkit in Android appAndroid 应用程序中的嵌入式 Chromium 或 Webkit
【发布时间】:2013-05-12 07:59:33
【问题描述】:

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

背景

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

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

我们的想法

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

到目前为止

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

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

我们目前正在研究是否可以将Chromium for Android(或其中的一部分)转换为我们的应用可以使用的库。有其他人这样做过吗?

更新

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

【问题讨论】:

  • 你决定如何前进了吗?您能否提供有关您的进度或尝试的任何更新?
  • 这篇文章一年后,我们正在尝试类似的方法。 @Christian 你有任何更新或提示要分享。我们一直在使用 WebView 撞墙太久了。谢谢
  • @Bach:我们最终放弃了这种方法。主要是因为目标设备越来越多地融合到具有合理嵌入式浏览器版本的集合中。此外,Android 现在提供自己的基于 Chromium 的 WebView:developer.android.com/guide/webapps/migrating.html 我们只是忍受限制或开发原生应用程序。

标签: android webkit android-ndk chromium


【解决方案1】:

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

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

【讨论】:

  • ChromeView 显然有一个错误,即当您滚动时(在#Issues 下)显示的图像不会更新,除非您将具有完全不同界面的替代视图类型嵌入到 WebView,并且更难以集成。
  • 此外,它还会为您的应用增加高达 40MB 的空间
  • 那个项目似乎已经死了。有其他选择吗?
  • Crosswalk crosswalk-project.org 有更好的方法。如果您唯一需要担心的 WebView 是最新版本的 Google Chromium 怎么办?使用人行横道,您可以
  • git 项目 pwnall 现在已经过时了,github 上的最新更新已经两年了。
【解决方案2】:

你们都应该看看 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

【讨论】:

  • crosswalk 的问题是他们的 webview 必须是二进制版本。一种用于 Intel cpu 架构,一种用于 ARM。我们如何知道用户的设备正在使用哪个平台?除非有一个库,而不是两个,否则它实际上并没有那么有用
  • 您可以拥有一个包含 armeabi 和 x_86 库的 apk。但问题是它添加到二进制文件中的大小为 40MB
  • 可惜现在已经停产了。我现在正在热切地寻找合适的替代方案。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

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

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

      这是我的方法:

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

      【讨论】:

      • 我基于 Chromium 构建了一个全功能的 webview,但由于某些原因我无法分享我的代码。对不起@Vaia
      • hello @Ken 现在快一年了,但我尝试按照你提到的步骤进行操作,但它仍然没有给我满意的结果作为 apk,我可以将此项目导入 Android Studio 或任何其他 IDE。我问你,是否需要任何其他步骤来点它?
      • 它看起来像 ChromeView 项目:github.com/pwnall/chromeview。虽然这个项目已被弃用。但它可能对您入门有用。
      • @Ken,我知道这已经过时了,但你能否分享更多关于你是如何实现这一目标的。我需要重写一个全新的 WebView 吗?仅包含 libchromium.so lib 和其他一些小的修改就足够了吗?我的应用中需要最新 Chromium 版本的一些功能,这些功能必须与 KitKat 兼容...提前致谢!
      【解决方案6】:

      我会考虑使用 Chrome 自定义标签:

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

      【讨论】:

        猜你喜欢
        • 2012-03-29
        • 2017-09-13
        • 2016-06-18
        • 2011-12-01
        • 1970-01-01
        • 2010-10-04
        • 2013-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多