The ‘Pods-XXX’ target has transitive dependencies that include statically linked binaries

一、背景

將Swift工程依賴的三方庫生成xcframework二進制庫格式后,制作為pod私有庫,然后工程改為依賴這個pod私有庫该贾。
然后執(zhí)行pod install,報錯:
The ‘Pods-XXX’ target has transitive dependencies that include statically linked binaries: xxxx.xcframework.
Pods-XXX具有可傳遞的依賴項捌臊,依賴項中包含了靜態(tài)鏈接的二進制文件杨蛋。

  • transitive dependencies
    Cocoapods的依賴結構中,某個庫所依賴的庫稱為直接依賴項娃属,這些直接依賴項所依賴的其他庫稱為傳遞依賴項。
    簡單來說护姆,如果 Pods-XXX 中的一個庫A依賴了另一個庫B矾端,那么B就是庫A的直接依賴項,而如果庫B又依賴了其他庫C和D卵皂,那么C和D就是 Pods-XXX 的傳遞依賴項秩铆。

在這種情況下,當您編譯Pods-XXX時,編譯器需要將所有傳遞依賴項的代碼一起編譯并打包到最終生成的可執(zhí)行文件中殴玛。

二捅膘、 報錯的原因及解決
  • 報錯的原因
    通常是由于動態(tài)庫和靜態(tài)庫之間的沖突導致的。你的 Podfile 中的某些其他依賴可能已經使用了靜態(tài)庫(可能是.podspec文件中寫了s.static_framework = true)滚粟,并與你的xcframework沖突寻仗。一般這個沖突是由于構架不匹配:xcframework支持多個架構的二進制文件,但靜態(tài)庫通常只提供單個架構的二進制文件凡壤。如果你的靜態(tài)庫和 xcframework之間的架構不匹配署尤,就會導致沖突。
解決方法

辦法一:
將依賴了xcframework庫的私有庫改為動態(tài)庫(s.static_framework = false)亚侠。

  • 方法二:繞過CocoaPods靜態(tài)庫傳遞依賴檢查機制曹体。
    修改podfile,增加如下代碼
pre_install do |installer|
 Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
end

說明:

這段代碼使用 Ruby 的元編程方式在 Pod 庫中的 Pod::Installer::Xcode::TargetValidator 類中定義了一個名為 verify_no_static_framework_transitive_dependencies 的空方法硝烂。

具體來說箕别,這是使用了 Ruby 中的 define_method 方法,它可以動態(tài)地為某個類添加一個方法滞谢。在這里串稀,通過使用 define_method 方法,我們可以將一個名為 :verify_no_static_framework_transitive_dependencies 的方法添加到 ‘Pod::Installer::Xcode::TargetValidator’ 類中爹凹。

在這個方法中厨诸,并沒有具體的實現(xiàn)代碼,而是一個空方法禾酱。這是因為這個方法需要在運行時被 CocoaPods 內部的其他方法調用微酬,以實現(xiàn)檢查靜態(tài)庫傳遞依賴的功能。

這種做法可以繞過 CocoaPods 實際代碼中對 verify_no_static_framework_transitive_dependencies 的檢查機制颤陶,從而設置該選項為 true颗管,以驗證 CocoaPods 依賴是否存在靜態(tài)庫傳遞依賴。也就是說滓走,通過這段代碼垦江,我們可以使用靜態(tài)庫作為 CocoaPods 直接依賴,同時仍然開啟 verify_no_static_framework_transitive_dependencies 檢查機制搅方,使得 CocoaPods 仍然可以檢查傳遞依賴是否符合要求比吭。

需要注意的是,這種做法并不推薦使用姨涡,因為繞過 CocoaPods 檢查機制可能會導致其他問題的出現(xiàn)衩藤。通常來說,我們應該盡可能避免靜態(tài)庫的傳遞依賴涛漂,并且始終推薦使用動態(tài)庫來避免相關的問題赏表。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末检诗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子瓢剿,更是在濱河造成了極大的恐慌逢慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件间狂,死亡現(xiàn)場離奇詭異攻泼,居然都是意外死亡,警方通過查閱死者的電腦和手機前标,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門坠韩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人炼列,你說我怎么就攤上這事只搁。” “怎么了俭尖?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵氢惋,是天一觀的道長。 經常有香客問我稽犁,道長焰望,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任已亥,我火速辦了婚禮熊赖,結果婚禮上,老公的妹妹穿的比我還像新娘虑椎。我一直安慰自己震鹉,他們只是感情好,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布捆姜。 她就那樣靜靜地躺著传趾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪泥技。 梳的紋絲不亂的頭發(fā)上浆兰,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機與錄音珊豹,去河邊找鬼簸呈。 笑死,一個胖子當著我的面吹牛店茶,可吹牛的內容都是我干的蜕便。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼忽妒,長吁一口氣:“原來是場噩夢啊……” “哼玩裙!你這毒婦竟也來了?” 一聲冷哼從身側響起段直,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤吃溅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鸯檬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體决侈,經...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年喧务,在試婚紗的時候發(fā)現(xiàn)自己被綠了赖歌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡功茴,死狀恐怖庐冯,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情坎穿,我是刑警寧澤展父,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站玲昧,受9級特大地震影響栖茉,放射性物質發(fā)生泄漏。R本人自食惡果不足惜孵延,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一吕漂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尘应,春花似錦惶凝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至娜饵,卻和暖如春坡贺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背箱舞。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工遍坟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晴股。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓愿伴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親电湘。 傳聞我的和親對象是個殘疾皇子隔节,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內容