2018-06-24 私有庫(kù)坑 :Include of non-modular header inside framework module

轉(zhuǎn)自:https://blog.csdn.net/blog_jihq/article/details/52614156

spec.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }.png

/Users/jifeng/Library/Developer/Xcode/DerivedData/App-dpxkmrruvfndhjfuqdoultvoaiad/Build/Products/Release-iphonesimulator/ServyouCocoaPodDynamicLayout/ServyouCocoaPodDynamicLayout.framework/Headers/SVDynamicLayoutManager.h:9:9: error: include of non-modular header inside framework module 'ServyouCocoaPodDynamicLayout.SVDynamicLayoutManager' [-Werror,-Wnon-modular-include-in-framework-module] \#import "SVObject.h" ^ 1 error generated. /var/folders/rg/f1ycrs553dq2z2dq7mt0mbh80000gn/T/CocoaPods/Lint/App/main.m:3:9: fatal error: could not build module 'ServyouCocoaPodDynamicLayout' @import ServyouCocoaPodDynamicLayout; ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
2 errors generated.
遇到這個(gè)問(wèn)題之后在網(wǎng)上搜索了下“include of non-modular header inside framework module”,網(wǎng)上大部分的解決方法是:將Build Settings中的Allow Non-modular Includes In Framework Modules設(shè)為YES嫂易,但一直沒(méi)有講出現(xiàn)問(wèn)題的原因。
后來(lái)看到了一個(gè)簡(jiǎn)書(shū)的文章,簡(jiǎn)單說(shuō)明了問(wèn)題原因,并且提供了另一個(gè)解決辦法:http://www.reibang.com/p/a1d2d148fdd3
簡(jiǎn)單來(lái)說(shuō)就是在podfile文件中寫(xiě)代碼,動(dòng)態(tài)地生成modulemap和umbrella文件。
最終感覺(jué)第二種解決方法有些取巧厅缺,怕以后出現(xiàn)問(wèn)題罢吃,還是決定采用第一種方法楚午。
首先通過(guò)lint命令的--no-clean參數(shù)查看編譯工程,手動(dòng)修改了第一個(gè)解決方法中提及的編譯開(kāi)關(guān)尿招,改為YES后確實(shí)沒(méi)有了問(wèn)題矾柜。
但是創(chuàng)建一個(gè)pod顯然不能手動(dòng)的修改該設(shè)置,于是在官方的podspec語(yǔ)法介紹網(wǎng)頁(yè)https://guides.cocoapods.org/syntax/podspec.html中查看就谜,最終在build settings找到了三個(gè)可能相關(guān)的參數(shù):compiler_flags怪蔑、pod_target_xcconfig、user_target_xcconfig丧荐。
首先嘗試配置compiler\flags缆瓣。因?yàn)榭吹焦俜降睦邮莝pec.compiler_flags = '-DOS_OBJECT_USE_OBJC=0', '-Wno-format'
而我的錯(cuò)誤信息中也有類(lèi)似的-Wnon-modular-include-in-framework-module,所以我配置了spec.compiler_flags = '-Wnon-modular-include-in-framework-module'虹统,但是沒(méi)有效果弓坞。
然后嘗試配置pod_target_xcconfig。官方的例子是:spec.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '-lObjC' }车荔。這應(yīng)該是對(duì)應(yīng)的Build Settings里面的Other Link Flags設(shè)置渡冻。雖然明知道很可能是錯(cuò)誤的,但我還是嘗試設(shè)置成spec.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '-Wnon-modular-include-in-framework-module' }夸赫。果然無(wú)效菩帝。配置中{}應(yīng)該是字典類(lèi)型的配置,=>之前的字符串是一個(gè)key值茬腿,現(xiàn)在需要先找到Allow Non-modular Includes In Framework Modules設(shè)置對(duì)應(yīng)的key值呼奢。在Xcode的Quick Help中看到注釋中Declaration CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES,嘗試了一下spec.pod_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }切平,發(fā)現(xiàn)沒(méi)有效果握础。后來(lái)想到Xcode是可以通過(guò)命令行進(jìn)行編譯的,編譯指令中可能會(huì)有對(duì)應(yīng)的key值悴品。然后雖然沒(méi)有直接找到對(duì)應(yīng)的key值禀综,但是看到了xcodebuild有-showBuildSettings參數(shù)可以查看編譯設(shè)置。所以就先手動(dòng)將編譯工程中的Allow Non-modular Includes In Framework Modules設(shè)成YES苔严。然后通過(guò)xcodebuild -workspace App.workspace -scheme App -showBuildSettings查看了當(dāng)前工程所有的設(shè)置定枷,果然發(fā)現(xiàn)了這樣一個(gè)常量CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES的值為YES。Quick Help中的聲明是對(duì)的key值届氢,但pod_target_xcconfig的配置不起作用欠窒。
最后嘗試配置user_target_xcconfig,按照官方的例子退子,

配置為:spec.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }岖妄。成功型将,lint命令只剩下warning。

不過(guò)看官方的解釋荐虐,user_target_xcconfig和pod_target_xcconfig的區(qū)別在于user_target_xcconfig是對(duì)于編譯工程中所有pod的設(shè)置七兜,而pod_target_xcconfig只是針對(duì)當(dāng)前pod的。所以如果多個(gè)pod的podspec中對(duì)user_target_xcconfig同一個(gè)值進(jìn)行了設(shè)置福扬,那么就可能存在沖突問(wèn)題腕铸。但因?yàn)镃LANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES在pod_target_xcconfig不起作用,只能按現(xiàn)在的配置來(lái)處理忧换。
8. 將私有倉(cāng)庫(kù)拉到本地時(shí)可能會(huì)存在兩個(gè)恬惯。
因?yàn)間it存在兩個(gè)地址,分別是git和http/https亚茬,所以有時(shí)候可能會(huì)在本地repos下出現(xiàn)兩個(gè)基于同一個(gè)git的倉(cāng)庫(kù),倉(cāng)庫(kù)名字不同浓恳。因?yàn)橐婚_(kāi)始Lint的時(shí)候是指定了倉(cāng)庫(kù)名的刹缝,所以能通過(guò),但pod repo push的時(shí)候雖然指定了push的倉(cāng)庫(kù)名颈将,但因?yàn)闆](méi)有指定校驗(yàn)的倉(cāng)庫(kù)名梢夯,一旦你的pod依賴了私有倉(cāng)庫(kù)中的某個(gè)pod,校驗(yàn)時(shí)會(huì)出現(xiàn)類(lèi)似[!] Found multiple specifications forSVLibrary (2.2.0)`:的錯(cuò)誤晴圾。此時(shí)需要?jiǎng)h除掉一個(gè)私有倉(cāng)庫(kù)颂砸,然后重新push才行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末死姚,一起剝皮案震驚了整個(gè)濱河市人乓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌都毒,老刑警劉巖色罚,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異账劲,居然都是意外死亡戳护,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)瀑焦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)腌且,“玉大人,你說(shuō)我怎么就攤上這事榛瓮∑潭” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵榆芦,是天一觀的道長(zhǎng)柄粹。 經(jīng)常有香客問(wèn)我喘鸟,道長(zhǎng),這世上最難降的妖魔是什么驻右? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任什黑,我火速辦了婚禮,結(jié)果婚禮上堪夭,老公的妹妹穿的比我還像新娘愕把。我一直安慰自己,他們只是感情好森爽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布恨豁。 她就那樣靜靜地躺著,像睡著了一般爬迟。 火紅的嫁衣襯著肌膚如雪橘蜜。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天付呕,我揣著相機(jī)與錄音计福,去河邊找鬼。 笑死徽职,一個(gè)胖子當(dāng)著我的面吹牛象颖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播姆钉,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼说订,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了潮瓶?” 一聲冷哼從身側(cè)響起陶冷,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎筋讨,沒(méi)想到半個(gè)月后埃叭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悉罕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年赤屋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壁袄。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡类早,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嗜逻,到底是詐尸還是另有隱情涩僻,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站逆日,受9級(jí)特大地震影響嵌巷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜室抽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一搪哪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坪圾,春花似錦晓折、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至病梢,卻和暖如春胃珍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜓陌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工堂鲜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人护奈。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像哥纫,于是被迫代替她去往敵國(guó)和親霉旗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355