TreeviewCopyright © lanser.fun all right reserved, powered by aleen42

V8源码编译

下载

首先你要有个稳定的网络,然后还要有个够快打vpn,如果没有不用往下看了,折腾人!

从v8官网链接进入windows安装指南,Install depot_tools之后心情大好的准备尝鲜,结果... 出错了 depot_tools/bootstrap/bootstrap.py中没有指明编码导致默认使用gbk编码打开文件失败,修改107行,增加编码说明:

with open(src_path, 'r', encoding='utf8') as fd: content = fd.read() return maybe_update(content, dst_path)

紧接着开始下载,vpn一阵输出后卡在 Username for 'https://chrome-internal.googlesource.com' 咱要有这账号还折腾啥vpn?回头看文档,该设置的环境变量也设置了 DEPOT_TOOLS_WIN_TOOLCHAIN ... and set it to 0 按说不该尝试从google的服务器取编译环境了啊,在cmd窗口里 echo % DEPOT_TOOLS_WIN_TOOLCHAIN % 好吧,环境变量没生效。另起cmd窗口,查看 DEPOT_TOOLS_WIN_TOOLCHAIN 这次对了。悲催的把chromium目录删掉重新fetch --no-history chromium(后来发现不用重来,gclient sync --no-history 就行),但又报错找不到vs环境?

搜索一遍发现有1个文档没提到的环境变量 GYP_MSVS_OVERRIDE_PATH ,用来指定vs安装路径,添加好环境变量重启cmd仍然报错,还好是python代码经查看预期 GYP_MSVS_OVERRIDE_PATH 指定的目录下有VC/Redist/MSVC,重新设置再重启cmd,这次终于把fetch --no-histroy chromium顺利执行完了。

过程中参考了这篇网文虽然不是最新的但仍可看看,反正要下载安装1个小时多。

编译 - i7-5550u16g 花了2天

安装过程中thrid_party目录很闪眼--245个目录,比全世界的国家还要多,v8果然也是站在巨人肩上的巨人,看看他脚下都有些神码:

  • abseil-cpp Google开源的C++标准库扩展,类似于各个公司内部的mycommon.
  • accessibility_test_framework 没看到怎么用,存在的意义如果不是为了展示许可证估计就是该删还没删。
  • accessibility-audit 同上.也可能是用于审核给残障人士提供的辅助功能的完整性.还不确定。
  • adobe 胶水层,要不要flash player都要能编出Chrome(没写错,是Chrome).
  • afl AFL(American Fuzzy Lop)是目前最高级的Fuzz Testing工具之一,Fuzz Testing(模糊测试)是一种测试方法,主要原理为构造一系列“坏”数据传入应用程序,通过判断程序是否发生异常发现和检测潜在的bug(好吧,我也是第一次接触)。
  • android_build_tools 这个厉害了The tools in this directory either require more recent versions than are provided by the Android SDK used by internal or public Chrome source checkouts, or are not provided by the SDK at all. 本Android编译工具,要么比你新要么有你没有的功能(好像软件都这样)。
  • android_crazy_linker 大气的名字配着介绍: A custom dynamic linker for Android programs that adds a few interesting features compared to /system/bin/linker,具体看这里
  • android_data_chart Android SDK里的data chart也改了改,Chromium的UI有性能要求。
  • android_deps 编译Android版本时需要的依赖单另出来管理,专人专管,挺好。
  • android_media 把Android SDK里的MediaController.java和相关资源改了改。
  • android_opengl 对OpenGL中的ETC1编解码API做了修改和封装。
  • android_platform Android平台工程工具,主要集中在栈符号化脚本和IntelliJ格式化设置,感觉是在给IDE做定制化,不太确定。
  • android_protobuf Google的数据交换格式(可以对标json/xml),内含一个微型Java版protobuf库。压缩、传输效率很高,值得学习研究一下(代替tsl)
  • android_sdk 需要Android SDK提供编译、测试、调试Android版本(chromium)时用到的库和命令行工具。
  • android_support_test_runner 运行Android JUnit时要用的静态库。
  • android_swipe_refresh 一个改造版的下拉刷新控件。
  • android_system_sdk 编译Android Webview或Monochrome时要用到的System SDK桩。不清楚Android SDK和Android System SDK的关系,看字面意思后者应该在System (platform? os?)层面上不具备通用性(跨平台性)所以单独出来。
  • angle Almost Native Graphics Layer Engine, Google自家的跨平台WebGL & OpenGL ES底层.
  • apache-mac 为Blink(见下方blink条目)布局测试提供的Apache2版本,带OpenSSL, PHP及其Mac依赖.
  • apache-portable-runtime 为测试环境提供的Apache Portable Runtime Library.
  • apache-win32 作用同apache-mac,但是给Windows用.
  • apk-patch-size-estimator 非Google官方发布的apk补丁大小估值器,用来应对Google Play的一些限制(Google Play在生成补丁,选择打码目标上做了不少事).
  • apple_apsl 从苹果拿了4个(文档自己说4个但却列出了5个)文件改吧改吧自己用,分吧是molloc.h CFRuntime.h CFBase.h cssmapplePriv.h dnsinfo.h.
  • arcore-android-sdk-client Google推出的搭建增强现实应用程序的软件平台,类似苹果的ARKit,它可以利用云软件和设备硬件的进步,将数字对象放到现实世界中,这个是Android版client端的SDK,对Chorme做了定制化.
  • arcore-android-sdk 同上,但不是对Chrome定制的client端,是ARCore Android SDK本体(看到浏览器霸主的升起).
  • ashmem 对Android共享内存实现打的补丁(其他浏览器还想在Android上超过Chrome吗?)
  • auto 可以自动生成Java代码的一个工具集.
  • axe-core Accessibility engine for automated Web UI testing -- 在web-ui里运行自动化辅助功能测试的,对残障人士的人文关怀值得我们学习!
© 2024 lanser.fun修订时间: 2023-05-02 02:19:15

results matching ""

    No results matching ""