【问题标题】:Building WebRtc on iOS在 iOS 上构建 WebRtc
【发布时间】:2026-02-13 21:10:01
【问题描述】:

按照以下说明,我成功地在 MAC 上构建 WebRTC:http://www.webrtc.org/reference/getting-started

有人在 iOS 上成功构建它吗?我知道有人 (arik) 在 iOS 上成功构建了它:https://groups.google.com/forum/#!msg/discuss-webrtc/VJg-fk2-i_0/dtG200DOzsgJ 但步骤不清楚。

能否有人(基于 ios 构建)总结这些步骤,以便将来对每个尝试它的人有用?

【问题讨论】:

  • 我只是为 iOS 构建音频模块,这可能对其他人有所帮助。 *.com/questions/12786468/…
  • jzn,你能帮我解答这个问题吗? *.com/questions/20719873/…
  • 天哪,2020 年情况变得更糟了。官方已停止对预编译库的支持,并且大多数 WebRTC.org 指南都是死链接。

标签: ios build webrtc


【解决方案1】:

我写了一篇详细的博客文章,其中包含有关如何构建 WebRTC 示例 iOS 应用程序以及如何在 iOS 模拟器或实际 iOS 设备上运行它的所有说明。您可以take a look here阅读详情,这是一个相当漫长的过程。

【讨论】:

  • 您好,您的博文渲染得不是很好,文字是白底白字吗?
  • @dazhi 有时这些 Google 字体需要一段时间才能下载,并且根据您的浏览器,它可能会在完成之前显示为白色文本。等几秒钟。
  • @jzn : 你能更新 iOS9 和 Xcode 7 的帖子吗
【解决方案2】:

是的,为 iOS 编译是一项非常痛苦的任务……尤其是让它在 Xcode 中工作。

这是我为 ios 获取 AppRTC Demo 的尝试

克隆/拉取:https://github.com/pristineio/webrtc-build-scripts

获取repo后,打开ios目录下的xcode项目。将目标设置为 WebRTC Dance,然后执行。此时,脚本将更新 depot_tools 并完成所有繁琐的工作(拉取、修改、构建),以便 AppRTCDemo 的目标能够解决丢失的文件并执行。

完成后,您可以使用模拟器或真实设备将目标更改为 AppRTC Demo,单击运行,它应该会执行。此处链接的指南中有更详细的信息,自述文件中有更新。

如果您想知道在后台运行了什么,请查看 git repo 的 ios 目录中的 build.sh 文件。当您选择 WebRTC Dance 时,舞蹈功能实际上会为您执行。

描述构建过程并不容易(发生的事情太多了),但构建脚本存储库绝对应该为您指明正确的方向,并帮助您在 ios 上获得 AppRTCDemo 'just work'

还有一个谷歌开发者视频发布在here,他们尝试分解构建过程,以便您可以为 ios 构建(youtube 标题具有误导性)。

另外,我刚刚添加了对 ios webrtc 的 cocoapods 支持,将其添加到您的 Podfile,

pod "libjingle_peerconnection"


# Add this to the bottom so it won't have issues with active architecture
post_install do |installer_representation|
    installer_representation.project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
            config.build_settings['VALID_ARCHS'] = ['armv7', 'i386']
        end
    end
end

并非所有版本都已构建,因此请查看the cocoadocs for which revisions are available

【讨论】:

    【解决方案3】:

    过去几个月我一直在这个领域工作 - iOS 上的 webrtc 并不容易。为了解决这个问题,我添加了一个 github 存储库,其中包含一个使用 webrtc 的 iOS 应用程序的工作示例。

    https://github.com/gandg/webrtc-ios

    该站点也引用了 google 代码站点,因此它应该是一个有用的起点。

    【讨论】:

    • 对不起,文档很差,甚至不知道怎么用!
    • 这不是很好。预构建库是用于模拟器的,几乎没有迹象表明如何将它用于其他任何东西......
    • 不确定我是否关注这些 cmets。自述文件长达三页,其中包含有关如何构建和执行的注释。它明确声明不使用模拟器,而只为设备构建。预构建的库是用于设备而不是模拟器的。 webrtc 并不容易,谷歌有很多文档,但仍然需要花费时间来学习、尝试、学习和重复。当它确实起作用时,肯定会看到直接的点对点在行动是非常有益的!
    • @gp-coder 我可以构建,我可以运行。唯一的问题是它无法连接到在 Chrome 中打开的另一个对等点。控制台中有一行显示(null)然后应用程序停止(未崩溃)。那是因为我在 iOS 8+ 上运行吗?
    【解决方案4】:

    嗯,很久没有回复这个帖子了。但是,我希望有人可以 从中获得更好的直觉。


    我一直在处理 iOS 和 Android 平台的 webrtc 编译过程。如果您有效地遵循每个步骤,则此过程非常简单。要为 iOS 编译库,请按照以下给出的命令并确保您使用 Mac 终端 的相同 (only-1) 选项卡进行 WebRTC 原生编译设置,如下所示:

    1. 先决条件
    2. 将 Xcode 与命令行链接
    3. 设置 depot_tools
    4. 获取开发代码
    5. 分支选择
    6. 编译库(iOS 框架)

    1。先决条件:

    首先,确保您已经安装了以下内容,如果没有,请使用这些命令来执行此操作:

     - sudo add-apt-repository ppa:openjdk-r/ppa
     - sudo apt-get install openjdk-8-jdk
     - sudo apt-get install pkg-config
     - sudo apt-get update
    

    如果尚未安装python==2.7,请同时安装。


    2。将 Xcode 与命令行链接:

    - sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
    
    - sudo xcode-select --switch /Library/Developer/CommandLineTools
    

    3。设置 Depot_tools:

    - git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
    
    - export PATH="$PATH:${HOME}/depot_tools"
    

    之后,依次开始以下步骤。根据机器规格网速,每一步都需要自己的时间,因此请确保每一步都在不中断的情况下完成。

    4。获取代码:

    - mkdir webrtc_ios
    
    - cd webrtc_ios
    
    - fetch --nohooks webrtc_ios
    
    - gclient sync
    

    5。选择分支头:

    - cd src
    
    - ./build/install-build-deps.sh
    
    - git checkout origin/master
    
    - git branch
    

    6。每次编译:

    确保您位于webrtc_ios/src/ 目录中,然后只需运行以下命令:

    - ./tools_webrtc/ios/build_ios_libs.sh
    

    事实证明,您最终将编译和构建 WebRtc 框架 包含 Webrtc 头文件。您可以简单地将这个框架拖放到您的 Xcode 生产环境中或直接导入它。

    当您设置好编译环境后,现在每次对本机堆栈进行更改时,您只需运行此命令 ./tools_webrtc/ios/build_ios_libs.sh 即可生成更新的框架。

    如果您最终遇到有关 webrtc 框架编译的问题。请按照以下步骤操作。确保你在这个目录中webrtc_ios/src/:

     - git checkout origin/master
    
     # To make sure you're using origin/master
    
     - git branch
    
     - gclient revert
    
     - gclient sync
    
     - ./tools_webrtc/ios/build_ios_libs.sh
    

    希望您的问题能够得到解决。我总是向你们推荐你们可以查看origin/master 后面的一个分支,并且那里没有为 iOS 构建 webrtc 框架所必需的所有依赖项和模块。所以,请始终结帐到 webrtc 原生堆栈的branch/head


    现在,如果您尝试使用这两个过程来构建 WebRTC,例如:

    1- 使用 Bash 构建工具 (./tools_webrtc/ios/build_ios_libs.sh)

    2- 使用手动编译

    示例

    $ # debug build for 64-bit iOS
    $ gn gen out/ios_64 --args='target_os="ios" target_cpu="arm64"'
    
    $ # debug build for simulator
    $ gn gen out/ios_sim --args='target_os="ios" target_cpu="x64"'
    

    2.1- 编译 (ninja -C out/Debug)

    这两个程序都可以。


    【讨论】:

      【解决方案5】:

      【讨论】: