How to get commenced with WebRTC and iOS without wasting ten hours of your life, Ninjanetic Design

How to get commenced with WebRTC and iOS without wasting ten hours of your life, Ninjanetic Design

How to get embarked with WebRTC and iOS without wasting ten hours of your life

I recently had the chance to play around with the fresh WebRTC framework, a indeed cool fresh technology that will eventually permit for point-to-point real-time movie talk without plug-ins or extra software. Ideally this technology will be built into all modern browsers (it's already in Chrome and Firefox!) but Apple is undoubtedly dragging their feet. If you want to incorporate this technology into an iOS application, you need to directly use the WebRTC libraries that implement the protocol. Fortunately, an Objective-C implementation of just about everything exists and is free to use.

Why not just take the compiled libraries and build on top of them? WebRTC is still on the bleeding edge of development, and switches are being made to the framework almost every day. Until a stable release point is reached, you will need to pull in the latest library switches as they happen in order to stay on top of development.

If you are building a production application then you are going to need to get down in the guts and work directly with the libraries, and in order to compile them you need to leap through a bunch of hoops (especially if you are working with Xcode five and iOS 7). It took a surprising amount of effort to get this to build for the simulator, and then attempting to get it to build for a device was even more work. In hopes of saving other people some time, here's a compilation of all the steps I needed to do to get the example application building and then running on both the iOS simulator and a physical device.

Get the code base

Keep in mind that at the time of this writing, this is a project being very actively developed. It's very likely the build process is going to switch as time goes on. These instructions are based on syncing the code base at revision r7538.

Prerequisites:

  • I'm doing this on a MacBook Pro running OS X Mavericks
  • You have Git installed and working
  • XCode Five.1+ with the Instruction Line Instruments installed (Preferences -> Downloads -> Directive Line Devices)
  • If you're using an actual iOS device, you will need a valid development code signing identity, and decently provisioned iOS device affixed to your computer

1) Create a working directory

Make a fresh directory somewhere, and get ready because you're going to need in the ballpark of eight GB of free space

Two) Download the Chromium depot implements

Switch into your working directory and grab the Chromium depot_tools repository with git:

git clone https://chromium.googlesource.com/chromium/contraptions/depot_tools.git

These are a bunch of devices used during the build process, and they will need to be in your path so you will need to modify your .bash_profile (or other shell file) and modify the PATH line like so:

Next you will need to restart your terminal or re-run your bash profile so that the switches take effect:

Trio) Download the WebRTC source

Back in your working directory, use the next few guidelines to download the massive source repository:

gclient config –name src http://webrtc.googlecode.com/svn/trunk

echo "target_os = [‘ios’]" >> .gclient

gclient sync –force

Come back a few days later when it's finished downloading, and then you can stir on to setting up the build.

Building and running on the iOS 7/8 simulator

This source code is capable of building for a number of different platforms, and since we are only interested in building for iOS we are going to create our own build script that compiles and runs exclusively for the iOS simulator. That's right, leave behind about actually using Xcode we are going to be building everything from the instruction line. Oh yeah!

Very first, at the top level of your working directory create a fresh shell script file to kickoff the build:

chmod +x build_apprtc.sh

Open the file you just created, and paste in this:

This script contains a few functions that permit you to build the AppRTC example app for a few different purposes. Very first, build the source code and example application by running the script with the following parameter:

Once the build has ended successfully, launch the iOS simulator and run the example application by using the following parameter:

Your iOS simulator should pop up automatically and launch the test application. To give it a attempt, you're going to have to create a movie session that the test application can connect to. The easiest way to do this is:

1) Open a Chrome browser tab on your computer or Android device (I've had fine success with the Google Nexus seven and Ten).

Two) Go to http://apprtc.appspot.com

Three) Give the browser permissions to access your camera, and wait for your smiling face to demonstrate up.

Four) Notice that the URL in your browser has switched. It will now look something like this:

Five) The number appended to the end of the URL is the room number. This is the key lump of information you need to get the test application to connect. Switch back to the iOS simulator, and type that number into the text box. Press the join button on the keyboard and away it will go. The test application has not been the most reliable thing in the world for me, see you might need to attempt a few times before it connects successfully. Also be careful with the volume on your computer, it's super effortless to get a feedback loop going.

We have a demo! Now let's see if we can get this thing to work on an actual iOS device.

Building and running directly on an iOS device

To build the test application for an actual iOS device, use the following parameter:

The script will switch the architecture to armv7 and codesign the application. In order to upload the compiled application to an affixed iOS device, we need to install an extra device called ideviceinstaller. Its super-easy to install using homebrew (albeit it takes a while to build).

brew install ideviceinstaller –HEAD

Once that device is installed, you can use another parameter on the build script to install and run the application on your fastened iOS device:

Curveball: IOS 7

(NOTE: the latest revisions of the framework have solved this problem, so you can skip this step. I'm leaving the solution here for those that run into it)

The build scripts were designed with iOS six in mind, and include an obsolete framework not available in the iOS seven SDK. Building the code for an actual iOS device will slobber out an error that reads something like “ld: framework not found IOKit”. Fortunately, fixing this problem is as effortless as deleting a few lines. Open src/talk/libjingle.gyp and search for:

There should be two instances of that in the file, just delete both of those lines.

Curveball: Codesigning

The build scripts will look through your keychain and use the code signing identity associated with “iPhone developer”. If you have a single identity registered (i.e. you only ever work with one team or developer account) everything should be fine. If this is you, skip down to the “eventually” section below.

If you do not have a valid code signing identity set up & a provisioned iOS device linked to your computer, it's not going to work. Go after Apple's guides on how to create an identity and provisioning profile.

If you are an iOS developer that works with numerous clients, odds are that you have numerous code signing identities for the identity “iPhone developer”. The WebRTC build scripts do not have decent treating for this situation, and will throw assertions if you have more than one code signing identity. Fortunately, we can modify the global build configuration to specify the exact code signing identity to use.

Very first, find the list of valid code signing identities that are available by running this from the directive line:

You should see a block of output with all of your valid (and expired) identities. Look for the block at the bottom titled “Valid identities only”

Valid identities only

1) 34F3D92F755F343C9E05AE207ECDAD47C4183D77 "iPhone Developer: Jason Adams (SZ2V5SDF5DF)"

Two) 257CA472EB76BE93AED28FEDE8FE7179A3B126EF "iPhone Distribution: My Company (FG45D44FR34)"

Three) 1909558E0478D5CB13929AE30A20380EB47383E6 "iPhone Developer: Jason Adams (S56FDFPBY4)"

three valid identities found

Choose the identity most suitable for this project, and copy the text inbetween the quotation marks on the corresponding line. Next, open the global configuration file src/build/common.gypi and search for the text ‘CODE_SIGN_IDENTITY'. It should occur around line 4830:

# iOS SDK wants everything for device signed

‘CODE_SIGN_IDENTITY[sdk=iphoneos*]‘: ‘iPhone Developer’

Switch the identity value with the one you chose from the valid identity list:

# iOS SDK wants everything for device signed

‘CODE_SIGN_IDENTITY[sdk=iphoneos*]‘: ‘iPhone Developer: Jason Adams (SZ2V5SDF5DF)’

By default, the test application will be built with a bundle ID of com.google.AppRTCDemo. If the signing identity & associated provisioning profile is restricted to a specific bundle ID or wildcard, you might need to switch the test project bundle ID to match (You will see the error “Install – Error occured: ApplicationVerificationFailed” if this is the case). To do that, open the file src/talk/examples/objc/AppRTCDemo/ios/Info.plist and switch the following lines to match whatever bundle ID you need:

Save the file, and kick off the build again. Otherwise, the build will fail with an error similar to “AssertionError: Numerous codesigning identities for identity: iPhone Developer”.

If you are still having trouble with the build choosing the right provisioning profile for the device you are working with, you can take a look at the provisioning profile that was chosen for you with the following directive:

security cms -D -i src/out_ios/Release-iphoneos/AppRTCDemo.app/embedded.mobileprovision

NOTE: If you are switching bundle IDs, the build might not automatically pick up the switches. The best way to make sure it rebuilds the test app with the fresh bundle ID is to delete the output directory at src/out_ios/

If the build is pulling in the wrong provisioning profile even however you have the correct codesigning identity specified, there is a way to by hand substitute the embedded provisioning profile from the compiled AppRTCDemo.app with the following steps. It's better to figure out the upstream problem tho’, since you would have to do this every single time you compile. If you truly must do this every time, then you can add the following directions into the end of your makeall-iosdevice.sh script.

1) Delete the existing code signature from the compiled app

rm -rf src/out_ios/Release-iphoneos/AppRTCDemo.app/_CodeSignature/

Two) Copy in a fresh provisioning profile to use, assuming it is sitting in your downloads directory

Three) Re-codesign the application using the signing identity that corresponds to the provisioning profile you just copied

codesign -f -s "iPhone Developer: Jason Adams (SZ2V5SDF5DF)" –resource-rules src/out_ios/Release-iphoneos/AppRTCDemo.app/ResourceRules.plist src/out_ios/Release-iphoneos/AppRTCDemo.app

Four) Install the newly-signed application onto your device

ideviceinstaller -d -i src/out_ios/Release-iphoneos/AppRTCDemo.app

Eventually!

If everything goes well, the upload will succeed and you'll notice a fresh demo application icon display up on your device. The build script will not automatically launch the application, so just click on the icon to run the demo. From there go after the same instructions to join a talk room as we did with the simulator.

Debug Mode

To build the libraries in debug mode instead of release mode, all you need to do is substitute every example of “out_ios/Release-” with “out_ios/Debug-” in my build scripts. The build environment will notice that switch and use the suitable optimization levels.

Making Code Switches

There is a ton of code here, but there's indeed only a petite amount that you need to worry about as an iOS developer. Here are the two key locations to embark exploring:

AppRTCDemo test project – src/talk/examples/objc

This is the demo application with the high level communication logic and UI

Objective-C WebRTC libraries – src/talk/app/webrtc/objc

These are the Objective-C wrappers to the core communication libraries.

As long as you modify the code in place, the build scripts will automatically tie everything together and compile the finished demo application.

Incorporating WebRTC into Your Custom-made iOS Application

If you are building an application on top of the WebRTC framework, you don't indeed want to mess around with the raw WebRTC source code if you can avoid it. What you truly want is the compiled code in a static library that you can just throw into your XCode project. Fortunately for you, the build script will take care of this as well. Use the following parameter to build the libraries for both x86 & armv7 and then combine all of the compiled objects into a single fat library:

This will drool out a file named libWebRTC.a into your working directory. Haul this file into your XCode project along with the public headers found here:

Additionally, you will need to add a few frameworks to your project in order for it to build correctly:

Also note that the WebRTC libraries presently only build for armv7 and x86. The standard architectures defined for a fresh XCode project expect armv7s & arm64. Your application build will fail at the moment unless you by hand limit your project to only build for those architectures. Apple recently announced that arm64 is going to be required in applications submitted to the app store in the near future, so let's hope the WebRTC libraries are updated to support that soon!

Love playing around with the project, and certainly let me know if you learn any other tips or tricks.

Need Help?

Black Magic & Document Merging in Objective-C

Ninjanetic Design releases ios2android, an photo conversion device to help Android developers

Featured on AirPair

Comments 146

This is a truly excellent guide, I'd had wished it was available when I was going through the same troubles getting webrtc running on IOS. Thank you very much for this, I expect this will save a lot of people a lot of time!

Thanks a lot for this, painless way to build webrtc on IOS!

I'm attempting to add a movie talk on an existing app, Do you have any advice on using this work as a library in a different project ?

Thanks! There's not a very clean way to do that at the moment, but I think a good place to begin would be to look at this project:

I think the basic idea is to build the libraries using the guideline line contraptions, and then either copy or symlink the *.a files from the trunk/out_ios directories into your larger project. That's essentially what they did there (Note that this particular GitHub project does not build the libraries, but all of the code is there for reference).

I always fail at last steps. the verification. I attempted other app direct from xcode, no issue.

Install – Error occured: ApplicationVerificationFailed

Did any one meet similar issue before? Any suggestion for it?

Thanks in advance

That's a tricky problem, but most likely it is related to the code signing identity and provisioning profiles on your computer. I have not seen any definitive answers online, but this seems like a pretty reasonable experiment to attempt:

did you find any solution for this issue? let me know if you have any solution for this issue. Me too facing the same problem.

hi,jason,i have some questions about the example application on ios, your response will be so appreciated

1.what's the different inbetween your steps and the “superb kicking off point” one:https://github.com/gandg/webrtc-ios

Two.i have build the “superb commencing point” one on iphone and type the room number then apply, but i get nothing but a crimson rectangle on screen.what happened?

Trio.does the example application on ios support movie capture and sending or movie recieving or both of them?

Four.the googls says(http://www.webrtc.org/reference/getting-started):”On mac, Open trunk/talk/examples/peerconnection/server/server_test.html. Click connect. Observe that the peerconnection_server announces your connection. Now you can open one more tab with the page, connect that too (with a different name) and send messages inbetween the peers.” i attempted this and found that this webpage example using xmlhttprequest as the signalling channel, which is different from the room number method. is it possible to use the xmlhttprequest method instead of the room number method on the ios example application?how to do that?

Hi Ted, see below:

1. The http://webrtc.googlecode.com/svn/trunk code will give you the latest official WebRTC framework codeBase, but the example iOS implementation there only supports audio. The https://github.com/gandg/webrtc-ios project has taken a snapshot of the official code base and added a *very* basic movie implementation on top of it.

Two. Very first, keep in mind that project only works on actual iOS devices, it will not work on the simulator. 2nd, at this point in time (December 2013) the WebRTC framework is not very stable on iOS. It has not been unusual for me that a movie connection can only be established one out of every eight times I attempt.

Three. The https://github.com/gandg/webrtc-ios project supports both sending and receiving movie, albeit at the moment only the received movie will showcase up on the device screen (not the local camera).

Four. I have only tested using http://apprtc.appspot.com so unluckily I'm not sure how to help you with the test page you are talking about.

Thanks a lot for the reply!

Thank you very much for providing other people instructions on how to finish this project, it't been good following your tips. Anyway, I am attempting to do a group movie talk application on iOS like @Nick, so I was wondering if you could explain a bit more about how to incorporate this project into my existing code, because I am using Xcode and here we are doing shell directions. Also I have looked at this project https://github.com/gandg/webrtc-ios, how ever it does not truly build and run in my Xcode, I get like nine errors and stuff. Your help would be much appreciated! It'll be excellent if you can send me your email address so we can get in touch. Thanks again!

Unluckily I think for most production applications you will be stuck having two builds:

* One to build the raw libraries through the directive line scripts

* One that builds your actual application in XCode and just links in those pre-built libraries.

Ideally, you shouldn't have to mess with the libraries so often unless you want to pull in the latest switches from upstream. That's basically what the Github project you mentioned has done.

Fantastic blog Jason, thank you for this.

I'm attempting it with Xcode Five.0.Two (5A3005), and iOS 7, but when I run ./makeall-iossim.sh, I get the following build error. Any suggestions?

llvm-gcc-4.Two: -E, -S, -save-temps and -M options are not permitted with numerous -arch flags

ninja: Injecting directory `out_ios/Debug-iphoneos'

[23/2038] CC obj/third_party/nss/nspr/pr/src/linking/nspr.prlink.o

FAILED: /usr/bin/gcc-4.Two -MMD -MF obj/third_party/nss/nspr/pr/src/linking/nspr.prlink.o.d -DANGLE_DX11 -DDISABLE_NACL -DV8_DEPRECATION_WARNINGS -DCHROMIUM_BUILD -DUSE_LIBJPEG_TURBO=1 -DENABLE_INPUT_SPEECH -DENABLE_EGLIMAGE=1 -DCLD_VERSION=1 -DENABLE_SPELLCHECK=1 -DDISABLE_FTP_SUPPORT=1 -D_NSPR_BUILD_ -DFORCE_PR_LOG -DXP_UNIX -DDARWIN -DXP_MACOSX -D_PR_PTHREADS -DHAVE_BSD_FLOCK -DHAVE_DLADDR -DHAVE_LCHOWN -DHAVE_SOCKLEN_T -DHAVE_STRERROR -DNSPR_STATIC -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -DDEBUG -D_DEBUG -I../../third_party/nss/nspr/pr/include -I../../third_party/nss/nspr/pr/include/private -I../../third_party/nss/nspr/lib/ds -I../../third_party/nss/nspr/lib/libc/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -O0 -gdwarf-2 -fvisibility=hidden -Wnewline-eof -miphoneos-version-min=6.0 -arch armv7 -Wendif-labels -Wno-unused-parameter -Wno-missing-field-initializers -Wheader-hygiene -Wno-c++11-narrowing -Wno-char-subscripts -Wno-unneeded-internal-declaration -Wno-covered-switch-default -Wstring-conversion -Wno-deprecated-register -Wheader-hygiene -Wno-char-subscripts -Wno-unneeded-internal-declaration -Wno-c++11-narrowing -Wno-deprecated-declarations -Wno-incompatible-pointer-types -Wno-pointer-sign -I/opt/local/include -O2 -arch x86_64 -std=c99 -Xclang -load -Xclang /Users/jtosey/ws/google-webrtc/trunk/instruments/clang/scripts/../../../third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.dylib -Xclang -add-plugin -Xclang find-bad-constructs -fcolor-diagnostics -c ../../third_party/nss/nspr/pr/src/linking/prlink.c -o obj/third_party/nss/nspr/pr/src/linking/nspr.prlink.o

llvm-gcc-4.Two: -E, -S, -save-temps and -M options are not permitted with numerous -arch flags

[23/2038] CXX obj/webrtc/modules/pacing/paced_sender.paced_sender.o

ninja: build stopped: subcommand failed.

You might have a typo in your build script, are you attempting to build for the simulator or an actual device? The filename of your build script implies the simulator to me, but it looks like it's specifying the armv7 architecture which most likely will not work.

Dual check your build script, especially this function if you are attempting to build for the simulator:

export GYP_DEFINES=”$GYP_DEFINES OS=ios target_arch=ia32″

export GYP_GENERATOR_FLAGS=”$GYP_GENERATOR_FLAGS output_dir=out_sim”

I successfully able to do on simulator but when i did for device I got the following error:

— webrtc has been sucessfully built

— launching on device

ERROR: stat: trunk/out_ios/Debug-iphoneos/AppRTCDemo.app: No such file or directory

Let me know if you have idea to resolve that issue.

The makeall-iosdevice.sh script defines the output directory where the application will be placed, so dual check that your file matches what I have above, especially this line:

wrios && gclient runhooks && ninja -C out_ios/Debug-iphoneos AppRTCDemo

If that all looks okay, then it sounds like there is some other error happening during the build phase, possibly related to code signing. Do you see any other error messages being printed out further back in the output log?

the gclient sync step always fails for me with various errors about http:// sites not being reachable. if i by hand take each line that says “running” and substitute http:// with https:// and take out non-interactive it will let me by hand grab those particular checkouts. but it still dies with.

“________ running ‘svn update /Users/kevinbradley/Developer/WebRTC/trunk –non-interactive –force –accept theirs-conflict –ignore-externals' in ‘/Users/kevinbradley/Developer/WebRTC'

At revision 5383.

without telling me a corresponding checkout line this seems to happen to me with every single svn project i attempt. mayb ei just need to update my svn build? any thoughts?

I would certainly dual check that you are not running a indeed old version of subversion, I've seen people get similar errors for that reason. Otherwise the only thing I could think to indeed check would be any firewall settings you might have that would prevent subversion from talking to the Internet?

i attempted updating to a newer build of svn but still get similiar problems. was thinking maybe it was company network firewall issues (will have to check into that) but attempted while remoted in to my computer at home as well with similar issues. its a shame the process doesnt emerge to be a bit more semitransparent. i'd have no problem editing config files to switch everything to https if i could, but i cant figure out where it fetches those lists from.

Thanks for your job.

I followed the tutorial and i installed good but when i treat to execute ./makeall-iossim.sh it presents the next errors:

ld: symbol(s) not found for architecture i386

clang: error: linker directive failed with exit code one (use -v to see invocation)

ninja: build stopped: subcommand failed.

— webrtc has been sucessfully built

— running webrtc appdemo

iossim: ERROR: Simulator failed to begin: “Simulator session timed out.” (DTiPhoneSimulatorErrorDomain:Two)

i reseted the content and settings of simulator but don't stationary

Can you help me please ?

This is a bug in trunk/third_party/libyuv:

Workaround (in trunk/third_party/libyuv):

And then call makeall-iossim.sh with fetch disabled.

but it proceed to presenting error:

Generating gyp files from GN…

Updating projects from gyp files…

Hook ‘/usr/bin/python trunk/webrtc/build/gyp_webrtc -Dextra_gyp_flag=0′ took 24.28 secs

ninja: Injecting directory `out_sim/Debug'

ninja: no work to do.

— webrtc has been sucessfully built

— running webrtc appdemo

iossim: ERROR: Simulator failed to commence: “Simulator session timed out.” (DTiPhoneSimulatorErrorDomain:Two)

I have xcode Five.0.Two and simulator 7.0.Three running on macbook with mountain lion.

The issue I mentioned above is immobilized now.

From what I can tell, your issue seems to have to do with the iOS simulator, not with (lib)webrtc. Make sure it's not running in the background somewhere (check the processes). Attempt to commence it by hand:

If this works, you can attempt “Reset Content and Settings…” from the i”OS Simulator” menu.

Otherwise, attempt googling this error message, there seems to be a lot of discussion going on..

It works on simulator, now I am executing app on the device.

_YUY2ToI422 in libyuv.a(libyuv.planar_functions.o)

ld: symbol(s) not found for architecture armv7

clang: error: linker guideline failed with exit code one (use -v to see invocation)

ninja: build stopped: subcommand failed.

@Richard: Maybe the workaround for the (now motionless) issue with libyuv I mentioned above is still active on your side? Attempt to enable “fetch” again in Jason's script.

List of instruction to BUild the source for IOS device:

1)export PATH=/Users/o2c_macmini_02/depot_tools:$PATH —–depot devices path

export GYP_DEFINES=”build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1 enable_tracing=1″

export GYP_DEFINES=”build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1″

export GYP_DEFINES=”$GYP_DEFINES OS=ios target_arch=armv7″

export GYP_GENERATOR_FLAGS=”$GYP_GENERATOR_FLAGS output_dir=out_arm”

export GYP_GENERATOR_FLAGS=”$GYP_GENERATOR_FLAGS output_dir=out_dev”

ninja -C out_dev/Debug-iphoneos AppRTCDemo

ideviceinstaller -i trunk/out_dev/Debug-iphoneos/AppRTCDemo.app

i see some examples in these build scripts for getting things working on the mac end, i know that part is incomplete since there is no mac example in the talk/ folder, if one was to add a mac project in the same way as the iOS one in that folder how would they get things building via your scripts? what other modifications would need to be done?

I have not built the code for mac specifically before, but there is a good amount of information on the WebRTC Google Group here that might be helpful:

export GYP_DEFINES=”$GYP_DEFINES OS=ios target_arch=armv7″ —->iso device

export GYP_GENERATOR_FLAGS=”$GYP_GENERATOR_FLAGS output_dir=out_arm” —–> this out folder is for ios device

export GYP_DEFINES=”$GYP_DEFINES OS=ios target_arch=ia32″ —–>for simulator

export GYP_GENERATOR_FLAGS=”$GYP_GENERATOR_FLAGS output_dir=out_sim” —-> out for simulator

export GYP_DEFINES=”$GYP_DEFINES OS=mac target_arch=x64″ —–> for mac

export GYP_GENERATOR_FLAGS=”$GYP_GENERATOR_FLAGS output_dir=out_mac” —-> out for mac

These are the three ways you can do.

just switch these directions based on your requirement.

thanks guys! i actually figured it out earlier today as well, there is another modification that is needed aside from the scripts (i guess i should've said what i already attempted!)

echo “– webrtc has been sucessfully fetched”

export GYP_DEFINES=”build_with_libjinglth_chromium=0 libjingle_objc=1″

export GYP_DEFINES=”$GYP_DEFINES OS=ios target_arch=armv7″

export GYP_GENERATOR_FLAGS=”$GYP_GENERATOR_FLAGS output_dir=out_ios”

export GYP_DEFINES=”$GYP_DEFINES OS=mac target_arch=x64″

export GYP_GENERATOR_FLAGS=”$GYP_GENERATOR_FLAGS output_dir=out_mac”

wrmac && gclient runhooks && ninja -C out_mac/Debug AppRTCDemo

echo “– webrtc has been sucessfully built”

wrios && gclient runhooks && ninja -C out_ios/Debug-iphoneos AppRTCDemo

echo “– webrtc has been sucessfully built”

ideviceinstaller -i trunk/out_ios/Debug-iphoneos/AppRTCDemo.app

echo “*** webrtc build failed”

Related video:

Leave a Reply

Your email address will not be published. Required fields are marked *