將use_frameworks!改為use_modular_headers!之后

問題描述

在SDK私有庫開發(fā)過程中, 需要依賴一個Adyen支付庫, swift的寫的, 所以打開了use_frameworks!這個時候項目一切正常.
后面改了需求:所有的庫必須打包成靜態(tài)庫然后鏈接到主程序中, pod從1.5.0開始剛好也支持靜態(tài)庫, 于是注釋use_frameworks!, 打開use_modular_headers!

use_modular_headers!

問題1.鏈接cocos2d的時候出錯, 有幾個符號找不到
鏈接cocos2d.a報錯

記錄下解決這個問題的過程

  • 私有庫整個直接打包成.a靜態(tài)庫, 中間因為報錯, 放棄
  • 將Adyen直接打包成.a靜態(tài)庫, 問題依舊
  • 那幾個符號是Google的Webp的, 于是私自鏈接Webp靜態(tài)庫到項目, 問題依舊
  • 最后全局搜索了Webp, 在.xcconfig中發(fā)現(xiàn)了這個
-framework "Webp"

是YYKit中依賴了Webp.framwork


YYkit

猜測是不是這個和cocos2d.a中的符號產(chǎn)生了沖突, 最終證明是對的, 改為單獨集成YY中的組件, 未知符號的報錯終于消失??


拆分組件
問題2.swift 靜態(tài)庫NSClassFromString為nil?

Adyen支付流程異常, 支付也一直失敗, ??看來Adyen這源碼寫得不支持swift靜態(tài)庫啊
經(jīng)過斷點調(diào)試pluginClass為nil, 測試代碼也發(fā)現(xiàn)34行classB為nil, 原因也出在這

20731565865104_.pic_hd.jpg

但是當(dāng)經(jīng)過32行初始化一個CardPlugin類之后, classB正常
20721565865104_.pic_hd.jpg

有好幾種情況會導(dǎo)致這樣

  • swift中需要NSClassFromString(moduleName + "." + "ClassName")使用
  • Other Linker Flags 添加 ''-ObjC"
  • .m沒有參與編譯(Compile Sources 添加即可) .m中忘記寫@implementation
    而我的項目中Other Linker Flags這個是必加選項(經(jīng)驗, 經(jīng)驗), 也由此受到啟發(fā), 決定添加-force_load一試
-force_load ${PODS_CONFIGURATION_BUILD_DIR}/Adyen/libAdyen.a
image.png

??搞定!!!

問題疑惑(有大佬幫解答寫咩)

2個問題說是解決了, 但是本質(zhì)的原因還是沒搞明白

  1. 為什么同時鏈接webp.framework靜態(tài)庫和cocos2d.a會有沖突, 導(dǎo)致coco2d中的幾個符號找不到

  2. 為什么.xcconfig中鏈接了adyen, 還是需要進行force_load


    image.png

關(guān)于-all_load的
Reference:
IMPORTANT: For 64-bit and iPhone OS applications, there is a linker bug that prevents -ObjC from loading objects files from static libraries that contain only categories and no classes.
The workaround is to use the -all_load or -force_load flags. -all_load forces the linker to load all object files from every archive it sees, even those without Objective-C code.
-force_load is available in Xcode 3.2 and later. It allows finer grain control of archive loading. Each -force_load option must be followed by a path to an archive,and every object file in that archive will be loaded.
翻譯如下:
引用:
不過在64位的Mac系統(tǒng)或者iOS系統(tǒng)下厘唾,鏈接器有一個bug涩嚣,會導(dǎo)致只包含有類別的靜態(tài)庫無法使用-ObjC標(biāo)志來加載文件。變通方法是使用-all_load 或者-force_load標(biāo)志旧乞,它們的作用都是加載靜態(tài)庫中所有文件,不過all_load作用于所有的庫拭卿,而-force_load后面必須要指定具體的文件杖狼。
解釋:
這個flag是專門處理-ObjC的一個bug的。用了-ObjC以后颈畸,如果類庫中只有category分類但是沒有類的時候,這些category分類還是加載不進來。
變通方法就是加入-all_load或者-force-load没讲。

但根據(jù)CardPlugin的定義, 也不像是上面的那種情況


CardPlugin
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末眯娱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子食零,更是在濱河造成了極大的恐慌困乒,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贰谣,死亡現(xiàn)場離奇詭異娜搂,居然都是意外死亡迁霎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門百宇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來考廉,“玉大人,你說我怎么就攤上這事携御〔粒” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵啄刹,是天一觀的道長涮坐。 經(jīng)常有香客問我,道長誓军,這世上最難降的妖魔是什么袱讹? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮昵时,結(jié)果婚禮上捷雕,老公的妹妹穿的比我還像新娘。我一直安慰自己壹甥,他們只是感情好救巷,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著句柠,像睡著了一般浦译。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俄占,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天管怠,我揣著相機與錄音淆衷,去河邊找鬼缸榄。 笑死,一個胖子當(dāng)著我的面吹牛祝拯,可吹牛的內(nèi)容都是我干的甚带。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼佳头,長吁一口氣:“原來是場噩夢啊……” “哼鹰贵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起康嘉,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤碉输,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后亭珍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敷钾,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡枝哄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了阻荒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挠锥。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖侨赡,靈堂內(nèi)的尸體忽然破棺而出蓖租,到底是詐尸還是另有隱情,我是刑警寧澤羊壹,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布蓖宦,位于F島的核電站,受9級特大地震影響油猫,放射性物質(zhì)發(fā)生泄漏球昨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一眨攘、第九天 我趴在偏房一處隱蔽的房頂上張望主慰。 院中可真熱鬧,春花似錦鲫售、人聲如沸共螺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藐不。三九已至,卻和暖如春秦效,著一層夾襖步出監(jiān)牢的瞬間雏蛮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工阱州, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挑秉,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓苔货,卻偏偏與公主長得像犀概,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子夜惭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容