`
chriszeng87
  • 浏览: 741068 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mac下载并编译webrtc,安装模拟器和真机Demo

阅读更多

以下步骤需要在墙外(vpn的速度不要太慢): 

一、下载代码

1.  下载depot_tools  

$  svn co  http://src.chromium.org/svn/trunk/tools/depot_tools

2. 打开source .bash_profile 添加depot_tools路径到系统目录 export PATH=$PATH:/Users/mac/depot_tools

3.

$ cd /Users/mac/depot_tools
$ gclient config http://webrtc.googlecode.com/svn/trunk

4.

$ gclient sync --force

     在这一步block了很久,遇到了以下错误:

 Error: Command download_from_google_storage --directory --recursive --num_threads=10 --no_auth --bucket chromium-webrtc-resources trunk/resources returned non-zero exit status 1 in /Users/xxx/work/webrtc/depot_tools
Hook 'download_from_google_storage --directory --recursive --num_threads=10 --no_auth --bucket chromium-webrtc-resources trunk/resources' took 20.05 secs

 最后在google code下找到了解决的办法:

(https://code.google.com/p/webrtc/issues/detail?id=2811)     

找到 trunk/DEPS 下的这几行代码并把它注释掉
  {
    # Download test resources, i.e. video and audio files from Google Storage.
    "pattern": "\\.sha1",
    "action": ["download_from_google_storage",
               "--directory",
               "--recursive",
               "--num_threads=10",
               "--no_auth",
               "--bucket", "chromium-webrtc-resources",
               Var("root_dir") + "/resources"],
  },

5. $gclient runhooks --force

6. 进入 trunk目录,打开all.xcodeproj/

 

二、编译源码:

根据 trunk/talk/app/webrtc/objc/README 说明,编译源码。

1.找到WebRTC目录下.gclient 文件的内容,添加 target_os = ['ios', 'mac']  

2. 在.gclient下添加后,在终端WebRTC路径下,重新执行:

 gclient sync

3.1. 编译为MAC版本

进入trunk路径,执行如下命令

export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1"
export GYP_GENERATORS="xcode"    

最后找到trunk路径下的all.xcodeproj,用xcode打开就可以了。

3.2. 编译为iOS模拟器版本

export GYP_DEFINES="$GYP_DEFINES OS=ios target_arch=ia32"
  export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_sim"
  export GYP_CROSSCOMPILE=1
  gclient runhooks 
  ninja -C out_sim/Debug iossim AppRTCDemo 

执行了这些后,会在trunk/out_sim/Debug 路径下会产生一个文件 AppRTCDemo.app

执行下列命令即可启动demo

./out_sim/Debug/iossim out_sim/Debug/AppRTCDemo.app

执行  gclient runhooks 遇到这个错误:

AssertionError: Multiple codesigning fingerprints for identity: iPhone Developer

参考:http://ninjanetic.com/how-to-get-started-with-webrtc-and-ios-without-wasting-10-hours-of-your-life/

 

在文件 : trunk/tools/gyp/pylib/gyp/xcode_emulation.py and at lines 832-833 comment the following line :
#assert identity not in cache or fingerprint == cache[identity], (

#”Multiple codesigning fingerprints for identity: %s” % identity) 

解决问题。

3.3 编译为iOS真机版本

a. 安装homebrew

    http://chriszeng87.iteye.com/blog/2077674

b. 

brew install ideviceinstaller --HEAD

    (时间较长)

c.  

touch makeall-iosdevice.sh
chmod +x makeall-iosdevice.sh

把以下内容复制到你刚刚创建的文件中 

function fetch() {
echo "-- fetching webrtc"
gclient config http://webrtc.googlecode.com/svn/trunk/
echo "target_os = ['mac']" >> .gclient
gclient sync

sed -i "" '$d' .gclient
echo "target_os = ['ios', 'mac']" >> .gclient
gclient sync
echo "-- webrtc has been sucessfully fetched"

}

function wrbase() {
export GYP_DEFINES="build_with_libjinglth_chromium=0 libjingle_objc=1"
export GYP_GENERATORS="ninja"
}

function wrios() {
wrbase
export GYP_DEFINES="$GYP_DEFINES OS=ios target_arch=armv7"
export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_ios"
export GYP_CROSSCOMPILE=1
}

function wrmac() {
wrbase
export GYP_DEFINES="$GYP_DEFINES OS=mac target_arch=x64"
export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_mac"
}

function buildios() {
echo "-- building webrtc ios"
pushd trunk
wrios && gclient runhooks && ninja -C out_ios/Debug-iphoneos AppRTCDemo
popd
echo "-- webrtc has been sucessfully built"
}

function launch() {
echo "-- launching on device"
ideviceinstaller -i trunk/out_ios/Debug-iphoneos/AppRTCDemo.app
echo "-- launch complete"
}

function fail() {
echo "*** webrtc build failed"
exit 1
}

#fetch || fail
wrios || fail
buildios || fail
launch || fail

最后 

./makeall-iosdevice.sh

 大功告成。

 

以上参考了:

1. http://www.cnblogs.com/leehongee/p/3383266.html

2. http://blog.csdn.net/qs_csu/article/details/17416003

3. http://ninjanetic.com/how-to-get-started-with-webrtc-and-ios-without-wasting-10-hours-of-your-life/

 

1
0
分享到:
评论

相关推荐

    编译WebRTC用到的python_26.7z

    在实际操作中,确保你有良好的网络环境,因为编译WebRTC通常涉及大量数据的下载和交换。如果下载像"python_26.7z"这样的文件非常慢,你可以寻找国内的镜像源或者提前下载好并分享给其他团队成员,以提高工作效率。...

    webrtc_MAC编译

    ### WebRTC_MAC 编译详解 ...主要涉及了构建编译环境、下载和更新代码、以及针对特定发布版本的开发流程。这不仅有助于理解整个构建过程,还为开发者提供了实际操作的指导,从而加快开发进度并提高工作效率。

    webrtc源码的下载-对应ios-android-linux-mac-window等平台的编译文档

    webrtc源码的下载-对应ios-android-linux-mac-window等平台的编译文档 举例mac端 //直接连外网代理,如何有连外面vpn就不需要,下面的连接是例子不能直接连改自己IP和端口 export ...

    WebRTC Demo(测试通过)

    WebRTC(Web Real-Time Communication)是一项开放的...通过学习和研究这个测试通过的Demo,开发者可以更好地理解WebRTC的实际应用,并将其应用于自己的项目中,实现类似视频会议、在线教育、远程医疗等实时通信场景。

    WebRTC客户端和服务器Demo可执行程序

    本资源包含了一个WebRTC客户端和服务器的Demo可执行程序,适用于Windows平台。 首先,`peerconnection_client.exe`是WebRTC客户端的可执行文件,它实现了WebRTC的核心组件之一——PeerConnection。PeerConnection...

    最新编译的webrtc Android demo

    1. **构建环境配置**:你需要安装Android Studio,设置NDK和JDK,并配置Gradle依赖,确保能成功编译WebRTC库。 2. **添加WebRTC库**:将WebRTC的AAR文件(或者通过Git submodule导入源码并自行编译)添加到Android...

    webrtc android Demo

    WebRTC(Web Real-Time Communication)...总的来说,"webrtc android Demo"是Android开发者学习和实践WebRTC技术的重要资源,通过深入研究和实践,开发者可以掌握如何在Android应用中实现高质量的实时音视频通信功能。

    ubuntu 20.4编译成功的webrtc库,m101版本

    1. lib 2. include 3. VERSION -m101.4951 4. libwebrtc-linux-x64-h264.tar.xz

    编译WebRTC时替换的ffmpeg.zip

    1. **下载并解压**:首先,从提供的链接下载ffmpeg.zip,然后在WebRTC的源代码目录下找到对应的FFmpeg子目录,解压zip文件覆盖原有文件。 2. **重新配置**:解压后,需要重新配置WebRTC的构建系统,确保它指向新...

    编译WebRTC用到的svn_bin.zip

    WebRTC(Web Real-Time Communication)是一项开放源代码项目,由Google发起并维护,旨在为浏览器和其他应用程序提供实时通信功能,支持视频通话、音频传输以及P2P数据共享等。在开发WebRTC应用时,通常需要从源代码...

    Webrtc 视频demo(Android)

    本篇文章将深入探讨基于Android的WebRTC视频demo的相关知识点。 1. **WebRTC架构**: WebRTC系统由三大部分组成:客户端堆栈、服务器信令以及数据传输。客户端堆栈包括采集模块(捕获音频和视频)、编码和解码模块...

    webrtc demo(html+js+nodejs)

    **环境搭建**:要运行此示例,你需要安装Node.js和必要的依赖库,然后按照博客《webrtc的DEMO环境搭建》中的步骤配置服务器和客户端。这可能包括安装Node.js环境,克隆项目,安装项目依赖,设置环境变量,启动服务器...

    JSSIP实现webrtc demo

    jspsip实现webrtc进行音视频通信demo jspsip实现webrtc进行音视频通信demo jspsip实现webrtc进行音视频通信demo jspsip实现webrtc进行音视频通信demo jspsip实现webrtc进行音视频通信demo

    webrtc 官网编译步骤

    以下是从 WebRTC 官网下载和编译 iOS 端源码的步骤: 1. 首先,需要从 WebRTC 官网下载源码。可以使用 Git 命令来下载源码:`git clone https://chromium.googlesource.com/external/webrtc` 2. 下载完成后,需要将...

    webrtc demo (android)

    WebRTC(Web Real-Time Communication)是一个开放源代码项目,由Google发起并维护,它提供了浏览器和其他应用程序进行实时通信(RTC)的能力,包括音频、视频和数据共享。这个技术基于Internet工程任务组(IETF)的...

    WebRtc 下载和编译

    通过以上步骤,我们可以成功地下载和编译 WebRTC 的源代码。这不仅有助于我们深入理解 WebRTC 的内部实现机制,还可以帮助我们根据实际需求定制和扩展功能。同时,为了提高下载速度,还可以参考提供的 IP 地址配置,...

    WebRTC Demo(亲测可用)

    用例1_webrtc.chatdemo_demo 用例2_webrtc.io-demo-master_包 用例3_simpleRTC_server

    webRTC调用本地摄像头demo

    WebRTC(Web Real-Time Communication)是一项开放的网络技术,它允许网页浏览器进行实时通信(RTC),无需用户安装任何插件。这个技术对于构建基于互联网的音视频通信应用提供了巨大的便利。"webRTC调用本地摄像头...

    webrtc_Linux源代码获取以及编译

    为了在 Linux 平台上使用 Webrtc,我们需要获取其源代码并编译它。本文将详细介绍如何获取 Webrtc 的源代码、建立编译环境、编译 Webrtc 以及运行示例程序。 一、系统要求 ---------------- 在编译 Webrtc 之前,...

    支持webrtc的sip js demo

    在这个"支持WebRTC的SIP JS Demo"中,我们看到一个结合了WebRTC和SIP技术的JavaScript库示例。SIP JS是一个开源库,它允许开发者使用纯JavaScript来实现SIP通信。这个DEMO提供了如何在Web环境中使用SIP JS库与WebRTC...

Global site tag (gtag.js) - Google Analytics