在里面循环; 构建可能会产生不可靠的结果:Xcode 10错误

Sah*_*oor 59 build-system compile-time xcode10

我正在尝试使用Xcode 10进行编译时转移到新的构建系统.但是,它会出现以下错误:

Cycle details:
? Target 'project' : LinkStoryboards

Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'

Target 'project' : ValidateEmbeddedBinary /Users/project/Xcode/DerivedData/project-hgqvaddkhmzxfkaycbicisabeakv/Build/Products/Debug-iphoneos/project.app/PlugIns/stickers.appex

Target 'project' has process command with input '/Users/project/Resources/Info.plist'

Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'
Run Code Online (Sandbox Code Playgroud)

即使在删除问题文件后,我也可以使用另一个xib/storyboard.如何在不恢复遗留构建系统的情况下解决此错误?

Aks*_*ani 51

对于任何有Xcode 10构建系统问题的人,请按照以下步骤进行修复:

  1. 在Xcode中,转到文件 - >项目/工作区设置.
  2. 将构建系统更改为Legacy Build系统.

它将解决新Xcode的构建问题.

如果您想使用新的构建系统,那么您可以从这个Apple Xcode帮助页面找到故障排除帮助.

  • 问题的关键在于转向最新的构建系统. (31认同)
  • 这不是解决该问题的适当方法。对于这种简单的事情,不应将构建系统更改为“旧版”。 (4认同)
  • 那么你应该提一下,你不想要改变构建系统的解决方案.另外,我已经提到如果你想使用新的构建系统,那么你可以按照Xcode支持中心给出的步骤.此外,在您投票时提供正确的理由.谢谢!@SahilKapoor (3认同)
  • 谢谢你好心的陌生人。我唯一的兴趣是让我的构建再次运行以在截止日期前完成,因此您的答案正是我所需要的。 (2认同)

JAL*_*JAL 32

我和Cocoapods有这个问题.解决方案是清理构建文件夹,重新安装所有窗格,然后重建应用程序.这个问题以这种方式解决了.

  • 这也为我工作。我做了一个干净的Pod安装。 (2认同)

Shi*_*m 0 32

Xcode 15上同样的问题

解决方案1

如果构建阶段中有运行脚本,则将其放下(拖到底部)

运行脚本在哪里?检查此处以供参考

解决方案2

Xcode 15 不支持 iOS 11.0 及以下版本。此平台支持的部署目标版本限制为 12.0。

在 podfile 末尾添加以下块

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'No'
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
      __apply_Xcode_12_5_M1_post_install_workaround(installer)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

解决方案3(对我有用)

仅当在 Embed Foundation Extensions 的构建阶段安装时才检查副本

在此输入图像描述

也看看这里

  • 你的第三个解决方案对我有用。我试图将共享扩展与 flutter 应用程序一起使用 (7认同)
  • 非常感谢,我(必须)使用 OneSignal 并遇到了同样的问题。解决方案 3 对我也有效。 (2认同)
  • 第一个解决方案适用于 Xcode 15.0 (15A240d) (2认同)

gyp*_*Dev 18

我通过在所有"复制文件"和"链接二进制文件库"构建阶段之前移动"复制软件包资源"构建阶段来解决我的问题

  • 对我来说也是如此,我将我的 Copy Bundle Resources 移到了 Copy Files 阶段之上,现在它可以正常工作了。我会欺骗你的错误@JerryKrinock (2认同)

Ric*_*ard 17

Xcode 10的新构建系统可检测构建中的依赖关系周期,并提供诊断信息以帮助您解决这些问题.修复这些依赖性循环可提高构建的可靠性,从而始终如一地生成正确的产品(周期是需要删除派生数据的可能原因).它还可以改善您的增量构建时间,因为构建中的周期会导致构建图中的某些内容始终在每个构建上过时,从而使构建在每次构建时不必要地重新执行.

在Xcode帮助中有关于解决一些常见类型的依赖循环的文档:https://help.apple.com/xcode/mac/current/#/dev621201fb0

也就是说,这种循环诊断看起来有点奇怪.听起来你可以通过重新安排你的构建阶段来解决它,但我不认为诊断真的解释了这个问题.如果你不介意的话,非常感谢关于改进这种特殊情况的诊断的错误报告.您可以在https://bugreport.apple.com上提交一份.请包括您认为可能相关的项目的所有详细信息; 一个重现问题的示例项目是理想的,但是如果你不能附加它,那么项目结构的诊断和一些想法仍然是有用的.


sta*_*ich 16

对于Xcode15那些使用Firebase Crashlytics. 修复方法是将 Crashlytics 运行脚本阶段(或者可能是您的其他脚本阶段)移至选项卡底部Build Phases

编辑:问题在 Xcode15 RC 上仍然存在。


gab*_*han 14

我在Cocoapods遇到了这个问题并找到了一个临时的解决方法:

  1. 安装最新版本的cocoapods(1.5.3): sudo gem update cocoapods
  2. 删除派生数据: rm -rf ~/Library/Developer/Xcode/DerivedData/*
  3. pod install

来源于,我在Xcode 10 beta 4上.

编辑:现在在Xcode 10.0上仍然相关.


Sah*_*oor 11

我终于能够通过将主要目标中的Embed App Extensions脚本移动Build Phases到最后位置来解决这个问题.


one*_*mal 10

我的解决方案只是清理构建文件夹然后重新构建。

  • 这不是一个解决方案,因为它不断发生。 (6认同)

小智 7

对我有用的解决方案 --> 转到构建阶段并将嵌入基础扩展移动到复制捆绑资源的正下方。

在此输入图像描述


小智 6

在目标的中Scheme,找到标签Build,并确保Find Implicit Dependencies未选中该标签。这些步骤可能会起作用。


Loo*_*aji 6

Swift,Objective-C和CoreData之间的混合交互中,我遇到了类似的问题:在我的项目(用Swift编写)中,我也使用了Core Data的自动生成的Swift类。

但是有一点我需要一个具有公共属性(在其标头对应部分中定义)的Objective C类,该类引用核心数据实体。

#import "ProjectName-Swift.h" // this is to import the swift entities into ObjC

@interface myObjCClass : NSObject

@property (nonatomic) MyCoreDataClass*myEntity;

@end
Run Code Online (Sandbox Code Playgroud)

更改CoreData模型后,XCode尝试重新构建类,并且陷入指示的周期构建错误。

经过一阵绝望之后,由于我的项目中没有任何编译头阶段可以更改顺序,因此我发现解决方案非常简单:

在中,myObjCClass.h我删除了共享的Swift标头import语句,并使用@class指令对其进行了更改:

@class MyCoreDataClass; // tell the compiler I will import the class definition somewhere else

// the rest stays the same
@interface myObjCClass : NSObject

@property (nonatomic) MyCoreDataClass*myEntity;

@end
Run Code Online (Sandbox Code Playgroud)

然后将#import "ProjectName-Swift.h"语句移到myObjCClass.m类定义文件中。

#import "myObjCClass.h"
#import "ProjectName-Swift.h"

@implementation myObjCClass

@end
Run Code Online (Sandbox Code Playgroud)

它没有任何担忧。


NoP*_*rob 5

我遇到了同样的问题:下面是错误

循环目标'Pods-MyAppName'和'RxCocoa'之间的依赖关系; 建筑可能会产生不可靠的结果.这通常可以通过在编译源之前移动目标的Headers构建阶段来解决.循环路径:Pods-MyAppName→RxCocoa→Pods-MyAppName

我使用以下步骤解决了它:

1).转到Pods-MyAppName项目中的目标RxCocoa

2)去构建阶段

3)拖动标题阶段并将其移动到Complile Sources构建阶段之上.

这解决了我的问题.希望能帮助到你!


小智 5

实际上,您只需要注意Xcode的提示This usually can be resolved by moving the target's Headers build phase before Compile Sources,就可以做到。

当我遇到此问题时,Xcode会提示我:

:-1: Cycle inside XXXX; building could produce unreliable results. This usually can be resolved by moving the target's Headers build phase before Compile Sources.
Cycle details:
? Target 'XXXX': LinkStoryboards
? Target 'XXXX: Ditto Path/XXXX-Swift.h /Path/XXXX-Swift.h
? Target 'XXXX has compile command for Swift source files
? That command depends on command in Target 'XXXX: script phase “Run Script”
Run Code Online (Sandbox Code Playgroud)

我只做了一件事就完美地解决了这个问题:

选择Target,然后选择Build Phase将移到Run Script的前面Compile Sources

运行,编译成功。

原理很简单,只需更改编译顺序即可。

图片1

Xcode 10.2和Swift 5

  • 这有效,但只能一次,然后在下一个构建命令中,问题又回来了。 (2认同)

kar*_*arp 5

我对 Cocoapods 也有同样的问题。

首先,删除 pod:

rm -rf ios/Pods
Run Code Online (Sandbox Code Playgroud)

然后再次安装 pod:

cd ios && pod install && cd ..
Run Code Online (Sandbox Code Playgroud)

然后运行您的应用程序,它现在应该可以运行了。


归档时间:

查看次数:

29633 次

最近记录:

5 年,12 月 前