如何从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管控,需在构建参数中明确禁用目标平台:
- 编辑或创建
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
- 运行
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
相关产品推荐
相关产品推荐

