webRTC简介
编译工具准备
- depot_tools
- depot_tools是Chromium 和 Chromium OS管理代码拉取的脚本包。里面包含了gclient, gcl, git-cl, repo
- 创建一个build工作目录
- /webrtc_build
- 在webrtc_build目录下,使用git下载Chromium的depot_tools工具
|
|
- 添加depot_tools到你OS的环境变量
|
|
获取源码
在webrtc_build目录下,使用命令行拉取webRTC的源码
|
|
得到源码:src/…
开一个新的分支
|
|
使用GN生成Ninja工程文件
|
|
命令行编译Ninja工程
|
|
AppRTCMobile是其中一个Target,可以切换别的
生成Xcode工程
|
|
编译webRTC.framwork
- 查看编译选项
|
|
- 默认会编译出全部架构的 [‘arm64’, ‘arm’, ‘x64’, ‘x86’] 的 framework.
|
|
- 只编译ARM架构
|
|
- xcode8.3的编译错误
如果你的XCode版本是8.3,执行build_ios_libs.py会出现下面的错误
|
|
原因是有两个文件有错需要改正:
third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_input.c
third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_output.c
具体改正点下面可以查看
sctp_input.c改正
sctp_output.c改正
编译配置文件错误
你把编译好的WebRTC.framework放到Demo工程跃跃欲试,却可能发现编译不过。
日了🐶了。。。
“Could not build module ‘WebRTC’”
“‘WebRTC/RTCVideoCapturer.h’ file not found”太可怕了。。看来编译的脚本又有问题,欲哭无泪。。。
一通找终于找到生成WebRTC.framework头文件的脚本。缺了下面几个头文件链接
|
|
修改BUILD.gn,再使用build_ios_libs.py编译,就可以得到完美的WebRTC.framework。
- 把编译好的WebRTC.framework导入demo工程,编译demo工程,发现动态库找不到。
|
|
在Embedded Binaries +WebRTC.framework即可
最后附上修改后的文件BUILD.gn、sctp_input.c、sctp_output.c
以及编译成功后的webRTC.Framework(arm和All)