R.swift 运行失败 xcode Cycle inside xxx; building could produce unreliable results. 错误解决 xcode10

最近新建了个swift工程,在工程中配置一些常用的第三方库,其中包括比较出名的 R.swift 。今天是想记录一下在配置过程中遇到的一些有趣的事情。
当pod 加载完成,并且创建了Run script build 成功后得到了 R.generated.swift文件放入工程后,再次build ,发现xcode 编译失败了。
大概错误为

Cycle inside Demo_Video; building could produce unreliable results. 
This usually can be resolved by moving the target's Headers build 
phase before Compile Sources.

之前在项目配置过程中并没有出现过类似的问题,有点小郁闷。但这个错误在xcode10比较常见,而且普遍的解决方法是修改为旧的构建系统就没有问题了。经过仔细查看报错提示,终于找到直接原因了。

  • 原因:
    在build过程中加载 complies Source 因为 R.generated.swift 是通过RunScript 运行加载最新的状态。
    而通常我们在新项目中创建 Run Script会出现不小心放到最下面,导致 RunScript还没有执行, R.generated.swift文件没有完全确定,就通过complies Source 阶段加载,Xcode10 新版的构建系统就会报出错误警告。

  • 解决方法:

  1. 网上的一些方法是把 新版的构建系统 改为旧版的,个人感觉既然会出现新版的构建系统模式,应该有它的优势,所以不推荐修改。但也是解决途径之一。
  2. 根本问题:先运行完 run script 才进行 Compolies Source 就能解决问题了。 Xcode 也有提示建议这么做。
This usually can be resolved by moving the target's Headers build 
phase before Compile Sources.
R.swift 运行失败 xcode Cycle inside xxx; building could produce unreliable results. 错误解决 xcode10_第1张图片
错误的编译顺序
R.swift 运行失败 xcode Cycle inside xxx; building could produce unreliable results. 错误解决 xcode10_第2张图片
正确的编译顺序

以上就是这次分享的心得,欢迎大家进行讨论以及纠正,谢谢大家!

参考文章
https://www.jianshu.com/p/ed0626850b03 (xcode10 常见错误解决)
https://www.jianshu.com/p/78508ed5739a (R.swift 的使用安装)

你可能感兴趣的:(R.swift 运行失败 xcode Cycle inside xxx; building could produce unreliable results. 错误解决 xcode10)