Unity3d_Xcode打包注意事项之 agora(声网)sdk 打包

前段时间自己项目遇到使用 agora做语音模块时 Xcode遇到问题,于是自己在网上找到了解决方案,现在分享给大家

环境准备

本文使用的环境如下:

  • XCode 8.3.1

  • 最小SDK iOS 9.3

  • 真机

  • Swift语言

  • 最新Agora SDK

  • 申请AppID

先要注册agora.io,注册完成之后再新建一个项目,需要拿到对应的App ID。后面的示例代码需要使用该App ID
最新的Agora SDK中有两个文件夹:

  • ./libs 中含有的是所需的库(集成到App需要的)

  • ./samples 包含Open Video Call 和 Open Live的代码示例

需要的环境准备好之后,新建一个agora项目,就可以开始配置和集成Agora SDK

添加SDK

先把Agora SDK中./libs复制到agora项目中的agora目录下。再把Agora SDK添加到项目的Libraries中。
添加Libraries的方法:

  1. 选中当前Target(agora)

  2. Build Phases

  3. Link Binary With Libraries

  4. 点击+

Unity3d_Xcode打包注意事项之 agora(声网)sdk 打包_第1张图片
这个时候出现的界面是添加系统类库的,选择Add Other ...从项目目录中选中./libs添加里面的内容到Libraries中。这样就添加了Agora SDK
在添加Agora SDK之后,还需要添加Agora SDK所依赖的库,参考官网上面demo使用的libraries,添加以下类库:

  • CoreTelephony.framework

  • CoreMedia.framework

  • VideoToolbox.framework

  • AudioToolbox.framework

  • AVFoundation.framework

  • libc++.tbd

build的时候出现错误:

Showing All Messages
  "_res_9_getservers", referenced from:
      agora::commons::network::get_dns_list(bool) in AgoraRtcEngineKit(libmediasdk.a-arm64-master.o)
  "_res_9_ninit", referenced from:
      agora::commons::network::get_dns_list(bool) in AgoraRtcEngineKit(libmediasdk.a-arm64-master.o)
  "_res_9_ndestroy", referenced from:
      agora::commons::network::get_dns_list(bool) in AgoraRtcEngineKit(libmediasdk.a-arm64-master.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

运行官网的demo也出现了同样的错误,说明类库没有导入完整,还需要导入类库是libresolv.9.tbd
类库依赖问题比较容易出现,另一方面也说明没有支持Pod的麻烦,建议Agora能尽快支持CocoaPods
再次build又出现了个问题:


ld: library not found for -lcrypto

问题的原因是:编译时找不到需要的链接库导致的,解决方法:

  1. 选中当前Target(agora)

  2. Build Settings

  3. Search Paths

  4. Library Search Paths

  5. 新增"${PROJECT_DIR}/agora/libs"

Unity3d_Xcode打包注意事项之 agora(声网)sdk 打包_第2张图片
另外Agora SDK并不支持bitcode,因此需要把bitcode禁止掉,禁止bitcode的方法:

  1. 选中当前Target(agora)

  2. Build Settings

  3. Build Options

  4. Enable Bitcode ->No

Unity3d_Xcode打包注意事项之 agora(声网)sdk 打包_第3张图片

这样就配置完成了Agora SDK的支持,下面就可以开始使用Agora SDK了。

访问OC类库

Agora SDK使用的是Object-c开发的,而我们的项目使用的是Swift开发的,因此就需要在Swift中访问OC的类库,新建一个文件命名为agora-Bridging-Header.h,在该文件中引入Agora SDK:


#import 
#import 

然后把该文件设置为Objective-C Bridging Header,设置方法:

  1. 选中当前Target(agora)

  2. Build Settings

  3. Swift Compiler-General

  4. Objective-C Bridging Header

  5. agora/agora-Bridging-Header.h

Unity3d_Xcode打包注意事项之 agora(声网)sdk 打包_第4张图片
这样能在Swift中使用Agora SDK了。
在开始调用Agora SDK之前还要知道,Agora SDK实现的是一套高清视频通话或直播系统,除了完成集成Agora SDK的工作之外,还需要给项目对应的访问权限。

权限

需要给项目两个权限才能使用Agora SDK,这两个权限是:

  • 相机

  • 麦克风

info.plist添加这两个权限:
Unity3d_Xcode打包注意事项之 agora(声网)sdk 打包_第5张图片
具体设置的内容为:

  • Privacy - Camera Usage Description设置为:use camera to start video call

  • Privacy - Microphone Usage Description设置为use microphone to start video call

这样完成了Agora SDK的项目配置,后面将继续写如何使用Agora SDK,包含的功能:

  1. 创建room

  2. 分屏,2分屏、4分屏、6分屏

  3. 窗口切换

  4. 前后摄像头切换

文章转自:https://segmentfault.com/a/1190000009024365 ,谢谢

你可能感兴趣的:(Unity3d开发)