iOS12和Xcode10踩坑
前言
昨晚熬夜看完了WWDC 2018
,睡前电脑挂着下载xcode10
。手机装好了iOS12
,体验了一番,感觉比iOS11快多了,看了一眼各家App和我司的App,松了一口气,初步看来今年应该不需要做太多的适配工作,然后就睡了。(然而,果然不能立flag!😂)
早上晚到了一些,xcode10解压了一下,开始初步评估一下适配。emmmm,工程跑不起来了…好了果然不能低估,开干。
问题与解决
重复文件报错
一上来就是build没2秒就报错了,看报错的说法是有重复的info.plist。
我们组件化后把一些三方库和封装方法打成了一个私有库。进去看了一下,我们使用了阿里云统计 + 推送 + Alipay
,里面确实有好几个info.plist
,删除了就好了
c++.6.0.9消失了?
报错:library not found for -lstdc++.6.0.9
第一反应是去Build Phases
里的Link Binary With Libraries
进行添加,然后发现选择frameworks and libraries
里已经没有了这个库了😂,又回去看了一下Xcode9里是有的。
但是因为之前在Xcode9上是正常跑的项目,而且我们组件化后,依赖是在私有库的podspec里定义的,全局搜了下所有的podspec并没有依赖过这个lib。
想起来pod isntall
后会有一个Pods-xxxx.xcconfig
文件,果然找到了这个-l stdc++.6.0.9
,但是这边是汇总了所有的依赖,无法找到源头。
那如果直接在这里删掉这个依赖呢?是不是会爆出更清晰的错?
答案是就如下图,因为删掉了这个依赖,那依赖这个lib的源码就出现了一些调用方法的报错,如下图,很明显的发现了这个叫libQYSDK.a
的库。恩,就是三方库七鱼客服
了😂,赶紧联系了一波工具提供方。
解决方案
将Xcode9的libstdc++6.0.9.tbd拷贝到28-xcode10中使用。
Copy Pods Resources失效
经过上面一波操作后,终于编译通过了,也跑起来,就在以为一切都正常起来的时候,突然 崩!溃!了!
一看报错原因,是Profile.StoryBoard
没有找到,我们做了组件化后很多资源文件是在各自的pod里的,理论上这个sb应该在执行Copy Pods Resources
后被copy到在*.app
的包里
于是去查看了一下编译后生成的Product,所有组件库的资源文件 都!不!在!
怀疑是这个指令没有执行,然后clear重新编译,盯着编译过程。果然,只执行了Check Pods Manifest.lock
和Embed Pods Frameworks
。
看了下CocoaPods
的issues里没有人提到这些,估计新版是好的,赶紧装了CocoaPods-1.5.3
再把Pods文件夹删了重新install一下,就好了。需要升级CocoaPods版本>=1.4.0
以上