webRTC合并本地源码修改和官方更新
一、总体思路:基于 Git 分支管理改动
origin/main
是官方 WebRTC 主干(来自webrtc.googlesource.com
)。my/webrtc
是你自己开发和修改的分支。每次 Google 更新 WebRTC,你从
origin/main
拉新代码,再把my/webrtc
分支 rebase 到新版本上,解决冲突,继续维护。
🛠️ 二、初始化步骤
1. 安装 depot_tools 并拉取源码
git clone https://webrtc.googlesource.com/src webrtc
cd webrtc
gclient sync
这一步生成了 src/
目录,WebRTC 官方源码全在这里。
2. 初始化 Git 分支结构
在 src/
目录中执行:
cd src
git remote rename origin upstream #重命名远程仓库
验证:
git remote -v
# 应该输出:
# upstream https://webrtc.googlesource.com/src (fetch)
# upstream https://webrtc.googlesource.com/src (push)
git checkout -b my/webrtc #创建自己的分支
upstream
指代 WebRTC 官方主仓库
my/webrtc
是你自己的开发分支,所有改动都在这个分支做
验证:
git branch
输出中带星号的是当前所在分支,例如:
main
* my/webrtc
✍️ 三、修改源码 & 提交
比如你要修改 modules/audio_processing
中某个类:
vim modules/audio_processing/some_class.cc
# 查看修改(还没 add)
git status
完成后使用正常的 Git 操作提交:
git add modules/audio_processing/some_class.cc
# 再次查看状态(显示为 staged)
git status
git commit -m "Fix AEC for low-latency stream"
你可以持续提交多个功能点,每个提交只做一件事。
🔁 四、同步 WebRTC 官方更新的完整流程
每隔一段时间 Google 会发布新版本,你需要更新:
1. 拉取 upstream 的新代码
git checkout main
git fetch upstream
git merge upstream/main
或者:
git pull upstream main
更新成功后,main
就是最新的 WebRTC。
2. 回到你自己的分支,执行 rebase
git checkout my/webrtc
git rebase main
这步将你所有的改动重新套用在最新版的 WebRTC 上。
🔧 如果出现冲突:
Git 会提示冲突位置,你需要:
# 修改冲突的文件
git add <冲突文件>
git rebase --continue
多次冲突就多次解决,每次 --continue
。
✅ 五、变更管理技巧
📍查看变更历史
git log --oneline --graph --all
#只查看自己的修改提交
git log --oneline my/webrtc ^main
📍查看分支差异
git diff main..my/webrtc
可以明确看到你对官方版本做了哪些修改。
🎁 六、备份你的分支(可选)
你可以将 my/webrtc
推送到你自己的 Git 仓库备份:
git remote add origin_my git@github.com:yourname/webrtc-custom.git
git push -u origin_my my/webrtc
🧩 七、优点总结
项目 | 本地分支法优势 |
---|---|
🎯 改动隔离 | 改动集中在 my/webrtc ,不污染官方主干 |
🆕 易于升级 | 官方版本更新后可直接 rebase |
⚙️ 适合 patch | 可生成 .patch 分享或自动合并 |
🤝 团队协作 | 多人合作时更容易管理每人改动 |
🧪 举个例子:
你要替换官方的 AudioDevice 模块(模拟设备):
修改文件:
modules/audio_device/fake_audio_device.cc
新建分支并提交修改:
git checkout -b my/webrtc_audio_patch
git commit -am "Replace fake audio device with custom simulator"
后续 WebRTC 更新时:
git checkout main
git pull upstream main
git checkout my/webrtc_audio_patch
git rebase main
如有冲突就解决冲突,继续。
VS Code 完全可以帮你图形化完成 git add
和 git commit
的工作,而且比命令行方便很多。
✅ 一次性设置好后,你只需在 VS Code 中点几下就能完成修改、提交。
🔧 前提条件:
确保你已经在 VS Code 中打开了 WebRTC 的源码目录(例如 ~/webRTC/webRTC_Android/src
)。
🚀 使用 VS Code 提交修改的操作流程:
修改文件(正常在编辑器中编辑代码即可)
打开 Source Control 面板(快捷键
Ctrl+Shift+G
或点击左侧第 3 个图标)你会看到修改文件列表(和 git status 一样)
鼠标悬停每个文件,点 ➕(stage,也就是
git add
)或者点右上角的 “+” 一键全部
add
下方输入提交信息(commit message)
点击 ✔(commit)按钮
就等价于
git commit -m "你的提交说明"
✅ 进阶:让 VS Code 自动帮你完成 git add
(选填)
你可以设置:
json
复制编辑
"git.enableSmartCommit": true
然后 按 Ctrl+Enter
可以直接提交当前所有修改(自动 add)。
设置方法:
打开
File > Preferences > Settings
搜索
git enableSmartCommit
勾选它 ✅
✅ 再进阶:添加“自动提交扩展插件”(可选)
如果你想一保存文件就自动提交,可以安装插件:
🔌 Auto Commit
但一般我们不建议“自动提交”,还是建议手动 review 后再提交,避免提交垃圾或 debug 测试代码。
总结
操作 | 命令行 | VS Code 图形界面等价操作 |
---|---|---|
修改代码 | 编辑器修改文件 | 编辑器修改文件 |
git add | git add xxx | Source Control 面板点 + |
git commit | git commit -m | 填写信息,点 ✔ |
git diff | git diff | 点击文件查看差异(带颜色) |