Xcode10和iOS12適配

一耙厚、 libstdc++ 庫(kù)
項(xiàng)目用到了c++逗载,依賴了libstdc++.tbd和libstdc++.6.0.9.tbd,導(dǎo)致整個(gè)工程編譯不通過(guò)朴乖,報(bào)出Undefined symbols犀盟,C++ 的 List 找不到了,原因是蘋(píng)果在XCode10和iOS12中移除了libstdc++這個(gè)庫(kù)俊性,由libc++這個(gè)庫(kù)取而代之,蘋(píng)果的解釋是lib轉(zhuǎn)載自斗玩網(wǎng)stdc++已經(jīng)標(biāo)記為廢棄有5年了透敌,建議大家使用經(jīng)過(guò)了llvm優(yōu)化過(guò)并且全面支持C++11的libc++庫(kù)盯滚。
網(wǎng)上看到其他兄dei用Xcode9里面的導(dǎo)入到Xcode10


拷貝過(guò)去后,你就可以在新XCode10下面看到libstdc++了酗电,放心的添加到工程里

顯然魄藕,這方法并不是我們老中醫(yī)的套路
正確解決辦法

如果你自己的業(yè)務(wù)模塊使用了libstdc++,那么就把模塊代碼重新調(diào)整為依賴libc++撵术,然后重新檢查是否存在問(wèn)題背率,重新編譯

如果你引用的三方庫(kù)使用了libstdc++,那么向三方庫(kù)尋求支持嫩与,進(jìn)行升級(jí)

https://juejin.im/post/5b1634f0f265da6e61788998

問(wèn)題與解決
重復(fù)文件報(bào)錯(cuò)
一上來(lái)就是build沒(méi)2秒就報(bào)錯(cuò)了寝姿,看報(bào)錯(cuò)的說(shuō)法是有重復(fù)的info.plist。
<article data-v-13f76525="" itemscope="itemscope" itemtype="http://schema.org/Article" class="article" data-v-3f216172="">

一上來(lái)就是build沒(méi)2秒就報(bào)錯(cuò)了划滋,看報(bào)錯(cuò)的說(shuō)法是有重復(fù)的info.plist饵筑。

<figure>
xcode10_ios12_01

<figcaption></figcaption>

</figure>

我們組件化后把一些三方庫(kù)和封裝方法打成了一個(gè)私有庫(kù)。進(jìn)去看了一下处坪,我們使用了阿里云統(tǒng)計(jì) + 推送 + Alipay根资,里面確實(shí)有好幾個(gè)info.plist,刪除了就好了同窘。

<figure>
xcode10_ios12_02

<figcaption></figcaption>

</figure>

補(bǔ)充

臨時(shí)解決方案也可以參考 掘金@來(lái)來(lái)來(lái)小牛仔在評(píng)論中提到的:

參考Stack Overflow中Xcode 10 Error: Multiple commands produce玄帕,修改Xcode編譯配置Xcode->File->Project Settings/Workspace Setting-> Build System -> Legacy Build System.

這里定義為臨時(shí)解決方案的原因是:使用了Xcode10編譯的新特性而拋出錯(cuò)誤,既然是編譯器的特性想邦,那么最好還是接受它的報(bào)錯(cuò)去修復(fù)裤纹。作為短暫的過(guò)渡使用老的編譯方式是可以的,長(zhǎng)期我個(gè)人覺(jué)得是不合適的丧没。

c++.6.0.9消失了鹰椒?

報(bào)錯(cuò):library not found for -lstdc++.6.0.9

<figure>
xcode10_ios12_03

<figcaption></figcaption>

</figure>

第一反應(yīng)是去Build Phases里的Link Binary With Libraries進(jìn)行添加,然后發(fā)現(xiàn)選擇frameworks and libraries里已經(jīng)沒(méi)有了這個(gè)庫(kù)了??骂铁,又回去看了一下Xcode9里是有的吹零。

<figure>
xcode10_ios12_04

<figcaption></figcaption>

</figure>

但是因?yàn)橹霸赬code9上是正常跑的項(xiàng)目,而且我們組件化后拉庵,依賴是在私有庫(kù)的podspec里定義的灿椅,全局搜了下所有的podspec并沒(méi)有依賴過(guò)這個(gè)lib。

想起來(lái)pod isntall后會(huì)有一個(gè)Pods-xxxx.xcconfig文件,果然找到了這個(gè)-l stdc++.6.0.9茫蛹,但是這邊是匯總了所有的依賴操刀,無(wú)法找到源頭。

<figure>
xcode10_ios12_05

<figcaption></figcaption>

</figure>

那如果直接在這里刪掉這個(gè)依賴呢婴洼?是不是會(huì)爆出更清晰的錯(cuò)骨坑? 答案是就如下圖,因?yàn)閯h掉了這個(gè)依賴柬采,那依賴這個(gè)lib的源碼就出現(xiàn)了一些調(diào)用方法的報(bào)錯(cuò)欢唾,如下圖,很明顯的發(fā)現(xiàn)了這個(gè)叫libQYSDK.a的庫(kù)粉捻。恩礁遣,就是三方庫(kù)七魚(yú)客服了??,趕緊聯(lián)系了一波工具提供方肩刃。

<figure>
xcode10_ios12_06

<figcaption></figcaption>

</figure>

補(bǔ)充

臨時(shí)方案可以參考:掘金@End在評(píng)論區(qū)提到

將Xcode9的libstdc++6.0.9.tbd拷貝到Xcode10中使用祟霍。

感謝 掘金@vvveiii提醒,之前在文檔里沒(méi)有查到相關(guān)信息盈包,剛剛再去開(kāi)發(fā)者論壇中看到Where is libstdc++.6.dylib in xcode10 beta以及 libstdc++ is not supported by the tvOS platform?中 staff的回應(yīng)是請(qǐng)遷移到libc++庫(kù)沸呐。

所以Xcode10libstdc++相關(guān)的3個(gè)庫(kù)(libstdc++libstdc++.6呢燥、libstdc++6.0.9)應(yīng)該都是被徹底廢棄了崭添,如果你使用的三方庫(kù)中有依賴,請(qǐng)盡快和提供方溝通疮茄,告知他們遷移吧滥朱。如果自己開(kāi)發(fā)使用根暑,也盡快考慮遷移的事宜吧力试。

Copy Pods Resources失效

經(jīng)過(guò)上面一波操作后,終于編譯通過(guò)了排嫌,也跑起來(lái)畸裳,就在以為一切都正常起來(lái)的時(shí)候,突然 崩淳地!潰怖糊!了!

一看報(bào)錯(cuò)原因颇象,是Profile.StoryBoard沒(méi)有找到伍伤,我們做了組件化后很多資源文件是在各自的pod里的,理論上這個(gè)sb應(yīng)該在執(zhí)行Copy Pods Resources后被copy到在*.app的包里

<figure>
xcode10_ios12_07

<figcaption></figcaption>

</figure>

于是去查看了一下編譯后生成的Product遣钳,所有組件庫(kù)的資源文件 都扰魂!不!在!

懷疑是這個(gè)指令沒(méi)有執(zhí)行劝评,然后clear重新編譯姐直,盯著編譯過(guò)程。果然蒋畜,只執(zhí)行了Check Pods Manifest.lockEmbed Pods Frameworks声畏。

<figure>
xcode10_ios12_08

<figcaption></figcaption>

</figure>

看了下CocoaPods的issues里沒(méi)有人提到這些,估計(jì)新版是好的姻成,趕緊裝了CocoaPods-1.5.3再把Pods文件夾刪了重新install一下插龄,就好了。

補(bǔ)充

確實(shí)是需要升級(jí)CocoaPods版本>=1.4.0以上科展,可見(jiàn)Github上的一個(gè)issues Xcode10 beta can't load bundles from CocoaPods


至此我們的工程已經(jīng)能正常通過(guò)Xcode 10編譯辫狼,并運(yùn)行在iOS 12 beta的手機(jī)上了。

粗略對(duì)一些業(yè)務(wù)場(chǎng)景進(jìn)行了使用辛润,沒(méi)有發(fā)現(xiàn)明顯需要進(jìn)行處理的問(wèn)題??

后續(xù)如果有發(fā)現(xiàn)有意義的問(wèn)題會(huì)繼續(xù)更新~

</article>

作者:寰宇
鏈接:https://juejin.im/post/5b1634f0f265da6e61788998
來(lái)源:掘金
著作權(quán)歸作者所有膨处。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處砂竖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末真椿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乎澄,更是在濱河造成了極大的恐慌突硝,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件置济,死亡現(xiàn)場(chǎng)離奇詭異解恰,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)浙于,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門护盈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人羞酗,你說(shuō)我怎么就攤上這事腐宋。” “怎么了檀轨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵胸竞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我参萄,道長(zhǎng)卫枝,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任讹挎,我火速辦了婚禮校赤,結(jié)果婚禮上腺占,老公的妹妹穿的比我還像新娘。我一直安慰自己痒谴,他們只是感情好衰伯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著积蔚,像睡著了一般意鲸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尽爆,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天怎顾,我揣著相機(jī)與錄音,去河邊找鬼漱贱。 笑死槐雾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的幅狮。 我是一名探鬼主播募强,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼崇摄!你這毒婦竟也來(lái)了擎值?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤逐抑,失蹤者是張志新(化名)和其女友劉穎鸠儿,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體厕氨,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡进每,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了命斧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片田晚。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖冯丙,靈堂內(nèi)的尸體忽然破棺而出肉瓦,到底是詐尸還是另有隱情遭京,我是刑警寧澤胃惜,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站哪雕,受9級(jí)特大地震影響船殉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜斯嚎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一利虫、第九天 我趴在偏房一處隱蔽的房頂上張望挨厚。 院中可真熱鬧,春花似錦糠惫、人聲如沸疫剃。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)巢价。三九已至,卻和暖如春固阁,著一層夾襖步出監(jiān)牢的瞬間壤躲,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工备燃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碉克,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓并齐,卻偏偏與公主長(zhǎng)得像漏麦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子况褪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344