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构建系统问题的人,请按照以下步骤进行修复:
- 在Xcode中,转到文件 - >项目/工作区设置.
- 将构建系统更改为Legacy Build系统.
它将解决新Xcode的构建问题.
如果您想使用新的构建系统,那么您可以从这个Apple Xcode帮助页面找到故障排除帮助.
JAL*_*JAL 32
我和Cocoapods有这个问题.解决方案是清理构建文件夹,重新安装所有窗格,然后重建应用程序.这个问题以这种方式解决了.
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 的构建阶段安装时才检查副本
gyp*_*Dev 18
我通过在所有"复制文件"和"链接二进制文件库"构建阶段之前移动"复制软件包资源"构建阶段来解决我的问题
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 上仍然存在。
在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)
它没有任何担忧。
我遇到了同样的问题:下面是错误
循环目标'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
。
运行,编译成功。
原理很简单,只需更改编译顺序即可。
Xcode 10.2和Swift 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 次 |
最近记录: |