当前位置 博文首页 > wojiaopanpan的博客:国内下载配置及编译WebRTC的过程

    wojiaopanpan的博客:国内下载配置及编译WebRTC的过程

    作者:[db:作者] 时间:2021-08-05 22:10

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

    参考文章mac及ios下编译WebRTC

    1.挖洞access some forbidden sites

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

    2.安装depot_tools

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

    cd <dir>
    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环境变量可能也行)


    ?


    cs