当前位置: 首页 > article >正文

【环境搭建】1.1源码下载与同步

目录

写在前面

一,系统要求

二,安装depot_tools

三,获取代码

四,代码同步 

五,代码结构


写在前面

当前的开发背景是基于Google的开源Chromium,来开发Android设备的浏览器方案。

一,系统要求

  • 运行 Linux 的 x86-64 计算机,至少配备 8GB RAM。强烈建议配备 16GB 以上 RAM。
  • 至少 100GB 的可用磁盘空间。
  • 必须已经安装 Git 和 Python。

大多数开发都是在 Ubuntu 上完成的,所以建议最好是在Ubuntu上完成开发环境的搭建。

二,安装depot_tools

克隆depot_tools仓库:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

添加depot_tools到 PATH 的末尾(如~/.bashrc或中~/.zshrc)。假设克隆depot_tools/path/to/depot_tools

export PATH="$PATH:/path/to/depot_tools"

三,获取代码

mkdir ~/chromium && cd ~/chromium
fetch --nohooks android

如果不想获取完整的 repo 历史记录,可以通过添加--no-history参数来节省fetch的时间

即使网络连接良好,fetch命令也需要 30 分钟,而如果网络连接不稳定或速度较慢,可能需要数小时。

fetch完成后,它将在工作目录中创建一个隐藏.gclient文件和一个名为的目录src,切换到scr目录下

cd src

四,代码同步 

fetch过程中可能会发生异常断开,如网络连接问题等,可以使用gclient sync继续同步:

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/bill/.cache/vpython-root.1000/store/cpython+l5fnajrvijf7cvdkjqmbicg3i8/contents/lib/python3.11/shutil.py", line 853, in move
    os.rename(src, real_dst)
FileNotFoundError: [Errno 2] No such file or directory: '/home/bill/02_chromium/code/src' -> '/home/bill/02_chromium/code/_bad_scm/srcgi8b4dry/src'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/bill/02_chromium/depot_tools/metrics.py", line 302, in print_notice_and_exit
    yield
  File "/home/bill/02_chromium/depot_tools/gclient.py", line 4670, in <module>
    sys.exit(main(sys.argv[1:]))
             ^^^^^^^^^^^^^^^^^^
  File "/home/bill/02_chromium/depot_tools/gclient.py", line 4656, in main
    return dispatcher.execute(OptionParser(), argv)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bill/02_chromium/depot_tools/subcommand.py", line 254, in execute
    return command(parser, args[1:])
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bill/02_chromium/depot_tools/gclient.py", line 4009, in CMDsync
    ret = client.RunOnDeps('update', args)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bill/02_chromium/depot_tools/gclient.py", line 2449, in RunOnDeps
    work_queue.flush(revision_overrides,
  File "/home/bill/02_chromium/depot_tools/gclient_utils.py", line 1045, in flush
    reraise(e[0], e[1], e[2])
  File "/home/bill/02_chromium/depot_tools/gclient_utils.py", line 54, in reraise
    raise value
  File "/home/bill/02_chromium/depot_tools/gclient_utils.py", line 1124, in run
    self.item.run(*self.args, **self.kwargs)
  File "/home/bill/02_chromium/depot_tools/gclient.py", line 1251, in run
    self._got_revision = self._used_scm.RunCommand(
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bill/02_chromium/depot_tools/gclient_scm.py", line 137, in RunCommand
    return getattr(self, command)(options, args, file_list)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bill/02_chromium/depot_tools/gclient_scm.py", line 664, in wrapper
    return_val = f(*args)
                 ^^^^^^^^
  File "/home/bill/02_chromium/depot_tools/gclient_scm.py", line 835, in update
    self._DeleteOrMove(options.force)
  File "/home/bill/02_chromium/depot_tools/gclient_scm.py", line 209, in _DeleteOrMove
    shutil.move(self.checkout_path, dest_path)
  File "/home/bill/.cache/vpython-root.1000/store/cpython+l5fnajrvijf7cvdkjqmbicg3i8/contents/lib/python3.11/shutil.py", line 873, in move
    copy_function(src, real_dst)
  File "/home/bill/.cache/vpython-root.1000/store/cpython+l5fnajrvijf7cvdkjqmbicg3i8/contents/lib/python3.11/shutil.py", line 448, in copy2
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/home/bill/.cache/vpython-root.1000/store/cpython+l5fnajrvijf7cvdkjqmbicg3i8/contents/lib/python3.11/shutil.py", line 256, in copyfile
    with open(src, 'rb') as fsrc:
         ^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/home/bill/02_chromium/code/src'

Subprocess failed with return code 1.
bill@MS-OLZZYEYREIDZ:~/02_chromium/code$ fetch --nohooks android
Running: gclient root
Your current directory appears to already contain, or be part of,
a checkout. "fetch" is used only to get new checkouts. Use
"gclient sync" to update existing checkouts.

Fetch also does not yet deal with partial checkouts, so if fetch
failed, delete the checkout and start over (crbug.com/230691).
gclient sync
bill@MS-OLZZYEYREIDZ:~/02_chromium/code$ gclient sync -j8

________ running 'git -c core.deltaBaseCacheLimit=2g clone --no-checkout --progress https://chromium.googlesource.com/chromium/src.git /home/bill/02_chromium/code/_gclient_src_rutw765q' in '/home/bill/02_chromium/code'
Cloning into '/home/bill/02_chromium/code/_gclient_src_rutw765q'...
remote: Finding sources: 100% (6084/6084)
remote: Total 24630445 (delta 17947971), reused 24628946 (delta 17947971)
Receiving objects: 100% (24630445/24630445), 51.76 GiB | 12.50 MiB/s, done.
Resolving deltas: 100% (17947971/17947971), done.

[1:20:34] Still working on:
[1:20:34]   src

[1:20:44] Still working on:
[1:20:44]   src

[1:20:54] Still working on:
[1:20:54]   src

[1:21:04] Still working on:
[1:21:04]   src
1>Syncing projects:   0% ( 0/ 2)
[1:21:10] Still working on:
[1:21:10]   src

[1:21:10] Still working on:
[1:21:10]   src
Syncing projects:  99% (372/375) src/third_party/dawn/third_party/webgpu-cts
[1:29:56] Still working on:
[1:29:56]   src/third_party/chromium-variations
[1:29:56]   src/v8
[1:29:56]   src/third_party/angle/third_party/VK-GL-CTS/src

[1:29:58] Still working on:
[1:29:58]   src/third_party/chromium-variations
[1:29:58]   src/v8
[1:29:58]   src/third_party/angle/third_party/VK-GL-CTS/src
Syncing projects:  99% (374/375) src/third_party/angle/third_party/VK-GL-CTS/src
[1:31:51] Still working on:
[1:31:51]   src/third_party/chromium-variations

[1:32:01] Still working on:
[1:32:01]   src/third_party/chromium-variations

[1:32:11] Still working on:
[1:32:11]   src/third_party/chromium-variations

[1:32:21] Still working on:
[1:32:21]   src/third_party/chromium-variations

[1:32:31] Still working on:
[1:32:31]   src/third_party/chromium-variations

[1:32:41] Still working on:
[1:32:41]   src/third_party/chromium-variations

[1:32:51] Still working on:
[1:32:51]   src/third_party/chromium-variations

[1:33:01] Still working on:
[1:33:01]   src/third_party/chromium-variations

[1:33:11] Still working on:
[1:33:11]   src/third_party/chromium-variations

[1:33:21] Still working on:
[1:33:21]   src/third_party/chromium-variations

[1:33:31] Still working on:
[1:33:31]   src/third_party/chromium-variations

[1:33:41] Still working on:
[1:33:41]   src/third_party/chromium-variations

[1:33:51] Still working on:
[1:33:51]   src/third_party/chromium-variations

[1:34:01] Still working on:
[1:34:01]   src/third_party/chromium-variations

[1:34:11] Still working on:
[1:34:11]   src/third_party/chromium-variations

[1:34:17] Still working on:
[1:34:17]   src/third_party/chromium-variations
Syncing projects: 100% (375/375), done.
Hook 'vpython3 -vpython-spec src/.vpython3 -vpython-tool install' took 46.21 secs
Hook 'python3 src/testing/generate_location_tags.py --out src/testing/location_tags.json' took 30.32 secs
Running hooks: 100% (112/112), done.

五,代码结构

下面是代码同步完成后的代码目录:

bill@MS-OLZZYEYREIDZ:~/02_chromium/code$ ls
_bad_scm  src

bill@MS-OLZZYEYREIDZ:~/02_chromium/code/src$ ls
ATL_OWNERS           PRESUBMIT_test.py        chrome               extensions    mojo               signing_keys
AUTHORS              PRESUBMIT_test_mocks.py  chromecast           fuchsia_web   native_client      skia
BUILD.gn             README.md                chromeos             gin           native_client_sdk  sql
CODE_OF_CONDUCT.md   WATCHLISTS               clank                google_apis   net                storage
CPPLINT.cfg          android_webview          codelabs             gpu           out                styleguide
CRYPTO_OWNERS        apps                     codereview.settings  headless      pdf                testing
DEPS                 ash                      components           infra         ppapi              third_party
DIR_METADATA         base                     content              internal      printing           tools
LICENSE              build                    crypto               ios           remoting           ui
LICENSE.chromium_os  build_overrides          dbus                 ios_internal  rlz                url
OWNERS               buildtools               device               ipc           sandbox            v8
PRESUBMIT.py         cc                       docs                 media         services           webkit 


http://www.kler.cn/a/527941.html

相关文章:

  • MySQL知识点总结(十七)
  • 阿里云 - RocketMQ入门
  • 深度学习的应用
  • Git 版本控制:基础介绍与常用操作
  • Kafka 消费端反复 Rebalance: `Attempt to heartbeat failed since group is rebalancing`
  • 论文阅读(九):通过概率图模型建立连锁不平衡模型和进行关联研究:最新进展访问之旅
  • 计算机网络之ISO/OSI参考模型和TCP/IP模型
  • 【4Day创客实践入门教程】Day0 创想启程——课程与项目预览
  • 【Qt5】声明之后快速跳转
  • WPS mathtype间距太大、显示不全、公式一键改格式/大小
  • 三次方根pow
  • Python 列表思维导图
  • 使用Pygame制作“太空侵略者”游戏
  • (即插即用模块-特征处理部分) 十九、(NeurIPS 2023) Prompt Block 提示生成 / 交互模块
  • leetcode 844 比较含退格的字符串
  • 利用 AMD Instinct™ MI300X 提升计算流体动力学性能
  • cf1000(div.2)
  • 微服务实战 原生态实现服务的发现与调用_如何发现应用的服务调用问题
  • 从 UTC 日期时间字符串获取 Unix 时间戳:C 和 C++ 中的挑战与解决方案
  • P1158
  • 19 压测和常用的接口优化方案
  • Python从0到100(八十六):神经网络-ShuffleNet通道混合轻量级网络的深入介绍
  • 【4Day创客实践入门教程】Day3 实战演练——桌面迷你番茄钟
  • 1/31每日
  • 事务02之锁机制
  • Linux中部署Yolov5详解