查看 :xcrun security find-identity -v -p codesigning
使用uuid
gn gen out/ios_64 --args=‘target_os=“ios” target_cpu=“arm64”’ ios_code_signing_identity=“EB4873F5FEE4647354D477CC909371A702BE456F”
-
安装工具
需要用到depot_tools工具来下载webrtc源码。 -
安装 depot_tools
git 命令获取 depot_tools。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
-
下载源码
-
-
默认master分支
默认是下载当前最新的源码,即Master分支。# mkdir webrtc # cd webrtc # fetch --nohooks webrtc_android # gclient sync
-
-
- 特定分支
如果要编译特定分支,如M74分支,需指定特定分支进行同步。拉取M74分支使用如下命令:(分支提交记录可参考WebRTC分支提交记录)gclient sync -r cc1b32545db7823b85f5a83a92ed5f85970492c9 --force
- 特定分支
-
commit id 可通过切换到该分支,查看git log,最上面那条记录即为当前分支最新的提交记录
-
编译
-
安装编译依赖
官网只给出第一条,建议两条命令都执行。# ./src/build/install-build-deps.sh # ./src/build/install-build-deps-android.sh
-
编译
编译可指定带或不带AppRTCMobile,带AppRTCMobile生成的Debug目录较小,不带AppRTCMobile生成的文件较多,也更大。# source build/android/envsetup.sh # gn gen out/Debug --args='target_os="android" target_cpu="arm64"' # ninja -C out/Debug AppRTCMobile
编译过程中,如果没有出错,即表示编译成功。
-
编译组合
a)编译arm debug版本gn gen out/Debug_arm --args=‘target_os=“android” target_cpu=“arm”’
ninja -C out/Debug_arm
b)编译arm64 debug版本
gn gen out/Debug_arm64 --args='target_os="android" target_cpu="arm64"'
ninja -C out/Debug_arm64
c)编译arm release版本
gn gen out/Release_arm --args='target_os="android" target_cpu="arm" is_debug=false'
ninja -C out/Release_arm
d)编译arm64 release版本
gn gen out/Release_arm64 --args='target_os="android" target_cpu="arm64" is_debug=false'
ninja -C out/Release_arm64
此处在生成的out/*名字上做区别,需要自取。
- 清理
gn clean out/Debug
参考
编译Android版的WebRTC
https://blog.csdn.net/ericbar/article/details/83114015
WebRTC iOS&OSX 库的编译
http://www.enkichen.com/2017/05/12/webrtc-ios-build/
api ;提供了对外的接口,音视频引擎层和 Module 直接的接口。
audio ;音频流的一部分抽象,属于引擎的一部分逻辑。
base ;这一部分还没有学习到,属于 Chromium 项目的一部分,貌似 WebRTC 中用的并不多。
build ;编译脚本。这里需要注意的是,不同平台的代码在下载的时候,获取的工具集是不一样的。
build_overrides ;编译工具。
buildtools ;编译工具链。
call ;主要是媒体流的接口抽象。为媒体引擎和 codec 层提供桥接。这里说的媒体流是 RTP 流。pc 层也抽象了媒体流,那是编码前、或者解码后。
common_audio ;音频算法实现,比如 fft。
common_video ;视频算法实现,比如 h264 协议格式。
data ;测试数据
examples ;WebRTC 使用的例子。提供了 peerconnection_client、peerconnection_server、stun、turn 的 demo。
logging ;WebRTC 的 log 库。
media ;媒体引擎层,包括音频、视频引擎实现。
modules ;WebRTC 把一些逻辑比较独立的抽象为 Module,利于扩展维护。
out ;build 输出目录。
p2p ;主要是实现 candidate 收集,NAT 穿越。
pc ;实现 jsep 协议。
resources ;测试数据
rtc_base ;包括 Socket、线程、锁等 OS 基础功能实现。
rtc_tools ;网络监测工具、音视频分析工具。很多工具都是脚本实现。
sdk ;主要是移动端相关实现。
stats ;WebRTC 统计模块实现。
style-guide ;编码规范说明
system_wrappers ;OS 相关功能的封装,比如 cpu、clock 等。
test ;单元测试代码实现,用 gmock
testing ;gmock、gtest等源码,属于整个 Chromium 项目。
third_party ;第三方库依赖。比如 abseil-cpp、ffmpeg 等
tools ;公共工具集,整个 Chromium 项目依赖的。
tools_webrtc ;WebRTC 用到的工具集。
video ;视频 RTP 流的抽象接口,属于视频引擎的一部分。