/webrtc-build-scripts

A set of build scripts useful for building WebRTC libraries for Android and iOS.

Primary LanguageShellBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

##WebRTC Build Scripts

Join the chat at https://gitter.im/pristineio/webrtc-build-scripts
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.

Getting Started

On Linux

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
On Mac or Windows

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

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

Building the libraries

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

Building the libraries

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 
Cocoapods!!

Version License Platform

Usage

To run the example AppRTC Demo project, clone the repo, and run pod install from the Example directory first.

Requirements

A fast internet connection.... for your own sanity

Installation

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

Versioning

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)