-
At least 30 GB of free disk space
-
Matching macOS and Xcode version (see Versions)
-
Change to your iOS-Project folder
cd /path/to/your/ios-project
-
Create a new folder and go into it
mkdir WebRTC-build cd WebRTC-build
-
Clone depot tools and add them to your current
PATH
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git export PATH=$(PWD)/depot_tools:$PATH
-
Choose and set WebRTC and patch commit to use (see Versions below)
export COMMIT=commit_id export PATCH_COMMIT=patch_commit_id # e.g. # export COMMIT=b83487f08ff836437715b488f73416215e5570dd # export PATCH_COMMIT=e8c6ee36392fb167a96d9c808f6d4638510c3178
-
Fetch a regular WebRTC checkout with the iOS-specific parts added. (This might take a while...)
fetch --nohooks webrtc_ios
-
Get patches
git clone https://github.com/threema-ch/webrtc-build-docker.git cd webrtc-build-docker
(The patches are part of our WebRTC PeerConnection Build Script.)
-
Reset applied patches
cd WebRTC-build/src git reset --hard
-
Add depot_tools to your current
PATH
export PATH=$(PWD)/depot_tools:$PATH
-
Choose and set WebRTC and patch commit to use (see Versions below)
export COMMIT=commit_id export PATCH_COMMIT=patch_commit_id
-
Update patches
cd ../webrtc-build-docker git checkout master && git pull origin master
-
Check out patch commit
git checkout $PATCH_COMMIT
-
Go into src folder and checkout WebRTC. (This might take a while...)
cd ../src git checkout master && git pull && git checkout $COMMIT && gclient sync
-
Apply patches
for i in ../webrtc-build-docker/patches/*.patch; do patch -p1 < $i; done
-
Build
tools_webrtc/ios/build_ios_libs.py --output-dir ../out/ --extra-gn-args symbol_level=1 enable_libaom=false rtc_include_dav1d_in_internal_decoder_factory=false rtc_include_ilbc=false
-
Remove existing framework and move to correct location
rm -r ../../WebRTC.xcframework mv ../out/WebRTC.xcframework ../../
cd ../..
rm -r WebRTC-build
iOS App Version | WebRTC Commit | Patch Commit | macOS Version | Xcode Version | WebRTC Binary Version |
---|---|---|---|---|---|
5.9.1 | 41b1493ddb5d98e9125d5cb002fd57ce76ebd8a7 (m123) | 86a2fd8f10ac57e1ea16e0be37b337976e383338 | 14.4.1 (23E224) | 15.3 (15E204a) | 123.0 |
5.9 | b0cc68e61205fd11a7256a6e85307ec17ad95790 (m120) | 785df490a6de4b8f0b2496eede260f060c0dd0ee | 14.3.1 (23D60) | 15.2 (15C500b) | 120.0 |
5.6 | 151be743d4c83671565f9c1eada3f4a0b2e44dea (m114) | 07bf304f62e536217dad166ca9a603cad9d61e7e | 13.5 (22G74) | 14.3.1 (14E300c) | 114.0 |
Group-Calls-Branch | 218b56e516386cd57c7513197528c3124bcd7ef3 (m110) | d49a6318dbb90665684c9d6cda083416912d5086 | 13.3.1 (a) (22E772610a) | 14.2 (14C18) | 110.0 |
4.8.0 (2741) | ffd9187dc0d9211ad52173bf0daa5001ca7d45ee (m100) | 92e9bfefac342b2c2547cd860844f9bf7fd36252 | 12.4 (21F79) | 13.2.1 (13C100) | 100.0.0 |