引言
本章详细介绍了如何为自定义的 CDP Domain 创建 custom_config.json
文件,并通过修改 BUILD.gn
文件来确保自定义的配置文件参与编译。我们通过 inspector_protocol_generate
配置段自动生成自定义 Domain 的头文件和实现文件,并成功将其集成到构建系统中。通过这些步骤,开发者能够实现自定义 CDP 功能的配置与构建,确保自定义 Domain 的指令和事件能够在 Chromium 中正常运行。
创建 custom_config.json 文件
- 打开目录:
使用文件浏览器或终端,导航到 chrome\browser\devtools
目录。确保在该目录中创建新文件,以便于组织和管理 DevTools 相关的配置文件。
- 创建 JSON 文件:
在该目录下,创建一个新的文件,命名为 custom_config.json
。确保文件扩展名为 .json
,以便于后续解析和使用。
- 编写配置内容:
打开 custom_config.json
文件,按照以下结构编写内容,以配置新定义的 Domain 和指令:
我们增加custom_config.json 代码
{"use_snake_file_names": true,"use_title_case_methods": true,"protocol": {"package": "chrome/browser/devtools/protocol","output": "protocol","namespace": [ "protocol" ],"options": [{"domain": "CustomCDP","include": ["cdpVersion"],"include_events": []}]},"lib": {"package": "chrome/browser/devtools/protocol","output": "protocol","protocol_traits": "third_party/inspector_protocol/crdtp/chromium/protocol_traits.h"},"crdtp": {"namespace": "crdtp"}
}
接下来我们需要增加 chrome\browser\devtools\BUILD.gn 来让我们的custom_config.json 参与编译
chrome\browser\devtools\BUILD.gn 的编辑
在处理custom_config.json相关的编译时不像pdl那般简单因为我们需要通过ninja 编译时产生许多CDP所需要的头文件和协议文件所以我们要在 chrome\browser\devtools\BUILD.gn 加入更复杂的内容
建立 inspector_protocol_generate 代码段
我们需要inspector_protocol_generate在 gen\chrome\browser\devtools\protocol 下生成我们的cdp handler 所需的头文件这里要注意的是gen\chrome\browser\devtools\protocol下生成的文件名是根据 Domain名字自动生成的比如我们的Domain名是 CustomCDP那么对应的名字就是custom_cdp.h 这里在写gn和实现时都要注意
inspector_protocol_generate("protocol_generated_sources_custom") {inspector_protocol_dir = _inspector_protocolvisibility = [ ":*" ] # Only targets in this file can depend on this.deps = [ ":concatenate_protocols" ]out_dir = target_gen_dir#配置文件config_file = "custom_config.json"use_embedder_types = trueprotocol_path = rebase_path(_concatenated_protocol_path, root_build_dir)config_values = [ "protocol.path=$protocol_path" ]inputs = [_concatenated_protocol_path,"custom_config.json"]outputs = [#这里注意文件名要根据自己定义的domain来"protocol/custom_cdp.cc","protocol/custom_cdp.h",]}
然后我们需要把这个 protocol_generated_sources_custom_cdp 加入到编译所需的依赖里
我们需要找到 static_library("devtools") 配置段然后再找到对应的deps位置加入 protocol_generated_sources_custom_cdp
这样可以确保我们在编译浏览器时这部分的配置会产生对应的协议头文件生成
然后这里我们还要加入这个部分
因为 protocol_generated_sources_custom_cdp 只是会帮助你生成gen\chrome\browser\devtools\protocol 下的头文件但是对于gn系统来说这些文件并没有被加入到编译的tree里所以在此处吧这些文件路径重新加入到sources 这样确保生成出来的.h文件和.cc文件能正确加入编译
总结
本章详细介绍了如何为自定义的 CDP Domain 创建 custom_config.json
文件,并通过修改 BUILD.gn
文件来确保自定义的配置文件参与编译。我们通过 inspector_protocol_generate
配置段自动生成自定义 Domain 的头文件和实现文件,并成功将其集成到构建系统中。通过这些步骤,开发者能够实现自定义 CDP 功能的配置与构建,确保自定义 Domain 的指令和事件能够在 Chromium 中正常运行。