chromium android webview即将来袭?

在android 4.0发布之前,就有传闻chrome即将成为android的内置浏览器。Android 4.0发布后,证实只是采用了chromium的部分代码,主体还是WebKit for Android。以google的实力,将chrome搬到android是轻而易举的,随后发布的chrome for android就证明了这一点。但google没有这么快替换系统内置浏览器,主要原因还在于API兼容。在WebView API没有完全替代方案之前,Android默认web引擎是不会替换掉的。几个月前开始,chromium代码库开始出现了android_webview,这个项目就是要在chromium的基础上封装出和原来的WebView API完全兼容的API。

随着chromium的快速更新,android_webview下面的代码越来越完善了。五一在家研究了一番,发现已经可以build出AndroidWebView.apk,经过简单的修改后,已经可以加载网页,渲染网页了,但缺少事件处理。您可以从这里下载测试APK。程序界面如下图所示:

chromium_android_webview

从代码中可以得出如下信息:

1、运行在单进程模式下

2、同时支持软件渲染和硬件加速渲染(目前AndroidWebView走的是软件渲染路径)

Android WebView做这样的选择是有道理的,毕竟android硬件环境参差不齐。多进程支持/GPU渲染可以留给各厂商自行优化。本次的Google I/O即将开幕了,Android 5.0是否会闪亮登场呢?chrome是否成为android内置浏览器呢?让我们拭目以待吧。

如果您对chromium android WebView有兴趣,敬请关注开源项目:https://github.com/mogoweb/chromium_webview

chromium android webview即将来袭?》上有 15 条评论

  1. alex 文章作者

    google发布chrome for android之后,就提供了prebuilt库,允许设备厂商自己build chrome for android,所以出现chrome成为手机的默认浏览器也是正常的。我在这篇文章想表达的意思是:完全替代。NEXUS 4我手头没有,但就我的理解,webkit for android的代码肯定没有拿掉。第三方开发的WebAPP/hybrid app,肯定还是运行于Webkit for Android。

    回复
  2. 张毅然

    hi,楼主大神,请教Chrome Android上点击链接放大镜的效果 怎么实现的? 好像是判断手指点击的是2个链接才出来放大镜

    回复
  3. HellMagic

    嗨,你好,可以请教几个问题么:
    背景:我们现在也是自己开发了跨平台的App,但是对于原生的WebView很不满意所以想如何将Android默认的基于WebKit的WebView更换成chroimum的来最为渲染引擎。
    Q:
    1.自己编译chromium(不是chromium OS)也试过了(现在还在继续),但是不太乐观,所以想有没有编译好的可以拿来用的(虽然我知道并一定是针对我的需求来编译的,但是只要是按照官方来的应该就可以)
    PS:我之前还调研到有两种方式来编译chromium,一种是在ROM环境下编译,另一种就是官方的Instruction中介绍的单独编译,但是前者比起后者容易
    2.请教一下我上面提到的那个问题的思路,当前我想的是拿到编译后的so文件,然后通过JNI的方式来在我们的APP中使用。
    我也看了CEF,但是就像文章中提到的貌似可行性不高,所以不知道楼主有没有其他经验可分享的。
    搞这个也有一段时间了,真心发现有这种需求的不多,大家都是止于弄出来一个Content shell apk来玩玩看看,但都不怎么急需用到改善app——特别是web app——的性能中(我们html中用了很多CSS库和JS库,特别是JS)。
    任何建议和经验都感激不尽,可以的话Email也行,再感谢!

    回复
    1. alex

      1. 这个要看需求了,你可以参考https://www.codeaurora.org/xwiki/bin/Chromium+for+Snapdragon/WebHome 这个项目,这里有简单的多tab浏览器实现。
      2. 基于android source源码编译,编译出来的apk会小很多,但是由于链接了系统库,所以只能用于特定的版本,这种只适合手机厂商预置浏览器。第二种方法也很简单,按照指南一步步做就可以了,适应面会更广一些,只要android4.0的系统就可以了。
      3. 现在浏览器厂商都开始跟进chromium项目了。比如猎豹浏览器,海豚浏览器、opera都推出了基于chromium的浏览器。我们也是基于chromium开发了COS系统上的浏览器,各项性能指标远超android原生浏览器。但由于android平台的分裂,还有众多的手机运行android 4.0以下的系统。公司做产品都是要考虑市场的,在android 4.0以下系统没有退出舞台之前,不会转向chromium方案。

      回复
      1. HellMagic

        多谢答复。我们是软硬件都是自己做,而且当前用户很小所以没有太多市场考虑,纯需求而定。
        所以我想在app中使用chromium来代替android的webView就只能“编译chromium出.so文件,然后集成到项目中,然后使用JNI来调用”是么?怎么觉得这个难度好大,楼主知道有哪些项目这么做么?或者我的这个方案是靠谱的么?LZ有什么见解么?最近一直在观摩你的博客的内容,目前来看LZ是直接做了一个android平台上的浏览器,这个和我的问题背景不一样吧——你这是一个单独直接使用chromium来做的一个产品。难道真的就没有一种可以使用原来Android WebView的API而真正调用的引擎是chromium的简单方法么?我看到LZ介绍的这篇文章(http://www.ituring.com.cn/article/40831)中说“android源码中已经有相当于Brage from AwContents to WebView 的部分了,只是没开源”——那我不解的是为什么“桥”都搭好了,不把chromium for android这一头接上呢(这个桥不就是解决的API兼容的问题么)?难道只能等到最后Google来把chromium替换进去么?这要等到什么时候呀?
        LZ都CFE和ChromeView两个对于chromium的作用也做过简单说明,不过我好像理解的不到位,希望再详解一下,多谢分享!!!

        回复
  4. HellMagic

    哦,还有个问题,文章中提到“最近chromium中的android_webview下面的代码越来越完善了,可以编译出一个AndoridWebView.apk了”。此处的AndroidWebView.apk和根据chromium for android编译出的content shell的apk是一回事么?content shell apk是有一段时间之前就可以编出一个apk的吧?还是说就是最近才有的chromium for android?

    回复
    1. alex

      不是一回事,AndroidWebView.apk是基于AwContents开发的,AwContents是在Content API之上封装的WebView API, 加上这层封装,原来基于android webview API的程序可以无缝切换到chromium方案。

      回复
      1. HellMagic

        正点!!!还是上面我的理解,LZ这里提到的“原来基于android webview API的程序可以无缝切换到chromium方案”我不是太明白?原来app中用到的WebView的渲染引擎变成了chromium么?那我的目的算是达到了,可是应该不是这样吧…

        回复
  5. jason

    为什么从github上下载的源码没有.project文件? 大神可以提供一个你那个浏览器的完整的eclipse项目给我吗? 我现在在做个程序,不能用webview,只能用chromium来作为浏览器打开某个特定页面,这个项目很急!!!麻烦大神提供帮助!!!谢谢啦!!!!!

    回复
  6. 匿名

    lz,请教一个问题,我在
    https://github.com/pwnall/chromeview
    这里下载了源代码,按照上面的流程下载,发现并不能渲染网页,想请教楼主是为什么?

    回复

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>