WebRTC SDK API封装(1)-开发环境搭建

前言

从最开始软件开发商Global IP Solutions的GIPS引擎,到2010年被谷歌收购,正式更名为"WebRTC",再到2011年6月2日谷歌宣布开放WebRTC源代码,再到2012年将WebRTC集成到浏览器,WebRTC源码架构历经多次变更,代码集成度不断提高,基于WebRTC技术的开源项目也越来越多,如使用JavaScript SIP代理的JsSIP,sipML5, WebRTComm等,使用WebSocket SIP代理的服务器如asterisk,FreeSwitch,OverSIP等,这对于使用着来说,使用起来越来越方便,可能简单的几十行代码,就可以构建起基于浏览器或者APP的即时通信Demo。

但是也由于WebRTC集成度越来越高,使得需要定制化开发或者使用WebRTC中的部分功能,如何灵活使用WebRTC中相关技术,对于想一窥WebRTC内部原理的开发者来说就变得比较困难。

本文及后续系列,将以自己学习研究WebRTC以及自己重新封装Native API过程中遇到的问题进行记录分享,方便查阅分享。

由于WebRTC一直由Google Team维护开发,因此如果国内开发者要使用WebRTC并且进行定制开发的话最好有VPN,这样才能实时获取最新代码,文档以及最新动态。

开发环境搭建

1. 安装Chromium depot tools

$git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$export PATH=$PATH:/path/to/depot_tools

2. 获取代码

WebRTC的编译平台,其中Android/Linux只支持在Linux的PC环境编译,而iOS/macOS只支持在macOS的PC环境下编译,Windows平台的编译,以及如果在同一编译平台,编译出不同平台运行程序及运行库的方法没有研究,感兴趣的可以研究分享一下。
代码获取有两种方式:

  • 使用git从官方手动获取源码并配置
$git clone https://webrtc.googlesource.com/src
$gclient config --spec 'solutions = [
  {
    "url": "https://webrtc.googlesource.com/src.git",
    "managed": False,
    "name": "src",
    "deps_file": "DEPS",
    "custom_deps": {},
  },
]
target_os = ["android", "unix"]
'
#对于iOS平台,只需将上述的target_os行改为target_os = ["ios", "mac"]

#获取远端git的各个版本分支信息
$cd src/
$git config --add remote.origin.fetch '+refs/branch-heads/*:refs/remotes/branch-heads/*'
$git fetch origin

#获取编译目标文件所需的工具,Android SDK/NDK等等,此步骤耗时最长,预计会下载8G左右文件
$gclient sync 
  • 使用fetch工具
    相当于是将上述方式的git clone/config/fetch和gclient config进行了封装,方便了开发者使用,但是容易让人不清楚实现细节。
#Android平台
$fetch --nohooks webrtc_android
$gclient sync

#iOS平台
$fetch --nohooks webrtc_ios
$gclient sync

3. 代码编译

  • 生成项目工程
#Android平台
$gn gen out/android --args='target_os="android" target_cpu="arm"'
#iOS平台
$gn gen out/ios_64 --args='target_os="ios" target_cpu="arm64"'
  • 编译工程
#Android平台
$ninja -C out/android
#iOS平台
$ninja -C out/ios_64

至此,WebRTC开发环境的搭建已经完成,接下来会进行封装API的操作记录。

本人水平一般,能力有限,欢迎大家指正留言交流!

参考资料

depot tools:http://dev.chromium.org/developers/how-tos/depottools
WebRTC主页: https://webrtc.org/native-code/development/

你可能感兴趣的:(VoIP,Media,Engine)