You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Chromium仓库移除冗余依赖?构建轻量版Chromium

构建轻量版Chromium:移除iOS/Android/ChromeOS/Chromecast依赖的实操步骤

一、深化gclient依赖排除(基于你现有配置补充)

你当前的custom_deps已排除部分平台目录,可进一步追加冗余依赖项,减少同步体积:

solutions = [
    { "name"        : 'src',
      "url"         : 'https://chromium.googlesource.com/chromium/src.git',
      "deps_file"   : 'DEPS',
      "managed"     : False,
      "custom_deps" : {
          # 保留你已配置的排除项
          "src/third_party/catapult": None,
          "src/third_party/devtools-frontend": None,
          "src/third_party/ffmpeg": None,
          "src/third_party/libjingle": None,
          "src/third_party/widevine": None,
          "src/chrome/android": None,
          "src/ios": None,
          "src/chromeos": None,
          "src/components/cast_channel": None,
          # 补充更多平台专属依赖
          "src/ash": None,
          "src/android_webview": None,
          "src/components/cast": None,
          "src/components/mirroring": None,
          "src/third_party/blink/renderer/modules/mediacast": None,
      },
      "custom_vars": {},
    },
]

执行gclient sync完成依赖同步,确保这些目录不会被拉取到本地。

二、通过GN构建系统禁用平台特性

Chromium的构建逻辑由GN管控,需在构建参数中明确禁用目标平台:

  1. 编辑或创建out/[你的构建目录]/args.gn,添加以下配置:
# 指定目标桌面系统,比如linux/win/mac
target_os = "linux"
# 禁用移动与ChromeOS平台
disable_android = true
disable_ios = true
chromeos = false
# 禁用Chromecast相关功能
enable_cast = false
enable_media_router = false
# 按需禁用其他冗余特性
enable_widevine = false
enable_ffmpeg = false
enable_devtools = false
  1. 运行gn gen out/[你的构建目录]重新生成构建文件。

三、清理代码中的平台条件编译逻辑

Chromium大量使用宏定义实现多平台兼容,需移除或调整相关代码:

  • 全局搜索OS_ANDROID、OS_IOS、OS_CHROMEOS、CAST_ENABLED等宏,删除对应的代码块,或确保这些宏在目标构建中不会被触发。
  • 检查src/build/config/BUILDCONFIG.gn,确认目标平台的宏定义已正确设置,避免默认启用ChromeOS/Android相关逻辑。
  • 删除src/chrome/browser、src/components下仅针对移动/ChromeOS的子目录,比如src/chrome/browser/android、src/chrome/browser/chromeos,注意保留跨平台共享代码。

四、修复依赖引用错误

同步或构建时可能出现头文件缺失、符号未定义等问题,需针对性处理:

  • 检查各模块的BUILD.gn文件,移除对已排除目录的依赖引用,比如删除deps中指向//chrome/android、//ios的条目。
  • 若核心模块依赖了平台专属代码,可修改模块逻辑,或用空实现替代非核心功能代码。

五、逐步迭代测试

  • 每次修改后执行ninja -C out/[你的构建目录] chrome触发构建,根据错误提示逐一清理剩余的平台依赖。
  • 优先解决编译错误,再处理链接错误,最后验证基础浏览、页面渲染等核心功能是否正常。

内容的提问来源于stack exchange,提问作者Ryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 15:31:06