webRTC client 源码环境工具配置

 以下操作真实实验过,安卓,苹果均可成功

环境
  • Mac 10.13.6
  • Xcode 11
  • FQ代理:Lantern 专业版
  • Python 2.7.10
设置 git 代理
#设置git代理
$ git config --global http.proxy http://127.0.0.1:xxxx
$ git config --global https.proxy https://127.0.0.1:xxxx
#清空git代理
$ git config --global --unset http.proxy
$ git config --global --unset https.proxy

 

  • 注意:代理地址的端口要用Lantern代理监听的端口地址
安装 Depot_tools
  • git 命令获取 depot_tools:
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
  • 配置坏境变量
$ echo -e "\nexport PATH=$PWD/depot_tools:$PATH" >> $HOME/.bash_profile
$ echo -e "\nexport DEPOT_TOOLS_UPDATE=0" >> $HOME/.bash_profile
$ source $HOME/.bash_profile

 

  • 检测配置是否成功
$ echo $PATH
安装 ninja
  • ninja 是 WebRTC 的编译工具,我们需要对其进行编译,步骤如下:
$ git clone git://github.com/martine/ninja.git
$ cd ninja/
$ ./bootstrap.py

 

  • 复制到系统目录(也可配置坏境变量)
$ sudo cp ninja /usr/local/bin/
$ sudo chmod a+rx /usr/local/bin/ninja
设置 boto 代理
  • 创建http_proxy.boto文件,在里面输入如下内容:
[Boto] 
proxy=127.0.0.1
proxy_port=xxxx #此端口号为Lantern的监听的端口号
  • 配置坏境变量
$ echo -e "\nexport NO_AUTH_BOTO_CONFIG=$PWD/http_proxy.boto" >> $HOME/.bash_profile
$ source $HOME/.bash_profile
  • 检测配置是否成功
$ echo $NO_AUTH_BOTO_CONFIG
下载源代码

$ export GYP_DEFINES="OS=ios" $ fetch --nohooks webrtc_ios $ gclient sync
$ gclient runhooks

//或可以指定版本号
$ gclient sync -r 6f21dc245689c29730002da09534a8d275e6aa92 --force

安卓的话
 # 选择android 分支版本
fetch --nohooks webrtc_android
 # 同步代码
 gclient sync

 等待源码下载..

如果出错常试以下方法,利用google几十兆的外网下载,很快

获取代码

gclient在更新代码时,会读取trunk下的DEPS文件,根据文件中配置的路径和版本号更新代码。trunk下的DEPS文件在查找某些库时,依赖chromium_deps目录下的DEPS文件来获取路径。gclient会先执行sync,再执行hooks,这两个阶段都需要联网下载相关资源。所以仅仅是sync完成,不一定下载完了所有工具链,gyp生成工程文件后,也有可能缺少编译、运行需要的资源,只有在运行起来后才能保证相关平台的代码和工具链都下载完了。

官方推荐步骤:

$ gclient config http://webrtc.googlecode.com/svn/trunk
$ gclient sync --force

但是由于墙的存在,这种方法几乎无法成功。可以尝试vpngit、修改依赖库地址、多次尝试下载等各种方法,然后祈祷代码可以下载完整。

执行了gclient config http://webrtc.googlecode.com/svn/trunk后,.gclient的内容变成如下:

$ cat .gclient 
solutions = [
  { "name"        : "trunk",
    "url"         : "http://webrtc.googlecode.com/svn/trunk",
    "deps_file"   : "DEPS",
    "managed"     : True,
    "custom_deps" : {
    },
    "safesync_url": "",
  },
]
cache_dir = None

更改成通过git的方式获取,使用如下命令:

$ gclient config --name trunk 'https://git.chromium.org/git/external/webrtc.git'
$ gclient sync --force

.gclient内容如下:

$ cat .gclient 
solutions = [
  { "name"        : "trunk",
    "url"         : "https://git.chromium.org/git/external/webrtc.git",
    "deps_file"   : "DEPS",
    "managed"     : True,
    "custom_deps" : {
    },
  },
]
cache_dir = None

错误集锦

无法下载库

下载过程中,很有可能因为墙的原因或其它一些诡异的未知问题导致某一个库下载不下来。例如以下的一个错误:

[0:01:17] error: RPC failed; result=56, HTTP code = 200
[0:01:17] fatal: The remote end hung up unexpectedly
[0:01:17] fatal: early EOF
[0:01:17] fatal: index-pack failed
Traceback (most recent call last):
  File "/opt/depot_tools/gclient_scm.py", line 881, in _Clone
    self._Run(clone_cmd, options, cwd=self._root_dir, retry=True)
  File "/opt/depot_tools/gclient_scm.py", line 1166, in _Run
    gclient_utils.CheckCallAndFilterAndHeader(cmd, env=env, **kwargs)
  File "/opt/depot_tools/gclient_utils.py", line 292, in CheckCallAndFilterAndHeader
    return CheckCallAndFilter(args, **kwargs)
  File "/opt/depot_tools/gclient_utils.py", line 538, in CheckCallAndFilter
    rv, args, kwargs.get('cwd', None), None, None)
CalledProcessError: Command 'git -c core.deltaBaseCacheLimit=2g clone --no-checkout --progress https://chromium.googlesource.com/chromium/src/third_party /srv/example/webrtc/src/_gclient_third_party_1reibo' returned non-zero exit status 128 in /srv/example/webrtc
----------------------------------------
Traceback (most recent call last):
  File "/opt/depot_tools/gclient.py", line 2128, in <module>
    sys.exit(main(sys.argv[1:]))
  File "/opt/depot_tools/gclient.py", line 2114, in main
    return dispatcher.execute(OptionParser(), argv)
  File "/opt/depot_tools/subcommand.py", line 252, in execute
    return command(parser, args[1:])
  File "/opt/depot_tools/gclient.py", line 1876, in CMDsync
    ret = client.RunOnDeps('update', args)
  File "/opt/depot_tools/gclient.py", line 1363, in RunOnDeps
    work_queue.flush(revision_overrides, command, args, options=self._options)
  File "/opt/depot_tools/gclient_utils.py", line 1037, in run
    self.item.run(*self.args, **self.kwargs)
  File "/opt/depot_tools/gclient.py", line 772, in run
    file_list)
  File "/opt/depot_tools/gclient_scm.py", line 156, in RunCommand
    return getattr(self, command)(options, args, file_list)
  File "/opt/depot_tools/gclient_scm.py", line 417, in update
    self._Clone(revision, url, options)
  File "/opt/depot_tools/gclient_scm.py", line 889, in _Clone
    if os.listdir(tmp_dir):
OSError: [Errno 2] No such file or directory: '/srv/example/webrtc/src/_gclient_third_party_1reibo'

遇到以上错误时,直接使用命令方式下载:

$ git -c core.deltaBaseCacheLimit=2g clone --no-checkout --progress https://chromium.googlesource.com/chromium/src/third_party

无法下载android_tools

一直提示如下的信息:

[0:03:02] Still working on:
[0:03:02]   src/third_party/android_tools

[0:03:12] Still working on:
[0:03:12]   src/third_party/android_tools

[0:03:22] Still working on:
[0:03:22]   src/third_party/android_tools

[0:03:32] Still working on:
[0:03:32]   src/third_party/android_tools

[0:03:42] Still working on:
[0:03:42]   src/third_party/android_tools

使用如下命令下载:

$ git clone https://git.chromium.org/git/android_tools.git

然后将下载好的库拷贝到trunk/third_party/android_tools目录下。

 

posted @ 2018-08-30 17:58  M·emor·Y  阅读(1127)  评论(0编辑  收藏  举报