首页 > Browser > 关于Chrome for Android

关于Chrome for Android

1, Chrome for Android与Chromium for Android

Chrome是google的一个商标, 所以我们谈及Chrome的时候特指由Google发布的Chrome浏览器,而Chromium则是Chrome浏览器的对应的开源项目(http://www.chromium.org/)。 简单的说Chrome即是在Chromium的源代码基础上做一些产品化的工作并由Google发布出来的浏览器。Chrome for Android亦是如此。

2, Chromium for Android的源代码

目前,Chromium for Android的源代码并没有完全开放出来。 开放出的元带埋在Chromium的源代码目录树中,只需要很少的配置即可变异出Android版本的Chromium所需要的核心模块。 在Chromium的源代码中, 主要的部分已经开源并可以工作(WebKit、多进程框架、页面渲染、基本的事件处理、单元测试模块以及一个用于测试的基本的浏览器Shell程序)。 可以采用Git来检出所有的源代码:
http://code.google.com/p/chromium/wiki/UsingNewGit

3, 编译Chromium for Android及测试运行Shell程序(Content Shell)

关于编译,具体可参照官方的链接:
http://code.google.com/p/chromium/wiki/AndroidBuildInstructions
有几点需要注意的是:

(1) 在gclient sync之前.gclient文件中必须有target_os = [‘android’], 以确保编译Android版本所需要的第三方库都能够被正确的检出。
(2) 编译X86版本时,先运行“. build/android/envsetup.sh –target-arch=x86”,官方的链接中并没有更新到最新。
(3) 目前只支持Linux下的编译,推荐使用64-bit的系统。
编译完成后便可以在你的设备/模拟器上运行Content Shell以测试基本的网页浏览功能。 Content Shell是一个包含了浏览/渲染网页功能的精简浏览器,它比完整的浏览器缺少了诸如多标签、历史记录管理、隐私模式等浏览器外围功能,但是却包含了浏览网页的所有基本功能,可以认为它是一个MiniBrowser。

4, Chromium/Chrome for Android的多进程架构

与桌面版的Chrome相同,Chrome for Android同样是多进程架构。

$ adb shell ps |grep chrome
u0_a14    30488 133   640160 108380 ffffffff 40073823 S com.android.chrome
u0_i183   30507 133   586036 51800 ffffffff 40073823 S com.android.chrome:sandboxed_process0
u0_i185   30607 133   589576 54368 ffffffff 40073823 S com.android.chrome:sandboxed_process2 

其中com.android.chrome为browser进程,com.android.chrome:sandboxed_process*为renderer进程。类似的Content Shell也是同样的实现:

$adb shell ps |grep content
u0_a82    30654 133   802692 95876 ffffffff 40073823 S org.chromium.content_shell
u0_i186   30683 133   742732 54528 ffffffff 40073823 S org.chromium.content_shell:sandboxed_process0

Chrome for Android的renderer进程是Android Service, 而其sandbox则依赖于Android (4.1, Jelly Bean)的UID isolation(http://source.android.com/tech/security/#the-application-sandbox)特性。

5,Chromium for Android的渲染

目前Chromium for Android仅支持hardware-accelerated compositing,且没有像其他平台一样采用GPU进程,而是使用在Browser进程里的GPU线程。 硬件加速的实现依赖于Android SurfaceView。

分类:Browser
  1. 还没有评论。
  1. No trackbacks yet.

留下评论