iOS端 TXLiteAVSDK 與其它三方庫(kù)沖突報(bào)錯(cuò)問(wèn)題

問(wèn)題場(chǎng)景

iOS 端在集成騰訊云視頻服務(wù)客戶端音視頻SDK時(shí),與開發(fā)者自己工程中的第三方庫(kù)沖突,導(dǎo)致編譯報(bào)錯(cuò)。

解決方法

場(chǎng)景1

編譯報(bào)dumplicate symbols錯(cuò)誤。

image

解決辦法

一般是因?yàn)?other linker flags 設(shè)置了-all_load,去掉這個(gè),只需要設(shè)置-ObjC。

場(chǎng)景2

ffmpeg 和 ijk 相關(guān)沖突。

解決辦法

全功能專業(yè)版和獨(dú)立播放器版、企業(yè)版等版本中都包含有 ffmpeg 和 ijkplayer,如果您的項(xiàng)目中已經(jīng)包含相關(guān)開源庫(kù),推薦使用 精簡(jiǎn)版符號(hào)重命名版。

場(chǎng)景3

工程里面與 TXLiteAVSDK 內(nèi)部引用的庫(kù)重復(fù)。

解決辦法

直接刪除本地工程里面重復(fù)的庫(kù)文件。

場(chǎng)景4

工程里面三方庫(kù)與TXLiteAVSDK有相同的.o文件。


image

解決辦法

這種情況發(fā)生在不能直接刪除對(duì)應(yīng)的三方庫(kù)場(chǎng)景,那么可以刪除這個(gè)三方庫(kù)里面沖突的.o文件然后重新打包,就不會(huì)沖突了。

命令行:
lipo -info libexample.a

如提示fat file,代表這個(gè)包是支持多平臺(tái)的,需要逐一解包然后重打包。

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

那么我們需要重復(fù)5次以下步驟。

解包、打包步驟:

  1. 創(chuàng)建臨時(shí)文件夾,用于存放解壓后的.o文件,如i386:mkdir i386
  2. 取出i386平臺(tái)的包:lipo libexample.a -thin i386 -output i386/ libexample-i386.a
  3. 查看庫(kù)中所包含的文件列表:cd i386 && ar -t libexample-i386.a
  4. 解壓出 object file(.o后綴文件):ar xv libexample-i386.a
  5. 找到要?jiǎng)h除的包(someframework.o)刪掉:rm someframework.o
  6. 重新打包object file:cd .. && ar rcs libexample-i386.a i386/*.o,可再次輸入[2-5]中的命令檢驗(yàn)是否刪除成功
  7. 將其他幾個(gè)平臺(tái)包逐一做上述[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架構(gòu), 提取特定架構(gòu),整合和拆分庫(kù)文件。

  • lipo -info xxxx.framework
    查看信息
  • lipo -create xxxx xxxx -output xxxx
    整合成Fat文件
  • lipo xxxx -thin cpu(armv7/arm64等) -output xxxx
    提取特定的cpu架構(gòu)的thin文件
  • lipo -remove cpu(armv7/arm64等) xxxx -output xxxx
    移除掉特定的cpu架構(gòu)的文件
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容