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

如何将Chrome扩展预打包进自行编译的Chromium分发包?

把自定义Chrome扩展预打包到编译版Chromium的完整步骤

我之前帮团队搞定过把自定义Chrome扩展预打包进编译版Chromium的需求,确实论坛上的零散信息不够完整,我把亲测有效的步骤整理给你:

1. 准备工作:规范你的扩展文件

首先确保你的扩展符合Chromium内置扩展的要求:

  • 移除manifest.json里的update_url字段(内置扩展不需要自动更新)
  • 如果用Manifest V3,确认Chromium源码版本支持(建议用对应版本的Chromium源码,避免兼容性问题)
  • 把扩展的所有文件(manifest、js、html、资源等)整理到一个单独的文件夹,比如命名为my_custom_extension

2. 将扩展放入Chromium源码目录

把你的扩展文件夹放到Chromium源码的chrome/common/extensions/extensions/目录下,这个目录是Chromium存放官方内置扩展的地方,我们的自定义扩展也放在这里。

3. 配置内置扩展列表

需要修改两个核心文件,让Chromium编译时识别你的扩展:

3.1 修改chrome/common/extensions/builtin_extensions_list.h

打开这个头文件,在kBuiltInExtensions数组里添加你的扩展信息:

constexpr BuiltInExtension kBuiltInExtensions[] = {
    // 保留原有官方扩展的条目
    {"abcdefghijklmnopqrstuvwxyzabcdef", "extensions/my_custom_extension",
     BuiltInExtension::Type::kComponent, base::Time::UnixEpoch()},
    // ...其他扩展
};
  • 第一个字符串是你的扩展ID,可以通过Chrome加载未打包的扩展后,在chrome://extensions里查看(开启开发者模式就能看到)
  • 第二个字符串是扩展在源码里的相对路径(就是我们刚才放的extensions/my_custom_extension)
  • Type::kComponent表示这是一个组件扩展,内置在Chromium中

3.2 为扩展添加BUILD配置

在你的扩展文件夹my_custom_extension里新建一个BUILD.gn文件,内容如下:

import("//chrome/common/extensions/extension_resource.gni")

extension_resource("my_custom_extension") {
  sources = [
    "manifest.json",
    "background.js",
    "popup.html",
    "popup.js",
    // 列出你的扩展所有需要打包的文件,包括图片、css等资源
  ]
  root_dir = "."
}

这个文件告诉Chromium的编译系统要把哪些文件打包进最终的二进制里。

3.3 更新主BUILD文件

打开chrome/browser/BUILD.gn,找到builtin_extensions数组,添加你的扩展:

builtin_extensions = [
    // 保留原有条目
    "//chrome/common/extensions/extensions/my_custom_extension",
]

4. 处理敏感权限(如果你的扩展需要)

如果你的扩展用到了敏感权限(比如tabs、webRequest等),需要在chrome/common/extensions/permissions/builtin_extension_permissions.h里添加权限声明,避免Chromium启动时阻止扩展:

constexpr const char* kMyCustomExtensionPermissions[] = {
    "tabs",
    "webRequest",
    // 你的扩展需要的权限
};

然后在builtin_extension_permissions.cc里把这个数组关联到你的扩展ID:

constexpr BuiltInExtensionPermissions kBuiltInExtensionPermissions[] = {
    // 原有条目
    {"abcdefghijklmnopqrstuvwxyzabcdef", kMyCustomExtensionPermissions},
};

5. 编译Chromium

按照正常的Chromium编译流程执行编译命令,比如:

autoninja -C out/Default chrome

编译完成后,启动生成的Chromium,打开chrome://extensions(开启开发者模式),你会看到你的自定义扩展已经被内置加载了,不需要再用Selenium安装CRX。

常见坑点提醒

  • 扩展ID一定要准确,否则Chromium无法识别
  • Manifest版本要和Chromium源码版本兼容(比如Chromium 110+推荐Manifest V3)
  • 如果扩展有依赖的第三方库,要确保这些库也被打包进扩展目录,或者在BUILD配置里正确引用
  • 测试时可以用--enable-logging=stderr启动Chromium,查看是否有扩展加载失败的日志

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:14:29