前提:
- 本文前提是假设开发者本地已经存在完整的gclient sync过,能够正常编译的Chromium工程代码。
步骤:
选择tag:
- 通常,我们选择chrome最新发布的稳定版相关连的tag作为最新的开发分支。
git tag | sort
- 上述命令选择对应的一个Tag即可。
- 例如:
- 笔者当下查询到的最新的chrome稳定内核为:122.0.6261.57
- git tag能够查询到的,一般就是: 122.0.6261.x
- 此时,就选择前面三个号段都一致的对应的最新版本即可。
切换src分支:
- src作为主git,需要切换到对应的tag,创建一个你的开发分支
git checkout -b android_dev_tag_122.0.6261.9 122.0.6261.9
# 对于Git 2.23及以上版本,推荐使用git switch命令
git switch -c android_dev_tag_122.0.6261.9 122.0.6261.9
gclient同步:
- 因为对应的src主git切换了分支,切到了对应的tag,需要执行gclient,sync整体的submodule等相关配置,也切换到对应的tag关联的commit,这样的环境才是最稳定的。
gclient sync --with_branch_heads --with_tags
编译:
- 随后就可以基于这个tag,做开发了。
- 一般情况下,gn创建out编译目录,也建议创建一个对应的tag名称。这样就可以一套代码,保存多个tag或分支的编译产物了。
gn gen out/122.0.6261.9
Q&A
depot_tools的vpython报错:
发现最近depot_tools在做改造,比如vpython已经修改成了vpython3
所以在高版本的内核tag,往低版本的tag切换的时候,会碰到各种报错
- 有vpython找不到的
- 也有vpython执行过程中出现一些莫名其妙的NoneType问题。
经过实验,比如想要从122版本切换回到101版本。
- 先去depot_tools
touch .disable_auto_update
- 随后把depot_tools切回到 101版本的chromium代码的日期(如果101是2023年7月,那depot_tools切回这个时间的版本,就好)
- 随后再去执行sync到对应tag的操作即可
pgo校验编译报错:
- 部分内核版本,可以需要开启pgo编译配置优化:
- 需要在project根目录,修改.gclient配置:
solutions = [
{
"name": "src",
"url": xxxxxxxxxx/chromium-src.git",
"managed": False,
"custom_deps": {},
"custom_vars": {
"checkout_pgo_profiles": True,
},
},
]
target_os = ["android"]
主要是开启checkout_pgo_profiles
随后需要重新
gclient runhooks