目录
1.编译环境:
编译平台:IOS。
工具:Mac笔记本一台,ipad/iphone(跑模拟器不需要),*=*上网工具(很重要!从代码下载到demo运行都需要),
系统信息:Mac10.14 xcode 12.3
2.源码编译:
详细可参考:https://webrtc.github.io/webrtc-org/native-code/ios/
在编译代码之前,需要先下载谷<--->歌的工具depot_tools https://chromium.googlesource.com/chromium/tools/depot_tools.git
git clone https://chromium.googlesource.com/chromium/tools/depot_tools
下载完depot_tools,需要配置环境变量,配置成永久,或者在当前终端都行:
export PATH="/Users/xxx/GitDownload/depot_tools:$PATH"
然后就是拉代码了,最好建一个工作目录,再拉代码:
fetch --nohooks webrtc_ios
gclient sync
这个过程需要一段时间,代码拉完后,就是利用gn(之前的下载的depot_tools里面有这个工具,所以如果找不到这个命令,看一下环境变量有没有问题)命令 生成一个xcodeproject,
如果你没有真机,只跑模拟器运行如下命令:
cd src
gn gen out/ios_sim --args='target_os="ios" target_cpu="x64" is_debug=true ios_enable_code_signing=false enable_dsyms=true' --ide=xcode
如果要跑真机,运行如下命令:
cd src
gn gen out/ios64 --args='target_os="ios" target_cpu="arm64" is_debug=true ios_enable_code_signing=false enable_dsyms=true' --ide=xcode
如果运行出现如下错误:
在webrtc.gni文件加入如下代码:
将 rtc_include_tests = !build_with_chromium && !build_with_mozilla
改成:
rtc_include_tests = false
也就是将这个参数强行写成false
这一步成功后,会在out/ios_sim or out/ios64生成xcodeproject, 打开工程:
如果是模拟器:
open -a Xcode.app out/ios_sim/all.xcodeproj
如果是真机:
open -a Xcode.app out/ios64/all.xcodeproj
打开工程选择AppRtcMobile
到这一步,其实就可以用模拟器跑起来了,直接进入第四步,加入房间测试。
但是真机步骤可能会比较麻烦。首先你得有appleid,然后生成证书,才能跑真机。
3. 真机调试
(1)生成证书:
点击工程,界面如下:
勾选Automatically manage signing:
点击Team,选择Add an Account:
然后按提示输入你的AppleID,密码,生成证书
然后选择一个证书,并且要将Bundle Identifier 改掉,改成一个独一无二的名字,比如我这边就是把原本的org.chrpmium.AppRTCMobile改成了org.chrpmium.AppRTCMobile.test(后缀随便加几个字母即可),这个Bundle Identifier,待会还有用。
(2)配置项目里面的info.plist文件
配好上面的证书,找到 examples/objc/AppRTCMobile/ios/Info.plist文件,将里面的<key>CFBundleIdentifier</key>下面的名字改成跟上面的Bundle Identifier一样,我这边就是org.chrpmium.AppRTCMobile.test。
然后就可以运行真机了:
这里可能会出现如下错误:
原因是iPad没有信任你的证书,只需要到设置->通用->设备管理,点一下你的证书,信任一下就完了。
如果遇见如下错误 No code signature found:
参考 https://pspdfkit.com/guides/ios/10.2/knowledge-base/library-not-found-swiftpm/,按照里面一步一步的做就行了
4.视频通话demo:
(1)真机*=*上网:
如果是真机调试,需要让真机可以*=*上网,因为我们的demo在进房间的时候,访问的是谷<>歌的服务器,这一步比较麻烦,各位可以上网查方法。我这边是利用电脑可以*=*上网,然后电脑跟iPad在同一局域网,使得iPad进电脑的DAI-------Li端口,然后就能*=*上网。步骤如下:
我这边电脑*=*上网工具是C=l=a=s=h:
每个人界面可能不一样,但是功能里肯定可以找到,勾选设置为系统DAI=======LI,允许局域网链接:
设置为系统DAI====LI,允许局域网连接勾上。
然后查看电脑的IP地址,以及DAI----LI的端口,端口一般在*=*上网工具上就可以查到,本机IP地址可以ifconfig命令查看,选择en0那个网卡。
假设我这边就是192.166.1.101:7980.
然后进入打开iPad的无线网,点击你的链接的网络旁边的那个感叹号:
点击最下面的pei置DAI====LI:
点击进去,将上一步得到的IP以及端口号配上,保存即可,可以进入www.<>google.<>com测试是否配置成功,如果能进去证明配置成功。
(2)进房间视频通话:
项目跑起来以后,其实并不能通话,因为通话需要两个端,这里谷歌已经搭好了服务器,我们只需要进入谷<>歌的网站: https://appr.tc/
进去我们输入一个房间号,比如746487474,然后JOIN,进入房间:
然后打开我们的demo,输入房间号746487474,点击Call room,就可以看到彼此视频了。(这一步可能会链接失败,多换几个房间号试试)