iOS項目中引用第三方庫引發衝突的解決方案

來源:互聯網
上載者:User

標籤:檔案的   一個   color   目錄   刪除   拷貝   衝突   file   存在   

在iOS程式開發過程中,經常會碰見引用第三方庫出現類名重複使用,導致衝突。

解決方案

1、使用命令將.a庫中的相同的包移除

2、在編譯連結項中添加-dead_strip項

   補充說明:

  -dead_strip:刪除多餘的庫符號;

  -all_load:讓連結器把所有找到的目標檔案都載入到可執行檔中;

  -force_load:所做的事情跟-all_load其實是一樣的,但是-force_load需要指定要進行全部載入的庫檔案的路徑

 

使用命令將.a庫中的相同的包移除步驟如下:

1、建立臨時檔案夾(用於存放各平台解壓後的.o檔案),將.a庫複製到臨時檔案夾中

2、建立一個子目錄armv7:mkdir armv7

3、取出armv7平台的包:lipo xxx.a -thin armv7 -output armv7/xxx-armv7.a

4、查詢庫中所包含的檔案清單(查看是否存在需進行移除的.o檔案):ar -t armv7/xxx-armv7.a

5、解壓出object file(即.o尾碼檔案):cd armv7 && ar xv xxx-armv7.a

6、找到衝突的.o尾碼的檔案,刪除:rm xxx.o

7、重新打包object file(在此操作之前可使用【4】中命令確認是否成功移除):cd .. && ar rcs xxx-armv7.a armv7/*.o

8、將其他幾個平台(i386,arm64,x86_64)包逐一按照【2-7】操作

9、重新合并.a檔案:lipo create xxx-armv7.a xxx-i386.a xxx-arm64.a xxx-x86_64.a -output xxx.a

10、拷貝到項目中覆蓋源檔案:cp xxx.a 項目源檔案路徑

iOS項目中引用第三方庫引發衝突的解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.