henrike@webrtc.org | 28e2075 | 2013-07-10 00:45:36 +0000 | [diff] [blame] | 1 | This directory contains the ObjectiveC implementation of the |
fischman@webrtc.org | 1bc1954 | 2013-08-01 18:29:45 +0000 | [diff] [blame] | 2 | webrtc::PeerConnection API. This can be built for Mac or iOS. This |
| 3 | file describes building the API, unit test, and AppRTCDemo sample app. |
henrike@webrtc.org | 28e2075 | 2013-07-10 00:45:36 +0000 | [diff] [blame] | 4 | |
| 5 | Prerequisites: |
| 6 | - Make sure gclient is checking out tools necessary to target iOS: your |
| 7 | .gclient file should contain a line like: |
| 8 | target_os = ['ios', 'mac'] |
| 9 | Make sure to re-run gclient sync after adding this to download the tools. |
henrike@webrtc.org | 28e2075 | 2013-07-10 00:45:36 +0000 | [diff] [blame] | 10 | |
fischman@webrtc.org | 1bc1954 | 2013-08-01 18:29:45 +0000 | [diff] [blame] | 11 | - Set up webrtc-related $GYP_DEFINES; example shell functions that set |
| 12 | up for building for iOS-device, iOS-simulator, and Mac (resp) are: |
| 13 | function wrbase() { |
fischman@webrtc.org | 825e9b0 | 2013-08-07 16:52:03 +0000 | [diff] [blame] | 14 | cd /path/to/webrtc/trunk |
fischman@webrtc.org | 1bc1954 | 2013-08-01 18:29:45 +0000 | [diff] [blame] | 15 | export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1" |
| 16 | export GYP_GENERATORS="ninja" |
| 17 | } |
henrike@webrtc.org | 28e2075 | 2013-07-10 00:45:36 +0000 | [diff] [blame] | 18 | |
fischman@webrtc.org | 1bc1954 | 2013-08-01 18:29:45 +0000 | [diff] [blame] | 19 | function wrios() { |
| 20 | wrbase |
| 21 | export GYP_DEFINES="$GYP_DEFINES OS=ios target_arch=armv7" |
| 22 | export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_ios" |
| 23 | export GYP_CROSSCOMPILE=1 |
| 24 | } |
henrike@webrtc.org | 28e2075 | 2013-07-10 00:45:36 +0000 | [diff] [blame] | 25 | |
fischman@webrtc.org | 1bc1954 | 2013-08-01 18:29:45 +0000 | [diff] [blame] | 26 | function wrsim() { |
| 27 | wrbase |
| 28 | export GYP_DEFINES="$GYP_DEFINES OS=ios target_arch=ia32" |
| 29 | export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_sim" |
| 30 | export GYP_CROSSCOMPILE=1 |
| 31 | } |
henrike@webrtc.org | 28e2075 | 2013-07-10 00:45:36 +0000 | [diff] [blame] | 32 | |
fischman@webrtc.org | 1bc1954 | 2013-08-01 18:29:45 +0000 | [diff] [blame] | 33 | function wrmac() { |
| 34 | wrbase |
| 35 | export GYP_DEFINES="$GYP_DEFINES OS=mac target_arch=x64" |
| 36 | export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_mac" |
| 37 | } |
henrike@webrtc.org | 28e2075 | 2013-07-10 00:45:36 +0000 | [diff] [blame] | 38 | |
fischman@webrtc.org | 1bc1954 | 2013-08-01 18:29:45 +0000 | [diff] [blame] | 39 | - Finally, run "gclient runhooks" to generate ninja files. |
| 40 | |
| 41 | Example of building & using the unittest & app: |
| 42 | |
| 43 | - To build & run the unittest (must target mac): |
| 44 | wrmac && gclient runhooks && \ |
| 45 | ninja -C out_mac/Debug libjingle_peerconnection_objc_test && \ |
| 46 | ./out_mac/Debug/libjingle_peerconnection_objc_test.app/Contents/MacOS/libjingle_peerconnection_objc_test |
| 47 | |
tkchin@webrtc.org | acca675 | 2014-05-30 22:26:06 +0000 | [diff] [blame] | 48 | - To build & launch the sample app on OSX: |
| 49 | wrmac && gclient runhooks && ninja -C out_mac/Debug AppRTCDemo && \ |
| 50 | ./out_mac/Debug/AppRTCDemo.app/Contents/MacOS/AppRTCDemo |
| 51 | |
fischman@webrtc.org | 1bc1954 | 2013-08-01 18:29:45 +0000 | [diff] [blame] | 52 | - To build & launch the sample app on the iOS simulator: |
| 53 | wrsim && gclient runhooks && ninja -C out_sim/Debug iossim AppRTCDemo && \ |
| 54 | ./out_sim/Debug/iossim out_sim/Debug/AppRTCDemo.app |
| 55 | |
| 56 | - To build & sign the sample app for an iOS device: |
fischman@webrtc.org | 7b273a5 | 2013-11-04 18:48:12 +0000 | [diff] [blame] | 57 | wrios && gclient runhooks && ninja -C out_ios/Debug-iphoneos AppRTCDemo |
fischman@webrtc.org | 1bc1954 | 2013-08-01 18:29:45 +0000 | [diff] [blame] | 58 | |
| 59 | - To install the sample app on an iOS device: |
fischman@webrtc.org | 7b273a5 | 2013-11-04 18:48:12 +0000 | [diff] [blame] | 60 | ideviceinstaller -i out_ios/Debug-iphoneos/AppRTCDemo.app |
fischman@webrtc.org | 1bc1954 | 2013-08-01 18:29:45 +0000 | [diff] [blame] | 61 | (if installing ideviceinstaller from brew, use --HEAD to get support |
| 62 | for .app directories) |
| 63 | - Alternatively, use iPhone Configuration Utility: |
| 64 | - Open "iPhone Configuration Utility" (http://support.apple.com/kb/DL1465) |
| 65 | - Click the "Add" icon (command-o) |
fischman@webrtc.org | 7b273a5 | 2013-11-04 18:48:12 +0000 | [diff] [blame] | 66 | - Open the app under out_ios/Debug-iphoneos/AppRTCDemo (should be added to the Applications tab) |
fischman@webrtc.org | 1bc1954 | 2013-08-01 18:29:45 +0000 | [diff] [blame] | 67 | - Click the device's name in the left-hand panel and select the Applications tab |
| 68 | - Click Install on the AppRTCDemo line. |
| 69 | (If you have any problems deploying for the first time, check |
| 70 | the Info.plist file to ensure that the Bundle Identifier matches |
| 71 | your phone provisioning profile, or use a development wildcard |
| 72 | provisioning profile.) |
tkchin@webrtc.org | acca675 | 2014-05-30 22:26:06 +0000 | [diff] [blame] | 73 | - Alternately, use ios-deploy: |
| 74 | ios-deploy -d -b out_ios/Debug-iphoneos/AppRTCDemo.app |
fischman@webrtc.org | 1bc1954 | 2013-08-01 18:29:45 +0000 | [diff] [blame] | 75 | |
| 76 | - Once installed: |
| 77 | - Tap AppRTCDemo on the iOS device's home screen (might have to scroll to find it). |
| 78 | - In desktop chrome, navigate to http://apprtc.appspot.com and note |
| 79 | the r=<NNN> room number in the resulting URL; enter that number |
| 80 | into the text field on the phone. |