cocoapods導致的符號重複問題分析和解決

2021-06-28 20:07:28 字數 2486 閱讀 2841

xplayer工程用了pods,xplayerdemo_pods工程引用xplayer時又用了pods,導致如下的鏈結錯誤:

duplicate symbol _objc_metaclass_$_podsdummy_pods

類似:

duplicate symbol _objc_metaclass_$_podsdummy_pods in:/

users

/erikkerber

/dropbox

/projects

/millmain

/mylib

.framework

/buddysdk

(pods

-dummy.o

)/users

/erikkerber

/library

/developer

/xcode

/deriveddata

/millmain

-fngfqhlslygksgcfuciznkpqfrbr

/build

/products

/debug

-iphonesimulator

/libpods.a

(pods

-dummy.o

)duplicate symbol _objc_class_$_podsdummy_pods in:/

users

/erikkerber

/dropbox

/projects

/millmain

/mylib

.framework

/buddysdk

(pods

-dummy.o

)/users

/erikkerber

/library

/developer

/xcode

/deriveddata

/millmain

-fngfqhlslygksgcfuciznkpqfrbr

/build

/products

/debug

-iphonesimulator

/libpods.a

(pods

-dummy.o

)ld:2

duplicate symbols

forarchitecture i386

**********************嘗試刪除**********************

一種辦法是把demo工程裡link binary with libraries裡的libpods.a的引用刪除即可。

但是這個方法無法用於自動構建,得尋找其他方案。

我們來看符號重複的原因:

xplayer這個靜態庫工程用了pods,所以編譯鏈結了pods-dummy.m檔案。

而xplayerdemo_pods又用了pods,又編譯鏈結了新的pods-dummy.m檔案。

導致了podsdummy_pods這個類重複。

所以思路是想辦法移除或重新命名其中的乙個pods-dummy.m檔案。

發現移除是不可行的,會導致無法生成libpods.a。

**********************嘗試重新命名**********************

現在來試重新命名。

首先想到的是將xplayer裡的pods-dummy.m檔案重新命名,方法如下:

修改xplayer的podfiles檔案

end這樣xplayer工程生成的dummy類是podsdummy_pods_xplayer。

此時build xplayerdemo_pods工程會報錯說podsdummy_pods_xplayer這個符號重複了: 這是因為xplayerdemo_pods的pods包含了xplayer, 生成了第二個podsdummy_pods_xplayer類。

如果我們能修改target xplayer do裡的」xplayer」為其他字串就好了,但是目前沒有找到這種解決方案。

現在剩下的辦法是將xplayerdemo_pods裡的pods-dummy.m檔案重新命名,方法如下:

修改xplayerdemo_pods的podfiles檔案如下

platform :ios, '5.0'

target :xplayerdemo_pods do #增加target語句

pod 'xplayer', :podspec => ''

end這樣xplayerdemo_pods工程生成的dummy類是podsdummy_pods_xplayerdemo_pods。

這樣就不會和xplayer包含的dummy類podsdummy_pods重名了。

問題解決。

cocoapods導致Xcode崩潰的解決辦法

大概兩周沒關電腦了,經常用到cocoapods,可能是操作太頻繁的原因,而且我公升級到了beta版的cocopods,所以.今天重啟後,發現xcode崩潰了,且提示是因為cocoapods,開啟終端,提示 未能建立的程序或偽終端 再谷歌,沒有答案.然後我關機,重啟,有兩點收穫 1.有很多問題,重啟如...

nbsp 符號導致DIV,a,u自動換行

最近在除錯乙個網頁時候發現符號導致a,u,div等不換行。預設情況下,如果文字超過了容器的寬度,比如,100px內的a標籤裡超過了100px的文字,就會自動換行。檢視原始檔,發現,我的這個網頁下面的a裡面的文字中間的空格全是 大家知道,瀏覽器對空格的解釋是這樣 乙個空格輸出來就是乙個空格,效果相當於...

符號解析與重定位

在完成空間與位址的分配步驟之後,鏈結器就進入了符號解析與重定位的步驟,這也就是靜態鏈結的核心作用 在分析符號解析和重定位之前,首先讓我們來看看 a.o 裡面是怎麼使用這兩個外部符號,也就是說我們在 a.c 源程式裡面使用了 shared 變數和 swap 函式,那麼編譯器在將 a.c 編譯成指令時,...