webrtc源码编译【linux/安卓】

编译webrtc库

环境ubuntu22.04

推荐在linux里运行一个docker容器,在新环境里搭建。

准备工作

shell 复制代码
#我使用了下面的安装命令。目前知道的必须需要的 git python3 unzip ninja jdk file lsb-release
apt install -y git curl build-essential python3 python3-pip python3-setuptools python3-venv openjdk-8-jdk clang ninja-build libprotobuf-dev protobuf-compiler pkg-config libssl-dev libsdl2-dev libvpx-dev libx11-dev libxrandr-dev libxi-dev libglu1-mesa-dev  libcurl4-openssl-dev unzip lsb-release file
shell 复制代码
#梯子
#最好选择稳定一些的,流量会使用 20GB多
#查看代理 http://127.0.0.1:1234

#配置环境变量
export https_proxy=http://127.0.0.1:1234 http_proxy=http://127.0.0.1:1234 all_proxy=socks5://127.0.0.1:1234

#开启后 git配置http 和 https代理
git config --global http.proxy "http://127.0.0.1:1234"
git config --global https.proxy "http://127.0.0.1:1234"

#配置gsutil的代理  NO_AUTH_BOTO_CONFIG
vi proxy.boto #任意目录,假设在/home/abc 下
### 写入以下内容 start
[GSUtil]
proxy=127.0.0.1
proxy_port=1234
###

#设置到环境变量
export NO_AUTH_BOTO_CONFIG=/home/abc/proxy.boto

#注意  export设置的环境变量只在当前终端有效,但git的代理是全局有效
shell 复制代码
#充足的时间 至少三小时(大部分是等待时间)
#机器不要重启
#网络稳定的环境

安装depot_tools

谷歌官方的一个工具,用于拉取管理代码

shell 复制代码
cd /home/abc #找一个合适的位置
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

#设置环境变量。 这句也可以加到系统环境里 ~/.bashrc
export PATH=/home/abc/depot_tools:$PATH

拉取代码

shell 复制代码
#找一个合适的目录 至少有35GB空间
mkdir /home/abc/webrtc
#下载源码 和 第三方库源码20GB多
#一般执行时间较长
fetch --nohooks webrtc_android
#执行hooks 再下载一些东西
gclient sync

切换分支

拉取代码后,是最新的分支,我们可能需要以前的release分支

分支网站 可以访问这个网站查找对应的分支代码 比如m120就是6099

shell 复制代码
cd /home/abc/webrtc/src
git checkout -b m120 branch-heads/6099
gclient sync
#这里还会再下载一些东西,未统计流量,不算很多

安装依赖

源码里提供了脚本,可以一键安装依赖 (使用apt)

shell 复制代码
cd /home/abc/webrtc/src
#安装依赖
./build/install-build-deps.sh #可能会报错
#因为我是用的docker 容器,默认是root用户,py脚本里包含了 sudo ,会报错
#解决方法 vi ./build/install-build-deps.py
:%s/"sudo", //g
#输入上一行,回车。把sudo替换掉
#重新执行脚本

#m120 版本没有
#./build/install-build-deps-android.sh 


#编译脚本 -h 查看帮助
./tools_webrtc/android/build_aar.py -h
#编译 默认设置,会包含多个架构
./tools_webrtc/android/build_aar.py
相关推荐
红米饭配南瓜汤2 分钟前
WebRTC中的几个Rtp*Sender
网络·网络协议·音视频·webrtc·媒体
Lw老王要学习39 分钟前
Linux容器篇、第二章_01Ubuntu22 环境下 KubeSphere 容器平台高可用搭建全流程
linux·运维·服务器·k8s·kubesphere·容器化
每次的天空1 小时前
Android第十四次面试总结
android·面试·职场和发展
張萠飛1 小时前
Linux下如何使用shell脚本导出elasticsearch中某一个index的数据为本地csv文件
linux·运维·elasticsearch
androidwork1 小时前
Android 布局优化:掌握 <include> 与 <merge> 的实战技巧
android
Jiaberrr1 小时前
uniapp 安卓 APP 后台持续运行(保活)的尝试办法
android·前端·javascript·uni-app·app·保活
gfgfgg0011 小时前
谷歌地图手机版(Google maps)v11.152.0100安卓版 - 前端工具导航
android·智能手机
清霜之辰2 小时前
安卓Compose实现鱼骨加载中效果
android
Shujie_L2 小时前
【Android基础回顾】五:AMS(Activity Manager Service)
android
我又来搬代码了2 小时前
【Android】Android Studio项目代码异常错乱问题处理(2020.3版本)
android·ide·android studio