将一个扩展内置到 Chromium 中

作为一个 Chromium 专家,我可以帮助你将一个扩展内置到 Chromium 中。以下是一种实现此目标的方法:

  1. 首先,你需要获取 Chromium 的源代码。你可以按照 Chromium 官方文档 的说明在 Linux 系统上进行操作。对于其他操作系统,你可以查阅相应的文档。

  2. 在获取源代码后,将你想要内置的扩展的源代码复制到 Chromium 源代码目录中的某个位置,例如 src/chrome/browser/resources/custom_extension

  3. 接下来,需要在 Chromium 的构建文件中注册这个扩展。打开 src/chrome/BUILD.gn 文件,在其中找到 resources 目录下的 pak 目标,将你的扩展添加到其中。例如:

    pak("resources") {
      ...
      data_deps = [
        ...
        "//chrome/browser/resources/custom_extension:resources",
      ]
    }
    ```
    
    
  4. 现在需要为你的扩展创建一个新的构建文件。在你的扩展的源代码目录(例如 src/chrome/browser/resources/custom_extension)中创建一个名为 BUILD.gn 的文件,内容如下:

    import("//tools/grit/grit_rule.gni")
    
    grit("resources") {
      source = "resources.grd"
      outputs = [
        "$root_gen_dir/chrome/browser/resources/custom_extension/grit/custom_extension.h",
        "$root_gen_dir/chrome/browser/resources/custom_extension/grit/custom_extension_resources.h",
        "$root_gen_dir/chrome/browser/resources/custom_extension/grit/custom_extension_resources_map.cc",
        "$root_gen_dir/chrome/browser/resources/custom_extension/grit/custom_extension_resources_map.h",
      ]
      resource_ids = "//chrome/browser/resources/resource_ids"
    }
    
    source_set("custom_extension_resources_map") {
      sources = [
        "$root_gen_dir/chrome/browser/resources/custom_extension/grit/custom_extension_resources_map.cc",
        "$root_gen_dir/chrome/browser/resources/custom_extension/grit/custom_extension_resources_map.h",
      ]
      public_deps = [
        "//chrome/browser/resources:resource_ids",
      ]
    }
    ```
    
    
  5. 在同一个目录中创建一个名为 resources.grd 的文件,将你的扩展资源添加到其中。例如:

    <?xml version="1.0" encoding="UTF-8"?>
    <grit xmlns="urn:ietf:params:xml:ns:grit" latest_public_release="0" current_release="1" enc_check="iso-8859-1" type="chrome">
      <outputs>
        <output filename="grit/custom_extension.h" type="rc_header" />
        <output filename="grit/custom_extension_resources.h" type="rc_all" />
        <output filename="grit/custom_extension_resources_map.cc" type="resource_map_source" />
        <output filename="grit/custom_extension_resources_map.h" type="resource_map_header" />
      </outputs>
      <release allow_pseudo="false" seq="1">
        <file path="your_extension_manifest.json" name="IDR_CUSTOM_EXTENSION_MANIFEST" type="BINDATA" />
        <file path="your_extension_background_script.js" name="IDR_CUSTOM_EXTENSION_BACKGROUND_SCRIPT" type="BINDATA" />
        <!-- 添加其他扩展文件,如 HTML、CSS、图片等 -->
      </release>
    </grit>
    ```
    
    请将 `your_extension_manifest.json`、`your_extension_background_script.js` 等替换为你的实际扩展文件名。
    
    
  6. 最后,我们需要让 Chromium 在启动时自动加载这个扩展。打开 src/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc,将你的扩展 ID 添加到其中:

    const char* const kAllowed[] = {
      ...
      "你的扩展ID",
    };
    ```
    
    同时,在 `src/chrome/browser/extensions/extension_service.cc` 文件中找到 `ComponentLoader::AddDefaultComponentExtensions()` 函数,在其中添加加载你的扩展的代码:
    
    ````cpp
    void ComponentLoader::AddDefaultComponentExtensions() {
      ...
      Add(IDR_CUSTOM_EXTENSION_MANIFEST, base::FilePath(FILE_PATH_LITERAL("custom_extension")));
      ...
    }
    ```
    
    
  7. 在完成上述步骤后,你可以重新构建 Chromium,安装完成后,你的扩展将自动加载。以下是构建 Chromium 的步骤:

    1. 在源代码根目录(例如 src)中运行:

      gn gen out/Default
      

      这将生成一个名为 out/Default 的构建目录。

    2. 接下来,构建 Chromium:

      autoninja -C out/Default chrome
      

      这可能需要一段时间。构建完成后,你将在 out/Default 中找到可执行的 Chromium 文件。

现在,当你运行构建好的 Chromium 时,你的扩展将自动加载。请注意,此方法可能在将来的 Chromium 版本中失效,因为源代码可能会发生变化。在这种情况下,你需要根据最新的源代码进行调整。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值