一、环境准备
1.环境配置:
下载Depot_tools代码:
# git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
# export PATH=$PATH:"depot_tools路径"
2.下载仓库代码
# mkdir webrtc-ios
下载webrtc src代码:
# git clone xxx
下载.gclient文件
# git clone xxx
根据readme.txt,修改.gclient文件中 target_os = ["win"] 为target_os = ["ios"]
二、编译
1.下载工具链(设置vpn代理)
# cd src
# gclient sync
2.webrtc编译
最新版本的webrtc默认编译脚本只能编译framework,没有libwebrtc.a
解决方法:找旧版本的webrtc的src/tools_webrtc/ios/build_ios_libs.py替换
build_ios_libs.py 中根据实际情况选择需要编译的版本 ['arm64', 'arm', 'x64', 'x86'] ,本项目暂时只编译arm64
# python tools_webrtc/ios/build_ios_libs.py --extra-gn-args='is_component_build=false rtc_include_tests=false rtc_enable_protobuf=false use_rtti=true use_custom_libcxx=false'
下载mediasoup-ios
# git clone --recursive git@github.com:ethand91/mediasoup-ios-client.git
将上面生成的libwebrtc.a库拷贝至mediasoup-client-ios/dependencies/webrtc/lib目录下
# cd [XCode project]/mediasoup-client-ios/dependencies
# Build iOS arm64
# /Applications/CMake.app/Contents/bin/cmake . -Bbuild -DLIBWEBRTC_INCLUDE_PATH=/[XCode project]/mediasoup-client-ios/dependencies/webrtc/inc -DLIBWEBRTC_BINARY_PATH=/[XCode project]/mediasoup-client-ios/dependencies/webrtc/lib -DMEDIASOUP_LOG_TRACE=ON -DMEDIASOUP_LOG_DEV=ON -DCMAKE_CXX_FLAGS="-fvisibility=hidden" -DLIBSDPTRANSFORM_BUILD_TESTS=OFF -DIOS_SDK=iphone -DIOS_ARCHS="arm64" -G "Xcode"
打开build目录下工程进行编译后,拷贝libsdptransform.a和libmediasoupclient.a至mediasoup_ios工程中mediasoup-client-ios/dependencies/lib目录下
# cp build/libmediasoupclient/libsdptransform/Debug-iphoneos/libsdptransform.a [XCode project]/mediasoup-client-ios/dependencies/lib
# cp build/libmediasoupclient/Debug-iphoneos/libmediasoupclient.a [XCode project]/mediasoup-client-ios/dependencies/lib
打开Xcode工程, 配置 libmediasoupclient.a libsdptransform.a路径后编译出目标mediasoup_client_ios.framework文件
编译可能遇到的错误:
1. "_OBJC_CLASS_$_RTCMediaStreamTrack", referenced from:
: Objc-class-ref in Producer.o
: Objc-class-ref in Consumer.o
这种问题是由于需要采用动态库方式编译出来的WebRTC.framework