国内下载配置及编译WebRTC的过程

全程一个字——惨惨惨。。。

参考文章mac及ios下编译WebRTC

1.挖洞access some forbidden sites

昨天晚上还写了一篇文章,记录如何搞定这个事情,完了,一大早文章就已经被删除了。

2.安装depot_tools

depot_tools是一套Google用来编译Chromium或者WebRTC的构建工具。下载googlesource代码的时候,可能因为https连接的关系,会提示chromium.googlesource.com之类的域名在.netrc文件中找不到,然后下载失败。这时候,按照在netrc文件中配置默认登录用户名和密码 来配置就行。最好下载前都配置好。

cd 
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git  ##下载代码
echo "export PATH=$PWD/depot_tools:$PATH" > $HOME/.bash_profile   ##用来配置环境变量
source $HOME/.bash_profile    ##使环境变量生效
echo $PATH       #验证

3.下载webRTC源码

需要下载的代码版本可以到Release Notes 中选定,进去的时候会看到一堆Notes,选定一个,然后去找类似"52b6562a10b495cf771d8388ee51990d56074059"这样的提交记录,copy这个commidId留作后用。

设置要编译的平台——创建工作路径——工作路径下载源码

  • 设置要编译的平台到环境变量:export GYP_DEFINES="OS=ios" 会编译ios所有版本。
    export GYP_DEFINES="OS=ios target_arch=arm"   ##编译ios32位真机
    export GYP_DEFINES="OS=ios target_arch=arm64"   ##编译ios64位真机
    export GYP_DEFINES="OS=ios target_arch=ia32"   ##编译ios32位模拟器
    export GYP_DEFINES="OS=ios target_arch=x64"   ##编译ios64位模拟器
    export GYP_DEFINES="OS=mac target_arch=x64"    ##编译mac版本
    export GYP_DEFINES="OS=android"   ##编译Android版本
    export GYP_DEFINES="OS=linux"   ##linux
    也可以只指定特定的机型,这时候就无需执行上面那个命令了
  • mkdir webRTC
    cd webRTC
    fetch --nohooks webrtc_ios
    gclient sync -r 52b6562a10b495cf771d8388ee51990d56074059 --force
    以上是ios的源码下载,mac只需要修改export GYP_DEFINES="OS=mac"就行了

4.编译

ninja 是 WebRTC 的编译平台,iOS 版本我们可以使用自带的编译脚本,这样就不需要自己编译和安装 ninja,默认情况下,脚本会编译 3 个平台机型的库文件,以及一个各个平台的集合库,脚本也可以指定编译成 .a 的库文件或者 .framework,命令如下:

cd src/tools_webrtc/ios
./build_ios_libs.sh

Android端代码下载及编译

【注意,通常来说,以及官方标准提示,Android代码只能在Linux上编译,不能在mac上编译】我这边在mac执行gclient sync的时候,也有一些问题。建议有Linux环境的小伙伴,还是妥妥用linux编译Android源码。当然也有少数用户通过修改ndk配置什么的,实现了mac上编译Android源码。

以下是Ubuntu安装编译步骤:

1.sudo apt-get update此步骤可能会出现"Failed to fetch http://security.ubuntu.com/ubuntu/dists/xenial-security..."之类的错误,此时应该修改Ubuntu source,在配置-Software&Updates-Ubuntu Software里面修改源服务器。因为我在,所以用国外的服务器比较好

  安装一些基础软件,比如sudo apt-get install git apache2 curl libcurl3 libcurl3-dev php5-curl

2.安装depot_tools,配置环境变量.bashrc,跟mac上一样的;

3.创建webrtc工作路径,进入工作目录,执行以下命令【等待时间会很长,但不要着急】

export GYP_DEFINES= "OS=android"
fetch --nohooks webrtc_android
gclient sync

4.编译源码

   安装需要的软件及配置:src/build/install-build-deps-android.sh

   进入到src目录下进行环境变量配置:.build/android/envsetup.sh,这个环节有可能会提示“Error:...must be sourced”之类的,但由于这一步其实就是配置Android sdk环境变量,所以自己手动配置一下也可以。

   然后执行脚本

gn gen out/Android-debug --args='target_os="android" target_cpu="arm"'
ninja -C out/Android-debug   ####注意修改执行路径和目标路径

这一步的ninja -C out/Android-debug这个,由于我自己另行安装了一个ninja,导致一直出现然后就死循环了

log: ninja version 0.1.3 initializing
log: magic group: gid=0 (root)
log: entering main loop
log: generating initial pid array..
log: now monitoring process activity

这时候应该是安装depot_tools的时候自带了一个ninja【版本较高】,然后自己再安装一个ninja,就会冲突了。

解决方法是:卸载自己安装的ninja,然后到depot_tools下执行那个脚本,记得目标路径要指定正确(我想设置一下ninja环境变量可能也行)


 


你可能感兴趣的:(网络编程)