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

下面我将分步详细说明如何获取它,以及如何进行学习和编译。
核心概念:Android 浏览器 = Chromium + Android 系统集成
首先要明确一个关键点:Android 上的网页浏览器并不是一个完全独立的项目,它是由两个主要部分组成的:
- Chromium 内核:这是浏览器的心脏,负责渲染网页、运行 JavaScript、处理网络请求等,Chromium 是 Google Chrome 的开源基础,也是一个庞大的独立项目。
- Android System WebView:这是 Android 系统的一个组件,它是一个“壳”,负责将 Chromium 内核嵌入到 Android 应用框架中,这样,所有的 Android App(如微信、QQ、系统自带的浏览器)都可以通过调用这个组件来显示网页内容。
当您下载 Android 浏览器的源码时,您实际上是在下载一个将 Chromium 与 Android 系统集成的项目。
第一步:下载 Android 浏览器源码
最权威的源码来自 AOSP,您需要使用 repo 工具来下载,因为它涉及多个 Git 仓库。

前提条件
- 操作系统:Linux 或 macOS (推荐),Windows 系统也可以,但配置相对复杂,建议使用 WSL2)。
- 硬盘空间:至少 200GB 的可用空间,Chromium 和 AOSP 的源码非常庞大。
- Git:确保您的系统已安装 Git。
repo工具:Google 的代码管理工具。
操作步骤
-
安装
repo工具 在您的终端中,创建一个目录(aosp-browser),然后下载repo脚本并赋予执行权限。mkdir aosp-browser cd aosp-browser curl https://storage.googleapis.com/git-repo-downloads/repo > repo chmod a+rx repo
-
配置 Git
repo工具需要使用您的 Git 身份来提交代码(即使是本地同步),请配置您的用户名和邮箱。git config --global user.name "Your Name" git config --global user.email "you@example.com"
-
初始化仓库并指定分支 Android 浏览器相关的代码主要在
packages/apps/Browser和system/webview等模块中,但最完整的体验是下载一个包含所有组件的完整分支。AOSP 的代码库是按分支组织的,每个分支对应一个 Android 版本。
android-13.0.0_r1对应 Android 13。
(图片来源网络,侵删)# 初始化 repo,并指定要下载的 Android 版本分支 # 这里以 Android 13 为例 ./repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r1
提示:如果您想获取最新的代码,可以使用
android-mainline或android-mainline-preview分支,但这会是一个持续变动的快照,对于学习和稳定开发,建议选择一个具体的版本分支。 -
同步代码 这是最耗时的一步,可能需要几个小时甚至更长时间,具体取决于您的网络速度和硬盘性能。
# 开始下载源码 # -j4 表示使用 4 个线程并行下载,您可以根据 CPU 核心数调整 ./repo sync -j4
等待命令执行完毕,您就在
aosp-browser目录下拥有了完整的 Android 13 源码。
第二步:定位和浏览浏览器相关的源码
下载完成后,您可以在以下几个关键目录中找到浏览器相关的源码:
-
WebView 的核心实现
- 路径:
system/webview/ - 说明: 这是 WebView 的主要实现目录,包含了与 Android 系统交互的 Java/Kotlin 代码以及用于构建 WebView 库的
Android.bp文件,它负责加载和整合 Chromium 内核。
- 路径:
-
独立的浏览器应用
- 路径:
packages/apps/Browser/ - 说明: 这是 Android 系统自带的一个简单的浏览器应用的源码,它使用 WebView 来显示网页,您可以把它看作是一个使用 WebView 的“示例应用”,如果您想了解如何在自己的 App 中集成 WebView,这里是最好的学习起点。
- 路径:
-
Chromium 内核源码
- 路径:
external/chromium/ - 说明: 这是 Chromium 项目的源码,位于 AOSP 仓库的一个子目录中,这是整个浏览器的核心,包含了 Blink (渲染引擎)、V8 (JS 引擎)、网络栈等所有复杂组件。这个目录极其庞大。
- 路径:
-
WebView 的 Java/Kotlin 接口
- 路径:
frameworks/base/core/java/android/webkit/ - 说明: 这里定义了 WebView 在 Android Framework 层的公共 API,
WebView类、WebViewClient、WebChromeClient等,这些是 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
- Ubuntu/Debian:
- 设置编译环境:
# 在 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 源码是更好的选择。
-
安装 Git
-
克隆仓库:
# 克隆主仓库 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
这同样会下载一个非常庞大的代码库。
-
编译 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 浏览器源码的探索之旅!
