前提:

  • 本文前提是假设开发者本地已经存在完整的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
    

 评论