Xcode10和iOS12踩坑

91 篇文章 3 订阅
42 篇文章 0 订阅

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

前言

熬夜看完了WWDC 2018,睡前电脑挂着下载Xcode10。手机装好了iOS12,体验了一番,感觉比iOS11快多了,看了一眼各家App和我司的App,松了一口气,初步看来今年应该不需要做太多的适配工作,然后就睡了。(然而, 果然不能立flag!?)

早上晚到了一些,Xcode10解压了一下,开始初步评估一下适配。emmmm,工程跑不起来了...好了果然不能低估,开干。

问题与解决

重复文件报错

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

xcode10_ios12_01

 

 

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

 

xcode10_ios12_02

 

 

补充

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

参考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

 

xcode10_ios12_03

 

 

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

 

xcode10_ios12_04

 

 

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

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

 

xcode10_ios12_05

 

 

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

 

xcode10_ios12_06

 

 

补充

临时方案可以参考:掘金@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的包里

 

xcode10_ios12_07

 

 

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

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

 

xcode10_ios12_08

 

 

看了下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的手机上了。

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

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


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值