Xcode10和iOS12适配

一、 libstdc++ 库
项目用到了c++,依赖了libstdc++.tbd和libstdc++.6.0.9.tbd,导致整个工程编译不通过,报出Undefined symbols,C++ 的 List 找不到了,原因是苹果在XCode10和iOS12中移除了libstdc++这个库,由libc++这个库取而代之,苹果的解释是lib转载自斗玩网stdc++已经标记为废弃有5年了,建议大家使用经过了llvm优化过并且全面支持C++11的libc++库。
网上看到其他兄dei用Xcode9里面的导入到Xcode10


拷贝过去后,你就可以在新XCode10下面看到libstdc++了,放心的添加到工程里

显然,这方法并不是我们老中医的套路
正确解决办法

如果你自己的业务模块使用了libstdc++,那么就把模块代码重新调整为依赖libc++,然后重新检查是否存在问题,重新编译

如果你引用的三方库使用了libstdc++,那么向三方库寻求支持,进行升级

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

问题与解决
重复文件报错
一上来就是build没2秒就报错了,看报错的说法是有重复的info.plist。
<article data-v-13f76525="" itemscope="itemscope" itemtype="http://schema.org/Article" class="article" data-v-3f216172="">

一上来就是build没2秒就报错了,看报错的说法是有重复的info.plist。

<figure>
xcode10_ios12_01

<figcaption></figcaption>

</figure>

我们组件化后把一些三方库和封装方法打成了一个私有库。进去看了一下,我们使用了阿里云统计 + 推送 + Alipay,里面确实有好几个info.plist,删除了就好了。

<figure>
xcode10_ios12_02

<figcaption></figcaption>

</figure>

补充

临时解决方案也可以参考 掘金@来来来小牛仔在评论中提到的:

参考Stack Overflow中Xcode 10 Error: Multiple commands produce,修改Xcode编译配置Xcode->File->Project Settings/Workspace Setting-> Build System -> Legacy Build System.

这里定义为临时解决方案的原因是:使用了Xcode10编译的新特性而抛出错误,既然是编译器的特性,那么最好还是接受它的报错去修复。作为短暂的过渡使用老的编译方式是可以的,长期我个人觉得是不合适的。

c++.6.0.9消失了?

报错:library not found for -lstdc++.6.0.9

<figure>
xcode10_ios12_03

<figcaption></figcaption>

</figure>

第一反应是去Build Phases里的Link Binary With Libraries进行添加,然后发现选择frameworks and libraries里已经没有了这个库了😂,又回去看了一下Xcode9里是有的。

<figure>
xcode10_ios12_04

<figcaption></figcaption>

</figure>

但是因为之前在Xcode9上是正常跑的项目,而且我们组件化后,依赖是在私有库的podspec里定义的,全局搜了下所有的podspec并没有依赖过这个lib。

想起来pod isntall后会有一个Pods-xxxx.xcconfig文件,果然找到了这个-l stdc++.6.0.9,但是这边是汇总了所有的依赖,无法找到源头。

<figure>
xcode10_ios12_05

<figcaption></figcaption>

</figure>

那如果直接在这里删掉这个依赖呢?是不是会爆出更清晰的错? 答案是就如下图,因为删掉了这个依赖,那依赖这个lib的源码就出现了一些调用方法的报错,如下图,很明显的发现了这个叫libQYSDK.a的库。恩,就是三方库七鱼客服了😂,赶紧联系了一波工具提供方。

<figure>
xcode10_ios12_06

<figcaption></figcaption>

</figure>

补充

临时方案可以参考:掘金@End在评论区提到

将Xcode9的libstdc++6.0.9.tbd拷贝到Xcode10中使用。

感谢 掘金@vvveiii提醒,之前在文档里没有查到相关信息,刚刚再去开发者论坛中看到Where is libstdc++.6.dylib in xcode10 beta以及 libstdc++ is not supported by the tvOS platform?中 staff的回应是请迁移到libc++库。

所以Xcode10libstdc++相关的3个库(libstdc++libstdc++.6libstdc++6.0.9)应该都是被彻底废弃了,如果你使用的三方库中有依赖,请尽快和提供方沟通,告知他们迁移吧。如果自己开发使用,也尽快考虑迁移的事宜吧。

Copy Pods Resources失效

经过上面一波操作后,终于编译通过了,也跑起来,就在以为一切都正常起来的时候,突然 崩!溃!了!

一看报错原因,是Profile.StoryBoard没有找到,我们做了组件化后很多资源文件是在各自的pod里的,理论上这个sb应该在执行Copy Pods Resources后被copy到在*.app的包里

<figure>
xcode10_ios12_07

<figcaption></figcaption>

</figure>

于是去查看了一下编译后生成的Product,所有组件库的资源文件 都!不!在!

怀疑是这个指令没有执行,然后clear重新编译,盯着编译过程。果然,只执行了Check Pods Manifest.lockEmbed Pods Frameworks

<figure>
xcode10_ios12_08

<figcaption></figcaption>

</figure>

看了下CocoaPods的issues里没有人提到这些,估计新版是好的,赶紧装了CocoaPods-1.5.3再把Pods文件夹删了重新install一下,就好了。

补充

确实是需要升级CocoaPods版本>=1.4.0以上,可见Github上的一个issues Xcode10 beta can't load bundles from CocoaPods


至此我们的工程已经能正常通过Xcode 10编译,并运行在iOS 12 beta的手机上了。

粗略对一些业务场景进行了使用,没有发现明显需要进行处理的问题😆

后续如果有发现有意义的问题会继续更新~

</article>

作者:寰宇
链接:https://juejin.im/post/5b1634f0f265da6e61788998
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267