PSA - WebRTC builds have moved to using GN instead of GYP. Android build script is adapted, but iOS script is still break. Feel free to fork and update them.
A set of build scripts useful for building WebRTC libraries for Android and iOS.
Bugs: Please submit the revision number that you are using. There are frequent updates to this project so please watch the changelist for bug fixes.
Android ARMv7, ARMv8, x86, x86_64 Builds -- Guide here
The following instructions are for building the native WebRTC libraries for Android.
The scripts can probably work on most distros, although we only have experience with Ubuntu 12.04 and 14.04 on 64 bit machines.
This is only required once.
# Source all the routines
source android/build.sh
# Install any dependencies needed
install_dependencies
# Pull WebRTC
get_webrtc
If you don't have a Ubuntu machine available, or you are too lazy to setup a virtual machine manually, you can build WebRTC for Android on your Mac or Windows PC through our Vagrant script.
First of all, you need to download and install Vagrant. After that, from the /android
directory, you need to execute the following in you shell:
# If you need to use private SSH keys from your host computer
# Execute this line of code to ensure your private key is added to your identity
ssh-add -L
# If there are no identities, add them by:
ssh-add ~/.ssh/id_rsa
# Boot up and provision the Vagrant box
vagrant up
# SSH into the Vagrant box
vagrant ssh
# Installs the required dependencies on the machine
install_dependencies
On Windows machines you may face issues with long path names on the VM that aren't handled correctly. A work around is to copy the script to another directory (not the one shared between the VM and Windows host), and build there:
mkdir mybuild
cd mybuild
cp /vagrant/build.sh .
source ./build.sh
get_webrtc
build_apprtc
Then you can build the Android example
# Pull WebRTC
get_webrtc
# Build apprtc
build_apprtc
# Build in debug mode
export WEBRTC_DEBUG=true
build_apprtc
You can build for armv7, armv8, x86, x86_64 platform
export WEBRTC_ARCH=armv7 #or armv8, x86, or x86_64
prepare_gyp_defines &&
execute_build
You can build a particular revision
# Pull WebRTC
get_webrtc 6783
# Build apprtc
build_apprtc
When the scripts are done you can find the .jar and .so file in $WEBRTC_ROOT under "libjingle_peerconnection_builds".
iOS (armv7, arm64, i386) and Mac (X86_64) -- Guide here
These steps must be run on Mac OSX
Source the ios build scripts or open the Xcode project
source ios/build.sh
Specify if you want to build for Debug/Profile/Release by setting either WEBRTC_DEBUG, WEBRTC_PROFILE, WEBRTC_RELEASE as an environment variable in your bash or xcode scheme run settings.
WEBRTC_DEBUG=true
WEBRTC_PROFILE=true
#or
WEBRTC_RELEASE=true
Then you can build the iOS example
# We use the term webrtc dance a lot to build
dance
# Or in two steps
get_webrtc
# Make changes then build WebRTC
build_webrtc
Mac example
# Get WebRTC
get_webrtc
# Make changes then build WebRTC
build_webrtc_mac
Check which revision you are using at ./webrtc-build-scripts/ios/webrtc/libWebRTC-LATEST-Universal-Debug.a.version.txt
Open the xcode project, and execute the AppRTC Demo on any iOS 7 device or simulator
open ./webrtc-build-scripts/ios/WebRTC.xcodeproj
You can also build a particular revision
#Pull WebRTC
update2Revision 6783
Make changes then,
#Build WebRTC
build_webrtc
Make sure you label your new binaries that are generated in
./webrtc-build-scripts/ios/webrtc/libjingle_peerconnection_builds
To run the example AppRTC Demo project, clone the repo, and run pod install
from the Example directory first.
A fast internet connection.... for your own sanity
libjingle_peerconnection starting from revision 6931 is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "libjingle_peerconnection"
iOS ARM64 builds are available as of 7810.0.0
mac x86_64 builds are available as of 7759.0.0
###Linux x86, x86_64 Builds
The following instructions are for building the native WebRTC libraries for Linux.
The scripts can probably work on most distros, although we only have experience with Ubuntu 12.04, 14.04, 16.04 and 16.10 on 64 bit machines.
This is only required once.
# Source all the routines
source linux/build.sh
# Install any dependencies needed
install_dependencies
# Pull WebRTC
get_webrtc
# Build apprtc
build_apprtc
You can build for arm-linaro-gnueabihf, x86, x86_64 platform
export WEBRTC_ARCH=x86 #, arm-linaro-gnueabihf or x86_64
prepare_gyp_defines &&
execute_build
You can build a particular revision
# Pull WebRTC
get_webrtc 6783
# Build apprtc
build_apprtc
The versioning can be explained as follows:
6931.2.0
6931 reflects the SVN revision from the WebRTC root Google Code Project
2 reflects a Release Build (0 for Debug, 1 for Profile)
Profile builds are no longer built by default
The minor 0 reflects any changes I might need to make to the sample xcode project itself to work (incremented normally)