前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS端TXLiteAVSDK与其它三方库冲突报错问题

iOS端TXLiteAVSDK与其它三方库冲突报错问题

原创
作者头像
腾讯视频云-Zachary
发布2019-09-05 22:08:06
3K0
发布2019-09-05 22:08:06
举报

一、问题场景

iOS 端在集成腾讯云视频服务客户端音视频SDK时,与开发者自己工程中的第三方库冲突,导致编译报错。

二、解决方案

场景1

编译报dumplicate symbols错误。

解决办法

一般是因为 other linker flags 设置了-all_load,去掉这个,只需要设置-ObjC

场景2

ffmpeg 和 ijk 相关冲突。

解决办法

全功能专业版和独立播放器版、企业版等版本中都包含有 ffmpeg 和 ijkplayer,如果您的项目中已经包含相关开源库,推荐使用 精简版符号重命名版

场景3

工程里面与 TXLiteAVSDK 内部引用的库重复。

解决办法

直接删除本地工程里面重复的库文件。

场景4

工程里面三方库与TXLiteAVSDK有相同的.o文件。

解决办法

这种情况发生在不能直接删除对应的三方库场景,那么可以删除这个三方库里面冲突的.o文件然后重新打包,就不会冲突了。

命令行:

lipo -info libexample.a

如提示fat file,代表这个包是支持多平台的,需要逐一解包然后重打包。

例如:Architectures in the fat file: libexample.a are: i386 armv7 armv7s x86_64 arm64

那么我们需要重复5次以下步骤。

解包、打包步骤:

  1. 创建临时文件夹,用于存放解压后的.o文件,如i386:mkdir i386
  2. 取出i386平台的包:lipo libexample.a -thin i386 -output i386/ libexample-i386.a
  3. 查看库中所包含的文件列表:cd i386 && ar -t libexample-i386.a
  4. 解压出 object file(.o后缀文件):ar xv libexample-i386.a
  5. 找到要删除的包(someframework.o)删掉:rm someframework.o
  6. 重新打包object file:cd .. && ar rcs libexample-i386.a i386/*.o,可再次输入2-5中的命令检验是否删除成功
  7. 将其他几个平台包逐一做上述1-6操作
  8. 重新合并为fat file的.a文件:lipo -create libexample-armv7.a libexample-armv7s.a libexample-i386.a -output libexample-new.a

三、原理

lipo是管理Fat File的工具, 可以查看cpu架构, 提取特定架构,整合和拆分库文件。

  • lipo -info xxxx.framework(查看信息)
  • lipo -create xxxx xxxx -output xxxx(整合成Fat文件)
  • lipo xxxx -thin cpu(armv7/arm64等) -output xxxx(提取特定的cpu架构的thin文件)
  • lipo -remove cpu(armv7/arm64等) xxxx -output xxxx(移除掉特定的cpu架构的文件)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、问题场景
  • 二、解决方案
  • 三、原理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档


http://www.vxiaotou.com