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

【环境搭建】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 moveos.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_exityieldFile "/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 mainreturn dispatcher.execute(OptionParser(), argv)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/home/bill/02_chromium/depot_tools/subcommand.py", line 254, in executereturn command(parser, args[1:])^^^^^^^^^^^^^^^^^^^^^^^^^File "/home/bill/02_chromium/depot_tools/gclient.py", line 4009, in CMDsyncret = client.RunOnDeps('update', args)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/home/bill/02_chromium/depot_tools/gclient.py", line 2449, in RunOnDepswork_queue.flush(revision_overrides,File "/home/bill/02_chromium/depot_tools/gclient_utils.py", line 1045, in flushreraise(e[0], e[1], e[2])File "/home/bill/02_chromium/depot_tools/gclient_utils.py", line 54, in reraiseraise valueFile "/home/bill/02_chromium/depot_tools/gclient_utils.py", line 1124, in runself.item.run(*self.args, **self.kwargs)File "/home/bill/02_chromium/depot_tools/gclient.py", line 1251, in runself._got_revision = self._used_scm.RunCommand(^^^^^^^^^^^^^^^^^^^^^^^^^^File "/home/bill/02_chromium/depot_tools/gclient_scm.py", line 137, in RunCommandreturn getattr(self, command)(options, args, file_list)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/home/bill/02_chromium/depot_tools/gclient_scm.py", line 664, in wrapperreturn_val = f(*args)^^^^^^^^File "/home/bill/02_chromium/depot_tools/gclient_scm.py", line 835, in updateself._DeleteOrMove(options.force)File "/home/bill/02_chromium/depot_tools/gclient_scm.py", line 209, in _DeleteOrMoveshutil.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 movecopy_function(src, real_dst)File "/home/bill/.cache/vpython-root.1000/store/cpython+l5fnajrvijf7cvdkjqmbicg3i8/contents/lib/python3.11/shutil.py", line 448, in copy2copyfile(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 copyfilewith 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.lryc.cn/news/531178.html

相关文章:

  • 开源智慧园区管理系统对比其他十种管理软件的优势与应用前景分析
  • C语言可变参数
  • (1)Linux高级命令简介
  • frida 入门
  • 基于STM32的智能健康监测手环
  • neo4j-community-5.26.0 install in window10
  • Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 循环类型】
  • WAWA鱼2024年终总结,关键词:成长
  • 【Redis】hash 类型的介绍和常用命令
  • 二分基础两道
  • Skyeye 云 VUE 版本 v3.15.7 发布
  • 位运算和操作符属性
  • php的使用及 phpstorm环境部署
  • 高阶开发基础——快速入门C++并发编程6——大作业:实现一个超级迷你的线程池
  • Jupyterlab和notebook修改文件的默认存放路径的方法
  • 吴恩达深度学习——有效运作神经网络
  • 享元模式——C++实现
  • 【Go语言圣经】第五节:函数
  • win32汇编环境,窗口程序中使用进度条控件
  • Vscode的AI插件 —— Cline
  • Flink (十三) :Table API 与 DataStream API 的转换 (一)
  • Android --- handler详解
  • [EAI-023] FAST,机器人动作专用的Tokenizer,提高VLA模型的能力和训练效率
  • 关于贪心学习的文笔记录
  • SLAM技术栈 ——《视觉SLAM十四讲》学习笔记(一)
  • 【ChatGPT:开启人工智能新纪元】
  • 1. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--前言
  • 量子力学初步:微观领域的科学之旅
  • 趣味Python100例初学者练习01
  • postgresql的用户、数据库和表