Android 系统自带的网页浏览器(基于 Chromium)的源代码可以在 Google 官方的 AOSP (Android Open Source Project) 代码仓库中找到。

android 网页浏览器源码下载
(图片来源网络,侵删)

下面我将分步详细说明如何获取它,以及如何进行学习和编译。


核心概念:Android 浏览器 = Chromium + Android 系统集成

首先要明确一个关键点:Android 上的网页浏览器并不是一个完全独立的项目,它是由两个主要部分组成的:

  1. Chromium 内核:这是浏览器的心脏,负责渲染网页、运行 JavaScript、处理网络请求等,Chromium 是 Google Chrome 的开源基础,也是一个庞大的独立项目。
  2. Android System WebView:这是 Android 系统的一个组件,它是一个“壳”,负责将 Chromium 内核嵌入到 Android 应用框架中,这样,所有的 Android App(如微信、QQ、系统自带的浏览器)都可以通过调用这个组件来显示网页内容。

当您下载 Android 浏览器的源码时,您实际上是在下载一个将 Chromium 与 Android 系统集成的项目。


第一步:下载 Android 浏览器源码

最权威的源码来自 AOSP,您需要使用 repo 工具来下载,因为它涉及多个 Git 仓库。

android 网页浏览器源码下载
(图片来源网络,侵删)

前提条件

  1. 操作系统:Linux 或 macOS (推荐),Windows 系统也可以,但配置相对复杂,建议使用 WSL2)。
  2. 硬盘空间至少 200GB 的可用空间,Chromium 和 AOSP 的源码非常庞大。
  3. Git:确保您的系统已安装 Git。
  4. repo 工具:Google 的代码管理工具。

操作步骤

  1. 安装 repo 工具 在您的终端中,创建一个目录(aosp-browser),然后下载 repo 脚本并赋予执行权限。

    mkdir aosp-browser
    cd aosp-browser
    curl https://storage.googleapis.com/git-repo-downloads/repo > repo
    chmod a+rx repo
  2. 配置 Git repo 工具需要使用您的 Git 身份来提交代码(即使是本地同步),请配置您的用户名和邮箱。

    git config --global user.name "Your Name"
    git config --global user.email "you@example.com"
  3. 初始化仓库并指定分支 Android 浏览器相关的代码主要在 packages/apps/Browsersystem/webview 等模块中,但最完整的体验是下载一个包含所有组件的完整分支。

    AOSP 的代码库是按分支组织的,每个分支对应一个 Android 版本。android-13.0.0_r1 对应 Android 13。

    android 网页浏览器源码下载
    (图片来源网络,侵删)
    # 初始化 repo,并指定要下载的 Android 版本分支
    # 这里以 Android 13 为例
    ./repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r1

    提示:如果您想获取最新的代码,可以使用 android-mainlineandroid-mainline-preview 分支,但这会是一个持续变动的快照,对于学习和稳定开发,建议选择一个具体的版本分支。

  4. 同步代码 这是最耗时的一步,可能需要几个小时甚至更长时间,具体取决于您的网络速度和硬盘性能。

    # 开始下载源码
    # -j4 表示使用 4 个线程并行下载,您可以根据 CPU 核心数调整
    ./repo sync -j4

    等待命令执行完毕,您就在 aosp-browser 目录下拥有了完整的 Android 13 源码。


第二步:定位和浏览浏览器相关的源码

下载完成后,您可以在以下几个关键目录中找到浏览器相关的源码:

  1. WebView 的核心实现

    • 路径: system/webview/
    • 说明: 这是 WebView 的主要实现目录,包含了与 Android 系统交互的 Java/Kotlin 代码以及用于构建 WebView 库的 Android.bp 文件,它负责加载和整合 Chromium 内核。
  2. 独立的浏览器应用

    • 路径: packages/apps/Browser/
    • 说明: 这是 Android 系统自带的一个简单的浏览器应用的源码,它使用 WebView 来显示网页,您可以把它看作是一个使用 WebView 的“示例应用”,如果您想了解如何在自己的 App 中集成 WebView,这里是最好的学习起点。
  3. Chromium 内核源码

    • 路径: external/chromium/
    • 说明: 这是 Chromium 项目的源码,位于 AOSP 仓库的一个子目录中,这是整个浏览器的核心,包含了 Blink (渲染引擎)、V8 (JS 引擎)、网络栈等所有复杂组件。这个目录极其庞大
  4. WebView 的 Java/Kotlin 接口

    • 路径: frameworks/base/core/java/android/webkit/
    • 说明: 这里定义了 WebView 在 Android Framework 层的公共 API,WebView 类、WebViewClientWebChromeClient 等,这些是 App 开发者最常接触的部分。

学习建议

  • 初学者:从 packages/apps/Browser/ 开始,了解一个浏览器 App 的基本结构。
  • Android App 开发者:重点研究 frameworks/base/core/java/android/webkit/system/webview/,理解 WebView 的工作原理和如何进行定制。
  • 浏览器内核开发者:直接深入 external/chromium/,这相当于进入了另一个世界。

第三步:编译和运行源码

编译整个 AOSP 代码是一项巨大的工程,通常需要强大的机器和大量的时间,但您可以只编译您关心的部分。

环境准备

  • 安装 Java JDK 11:AOSP 编译需要 JDK 11。
  • 安装构建工具
    • Ubuntu/Debian: sudo apt-get install build-essential
    • macOS: 使用 Xcode Command Line Tools
  • 设置编译环境
    # 在 aosp-browser 目录下执行
    source build/envsetup.sh

选择编译目标

  • 编译整个系统镜像: 这会生成一个可以刷入设备的系统镜像,命令如下:

    lunch aosp_x86_64-eng  # 选择一个模拟器目标,x86_64 架构
    make -j8 systemimage   # 使用 8 个线程编译系统镜像

    这会非常耗时,通常需要数小时。

  • 只编译 Browser App: 这是更高效的方式,适合快速修改和测试 App。

    # 在执行了 source build/envsetup.sh 之后
    mm -j8 packages/apps/Browser/

    mm 命令会编译当前目录及其依赖,编译成功后,生成的 .apk 文件会在 out/ 目录中。

  • 只编译 WebView: 如果您想修改 WebView 的实现,可以只编译它。

    mm -j8 system/webview/

运行和调试

  • 使用模拟器: AOSP 自带了 Android 模拟器,您可以启动一个模拟器来运行和测试您的修改。
    # 启动模拟器
    emulator

    您可以将编译好的 .apk 文件通过 adb 安装到模拟器中进行测试。


替代方案:下载独立的 Chromium 源码

如果您的主要兴趣是浏览器内核本身,而不是它与 Android 的集成,那么直接下载 Chromium 源码是更好的选择。

  1. 安装 Git

  2. 克隆仓库

    # 克隆主仓库
    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
    export PATH="$PATH:`pwd`/depot_tools"
    # 创建工作目录并进入
    mkdir chromium && cd chromium
    # 下载 .gclient 文件并同步
    fetch --nohooks android
    gclient sync

    这同样会下载一个非常庞大的代码库。

  3. 编译 Chromium for Android: Chromium 官方提供了在 Android 上编译和运行的详细文档,您可以参考其官方文档进行操作。

选项 优点 缺点 适合人群
下载 AOSP 源码 - 完整的 Android 浏览器生态
- 可以研究 WebView 和系统的深度集成
- 官方、权威
- 文件巨大(200GB+)
- 编译极其耗时复杂
- 需要强大的硬件
- Android 系统开发者
- 想定制 WebView 的应用开发者
- 研究浏览器在 Android 上完整实现的研究者
下载独立 Chromium 源码 - 专注浏览器内核本身
- 社区庞大,文档丰富
- 可以编译成 App 在手机上直接运行
- 不包含 Android 系统集成部分
- 同样非常庞大
- 浏览器内核开发者
- 前端引擎工程师
- 对 Blink/V8 感兴趣的开发者

给您的建议

  • 如果您是 Android App 开发者,希望在自己的 App 中使用或优化 WebView,请从 AOSP 入手,重点研究 packages/apps/Browser/system/webview/
  • 如果您是 浏览器内核开发者,或者对 Web 渲染、JS 引擎有浓厚兴趣,请直接下载 Chromium 源码。

希望这份详细的指南能帮助您顺利开始 Android 浏览器源码的探索之旅!