searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

编译WebRTC For Android

2023-07-31 07:28:21
80
0

WebRTC 是谷歌提供的音视频通讯方案, 能够很好的解决音视频互联互通的场景。按照WebRTC官方文档,目前WebRTC For Android只能在Linux系统上编译,笔者也尝试且成功在Mac上编译出了Android版本库,但是Mac系统升级后许多编译链和编译工具失效了,所以还是老老实实按照官方文档在Linux系统上编译吧。笔者Linux环境为Ubuntu 18.04,其他类Linux平台都可参考,基本大同小异。

1. 编译环境要求

  • 磁盘预留空间不小于 30GB.

  • 编译过程需要确保你能正常访问 google 相关服务, 如有条件可以在命令行使用代理访问.

     
    export http_proxy=http://ip:port
    export https_proxy=http://ip:port
    export all_proxy=http://ip:port
     
  • 由于项目太大, 建议使用固态硬盘的电脑, 加快同步时间, 减少超时等出错几率.

  • 以下过程是基于 Ubuntu 18.04 编译.

  • Python3 >= 3.7 版本

2. 编译Android WebRTC

安装 depot_tools 工具

depot_tools 工具包包含了谷歌 gclient, gcl, git-cl, repo 等工具, 用于管理项目源码, 分发及编译等. 安装方式如下:

 
# 使用 git clone 到本地
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
 

在环境变量PATH 中加入路径, 以便方便使用命令. 根据自己使用的 shell 加到不同的启动文件中. ( .bashrc 或 .zshrc)

 
# 指定自己 depot_tools 的具体路径
export PATH=/path/to/depot_tools:$PATH

同步代码

同步代码我们主要使用的是 gclient 工具, 这是一个 python 脚本文件, 可以对于多模块依赖的项目源码进行管理, 可以根据不同系统同步所有所依赖模块的代码版本.

  • 创建工作目录 

    mkdir webrtc-checkout

     

  • 使用 fetch 下载 webrtc android 代码. (如果 fetch 执行出错的话, 也可以继续使用 gclient --with_branch_heads 同步下来 webrtc 源码).

     
    cd webrtc-checkout
    fetch --nohooks webrtc_android
     
  • 使用 gclient 同步依赖项目源码及工具, 同步时间较长, 几个小时肯定要的.

     
    gclient sync
     

NOTE:

  • 如果 fetch 没有出错的话, webrtc 源码通过 git branch -av 是可以看到所有的 branch-heads 的分支.

  • 如果 fetch 出错后, 是通过 gclient 不带参数同步下来的 webrtc 源码. 就只能看到 master、infra/config 以及 lkgr 几个分支.
    我们可以修改仓库的 .git/config 文件,在 [remote "origin"] 节中添加以下内容:

    fetch = +refs/branch-heads/*:refs/remotes/origin/*

安装编译环境依赖库

cd webrtc-checkout/src
./build/install-build-deps-android.sh

使用 gn 编译

  • 使用 gn 设置编译目录及参数. gn 可以指定编译目录及参数, 因此相对于其它编译工具, 可以同时并行多个编译版本.

     
    cd src
    gn gen out/my_build --args='target_cpu="arm" target_os="android" android32_ndk_api_level=18'
     

    target_os 参数可使用的值可以通过以下命令查看:

     
    gn help target_os
    
    # output
    Possible values
    
      - "android"
      - "chromeos"
      - "ios"
      - "linux"
      - "nacl"
      - "mac"
      - "win"
     

    target_cpu 参数可使用的值可以通过以下命令查看:

    gn help target_cpu
    
    # output
    Possible values
    
      - "x86"
      - "x64"
      - "arm"
      - "arm64"
      - "mipsel"
      - "mips64el"
      - "s390x"
      - "ppc64"
      - "riscv32"
      - "riscv64"
      - "e2k"
      - "loong64"
     
  • 使用 gn 执行编译. ninja -C out/my_build . ( 这个是增量编译, 第一次时间较长)

0条评论
作者已关闭评论
8****m
4文章数
0粉丝数
8****m
4 文章 | 0 粉丝
8****m
4文章数
0粉丝数
8****m
4 文章 | 0 粉丝
原创

编译WebRTC For Android

2023-07-31 07:28:21
80
0

WebRTC 是谷歌提供的音视频通讯方案, 能够很好的解决音视频互联互通的场景。按照WebRTC官方文档,目前WebRTC For Android只能在Linux系统上编译,笔者也尝试且成功在Mac上编译出了Android版本库,但是Mac系统升级后许多编译链和编译工具失效了,所以还是老老实实按照官方文档在Linux系统上编译吧。笔者Linux环境为Ubuntu 18.04,其他类Linux平台都可参考,基本大同小异。

1. 编译环境要求

  • 磁盘预留空间不小于 30GB.

  • 编译过程需要确保你能正常访问 google 相关服务, 如有条件可以在命令行使用代理访问.

     
    export http_proxy=http://ip:port
    export https_proxy=http://ip:port
    export all_proxy=http://ip:port
     
  • 由于项目太大, 建议使用固态硬盘的电脑, 加快同步时间, 减少超时等出错几率.

  • 以下过程是基于 Ubuntu 18.04 编译.

  • Python3 >= 3.7 版本

2. 编译Android WebRTC

安装 depot_tools 工具

depot_tools 工具包包含了谷歌 gclient, gcl, git-cl, repo 等工具, 用于管理项目源码, 分发及编译等. 安装方式如下:

 
# 使用 git clone 到本地
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
 

在环境变量PATH 中加入路径, 以便方便使用命令. 根据自己使用的 shell 加到不同的启动文件中. ( .bashrc 或 .zshrc)

 
# 指定自己 depot_tools 的具体路径
export PATH=/path/to/depot_tools:$PATH

同步代码

同步代码我们主要使用的是 gclient 工具, 这是一个 python 脚本文件, 可以对于多模块依赖的项目源码进行管理, 可以根据不同系统同步所有所依赖模块的代码版本.

  • 创建工作目录 

    mkdir webrtc-checkout

     

  • 使用 fetch 下载 webrtc android 代码. (如果 fetch 执行出错的话, 也可以继续使用 gclient --with_branch_heads 同步下来 webrtc 源码).

     
    cd webrtc-checkout
    fetch --nohooks webrtc_android
     
  • 使用 gclient 同步依赖项目源码及工具, 同步时间较长, 几个小时肯定要的.

     
    gclient sync
     

NOTE:

  • 如果 fetch 没有出错的话, webrtc 源码通过 git branch -av 是可以看到所有的 branch-heads 的分支.

  • 如果 fetch 出错后, 是通过 gclient 不带参数同步下来的 webrtc 源码. 就只能看到 master、infra/config 以及 lkgr 几个分支.
    我们可以修改仓库的 .git/config 文件,在 [remote "origin"] 节中添加以下内容:

    fetch = +refs/branch-heads/*:refs/remotes/origin/*

安装编译环境依赖库

cd webrtc-checkout/src
./build/install-build-deps-android.sh

使用 gn 编译

  • 使用 gn 设置编译目录及参数. gn 可以指定编译目录及参数, 因此相对于其它编译工具, 可以同时并行多个编译版本.

     
    cd src
    gn gen out/my_build --args='target_cpu="arm" target_os="android" android32_ndk_api_level=18'
     

    target_os 参数可使用的值可以通过以下命令查看:

     
    gn help target_os
    
    # output
    Possible values
    
      - "android"
      - "chromeos"
      - "ios"
      - "linux"
      - "nacl"
      - "mac"
      - "win"
     

    target_cpu 参数可使用的值可以通过以下命令查看:

    gn help target_cpu
    
    # output
    Possible values
    
      - "x86"
      - "x64"
      - "arm"
      - "arm64"
      - "mipsel"
      - "mips64el"
      - "s390x"
      - "ppc64"
      - "riscv32"
      - "riscv64"
      - "e2k"
      - "loong64"
     
  • 使用 gn 执行编译. ninja -C out/my_build . ( 这个是增量编译, 第一次时间较长)

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0