Chu kỳ bên trong; việc xây dựng có thể tạo ra kết quả không đáng tin cậy: Lỗi Xcode 10


80

Tôi đang cố gắng chuyển sang hệ thống xây dựng mới khi biên dịch với Xcode 10. Tuy nhiên, nó xuất hiện lỗi sau:

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'

Đã thêm ảnh chụp màn hình

Ngay cả sau khi xóa tệp sự cố, tôi vẫn nhận được điều tương tự đối với một xib / bảng phân cảnh khác. Làm cách nào để giải quyết lỗi này mà không cần hoàn nguyên về hệ thống xây dựng cũ?


Tôi đã gặp lỗi tương tự và đã sửa nó bằng cách xóa 'dữ liệu có nguồn gốc' và làm sạch dự án. Điều này làm việc như một sự quyến rũ đối với tôi!
Jayprakash Dubey,

Câu trả lời:


62

Đối với bất kỳ ai gặp sự cố với hệ thống xây dựng Xcode 10, hãy làm theo các bước sau để khắc phục sự cố:

  1. Trong Xcode, đi tới Cài đặt tệp-> Dự án / Không gian làm việc.
  2. Thay đổi hệ thống xây dựng thành hệ thống Xây dựng kế thừa.

Nó sẽ giải quyết vấn đề xây dựng với Xcode mới.

Nếu bạn muốn làm việc với hệ thống xây dựng mới, thì bạn có thể tìm trợ giúp khắc phục sự cố từ trang trợ giúp apple Xcode này .


50
Toàn bộ điểm của câu hỏi là chuyển sang hệ thống xây dựng mới nhất.
Sahil Kapoor

4
Sau đó, bạn nên đề cập rằng bạn không muốn giải pháp với việc thay đổi hệ thống xây dựng. Ngoài ra, tôi đã đề cập rằng nếu bạn muốn làm việc với hệ thống xây dựng mới thì bạn có thể làm theo các bước được cung cấp tại trung tâm hỗ trợ Xcode. Ngoài ra, hãy cung cấp một lý do hợp lệ khi bạn phản đối. Cảm ơn! @SahilKapoor
Akshay Sunderwani

1
Cảm ơn người lạ tốt bụng. Mối quan tâm duy nhất của tôi là làm cho công trình của tôi hoạt động trở lại để đạt thời hạn, vì vậy câu trả lời của bạn là chính xác những gì tôi cần.
Dan Loughney

6
Đây không phải là một giải pháp thích hợp cho vấn đề. Hệ thống xây dựng không nên được thay đổi thành Legacy cho một cái gì đó đơn giản như thế này.
Varun Goyal

38

Tôi đang gặp sự cố này với Cocoapods. Giải pháp là dọn dẹp thư mục xây dựng, cài đặt lại tất cả các nhóm và sau đó xây dựng lại ứng dụng. Vấn đề tự giải quyết theo cách đó.


2
Cái này cũng có tác dụng với tôi. Tôi đã làm sạch và cài đặt pod.
Cloud9999Strife

Trong trường hợp của tôi, tôi vừa thực hiện cài đặt pod nên chỉ phải dọn dẹp thư mục xây dựng. Lỗi này chỉ xuất hiện sau khi tôi cho phép Xcode cập nhật cài đặt bản dựng.
Stonetip

đã gặp sự cố với Alamofire. Đã làm một 'xây dựng Thư mục sạch' mà không cần cài đặt lại bất kỳ vỏ cacao và làm việc tốt
kite_n_code

25

Tôi đã khắc phục sự cố của mình bằng cách chuyển Giai đoạn xây dựng 'Tài nguyên gói bản sao' trước tất cả các Giai đoạn xây dựng 'Sao chép tệp' & 'Liên kết nhị phân với thư viện' của tôi


+1 nhưng tôi đã sử dụng một biến thể nhỏ. Tôi không cần phải di chuyển bất cứ điều gì trước "Liên kết nhị phân với thư viện", điều này tôi sẽ không làm vì một dự án mặc định mới trong Xcode không như vậy. Tôi vừa chuyển "Copy Bundle Resources" trước "Copy Helper Tools" (sao chép một số công cụ dòng lệnh và một ứng dụng trợ giúp vào Nội dung / Trợ giúp của sản phẩm ứng dụng macOS). Nhưng vì thứ tự của hai thứ này sẽ tạo ra bất kỳ sự khác biệt nào - chúng chỉ đang sao chép các tệp - điều đó không có ý nghĩa. Vì vậy, tôi nộp một lỗi: 42927301. My sửa đổi giải pháp: Swap xung quanh khác nhau giai đoạn xây dựng Sao chép XXX cho đến khi nó hoạt động :(
Jerry Krinock

2
Đối với tôi cũng vậy, tôi đã chuyển Tài nguyên Gói Bản sao của mình lên trên giai đoạn Sao chép Tệp và trước khi nó hoạt động ngay bây giờ. Tôi sẽ đánh lừa lỗi của bạn @JerryKrinock
Peter N Lewis.

Đối với tôi, vấn đề là với sự phụ thuộc của Khung công tác nhúng, vì vậy tôi đã di chuyển Khung công tác nhúng lên trên Tài nguyên gói sao chép và nó đã giúp ích.
Elena

19

Hệ thống xây dựng mới của Xcode 10 phát hiện các chu kỳ phụ thuộc trong bản dựng của bạn và cung cấp chẩn đoán để giúp bạn giải quyết chúng. Việc khắc phục các chu kỳ phụ thuộc này sẽ cải thiện độ tin cậy của bản dựng của bạn, để các sản phẩm chính xác được sản xuất một cách nhất quán (các chu kỳ là nguyên nhân có thể khiến bạn cần xóa dữ liệu bắt nguồn của bạn). Nó cũng cải thiện thời gian xây dựng gia tăng của bạn, vì các chu kỳ trong quá trình xây dựng khiến một số thứ trong biểu đồ xây dựng của bạn luôn bị lỗi thời trên mỗi bản dựng, khiến bản dựng lại hoạt động không cần thiết mỗi khi bạn xây dựng.

Có tài liệu về cách giải quyết một số loại chu kỳ phụ thuộc phổ biến trong Trợ giúp Xcode: https://help.apple.com/xcode/mac/current/#/dev621201fb0

Điều đó nói rằng, chẩn đoán chu kỳ này trông hơi kỳ quặc. Có vẻ như bạn đã có thể giải quyết nó bằng cách sắp xếp lại các giai đoạn xây dựng của mình, nhưng tôi không nghĩ rằng chẩn đoán thực sự giải thích được vấn đề. Nếu bạn không phiền, một báo cáo lỗi về việc cải thiện chẩn đoán này cho trường hợp cụ thể này sẽ rất được đánh giá cao. Bạn có thể nộp hồ sơ tại https://bugreport.apple.com . Vui lòng bao gồm tất cả các chi tiết về dự án của bạn mà bạn nghĩ có thể có liên quan; một dự án mẫu tái tạo vấn đề là lý tưởng, nhưng nếu bạn không thể đính kèm điều đó, thì chẩn đoán và một số ý tưởng về cấu trúc dự án vẫn hữu ích.


18

Tôi đang gặp sự cố này với Cocoapods và tìm thấy một giải pháp tạm thời:

  1. Cài đặt phiên bản mới nhất của cocoapods (1.5.3): sudo gem update cocoapods
  2. Xóa dữ liệu xuất phát của bạn: rm -rf ~/Library/Developer/Xcode/DerivedData/*
  3. pod install

Nguồn ở đây và tôi đang sử dụng Xcode 10 beta 4.

CHỈNH SỬA : hiện đã có trên Xcode 10.0 và vẫn còn phù hợp.


nó lại xảy ra với tôi vào tuần trước trên Xcode 10.1 (10B61) và nó vẫn hoạt động. Đảm bảo thực hiện Clean Build Folder(và thoát Xcode cũng có thể hữu ích) trước khi thực hiện các bước 2.3..
gabuchan

Làm việc như người ở!
flagman

15

Tôi đã gặp vấn đề tương tự với sự tương tác hỗn hợp giữa Swift, Objective-C và CoreData : trong dự án của tôi (viết bằng Swift), tôi cũng sử dụng các lớp Swift được tạo tự động của Core Data.

Nhưng tại một thời điểm, tôi cần một lớp Objective C với các thuộc tính công khai (được định nghĩa trong phần đối ứng tiêu đề của nó) tham chiếu đến các thực thể dữ liệu cốt lõi.

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

@interface myObjCClass : NSObject

@property (nonatomic) MyCoreDataClass*myEntity;

@end

Ngay sau khi tôi thay đổi mô hình CoreData, XCode đã cố gắng xây dựng lại các lớp và tôi bị treo với lỗi xây dựng chu kỳ được chỉ định.

Sau giây phút tuyệt vọng ban đầu, vì tôi không có bất kỳ giai đoạn tiêu đề biên dịch nào trong dự án của mình để thay đổi thứ tự, tôi phát hiện ra rằng giải pháp khá đơn giản:

Trong phần, myObjCClass.htôi đã xóa câu lệnh nhập tiêu đề Swift được chia sẻ và thay đổi nó bằng một @classchỉ thị:

@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

và tôi đã chuyển #import "ProjectName-Swift.h"câu lệnh vào myObjCClass.mtệp định nghĩa lớp.

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

@implementation myObjCClass

@end

Và nó được xây dựng không phải lo lắng.


Wow, cảm ơn rất nhiều. Đã vật lộn cả đêm với điều này, nhưng khi tôi thực hiện triệt để gợi ý này, vấn đề đã được khắc phục!
Erik van der Neut

14

Cuối cùng tôi đã có thể giải quyết vấn đề này bằng cách di chuyển Embed App Extensionstập lệnh trong Build PhasesMục tiêu chính đến vị trí cuối cùng.


Gặp lỗi này trong Xcode 10.0 beta 4 (10L213o) - giải pháp này đã giải quyết được nó :-)
StackUnderflow

11

Trên thực tế, bạn chỉ cần chú ý đến lời nhắc của Xcode This usually can be resolved by moving the target's Headers build phase before Compile Sources, và sau đó bạn có thể làm được.

Khi tôi gặp sự cố này, Xcode sẽ nhắc tôi:

:-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”

Tôi chỉ làm một việc và giải quyết vấn đề một cách hoàn hảo:

Chọn Targetvà sau đó chọn Build Phaseđể di chuyển Run Scriptlên phía trước Compile Sources.

Chạy, biên dịch thành công.

Nguyên tắc rất đơn giản, chỉ cần thay đổi thứ tự biên dịch.

hình ảnh 1

Xcode 10.2 & Swift 5


2
điều này hoạt động nhưng chỉ một lần và sau đó trong lệnh xây dựng tiếp theo, sự cố sẽ quay trở lại.
Swati

6

Tôi đang gặp phải vấn đề tương tự: bên dưới là lỗi

Chu kỳ phụ thuộc giữa các mục tiêu 'Pods-MyAppName' và 'RxCocoa'; xây dựng có thể tạo ra kết quả không đáng tin cậy. Điều này thường có thể được giải quyết bằng cách di chuyển giai đoạn xây dựng Tiêu đề của mục tiêu trước khi Biên dịch Nguồn. Đường dẫn chu kỳ: Pods-MyAppName → RxCocoa → Pods-MyAppName

Tôi đã giải quyết nó bằng cách sử dụng các bước dưới đây:

1). Chuyển đến mục tiêu RxCocoa trong dự án Pods-MyAppName

2) Chuyển đến các giai đoạn xây dựng

3) Kéo Giai đoạn tiêu đề và di chuyển nó lên trên giai đoạn xây dựng Nguồn tuân thủ.

Điều này đã khắc phục sự cố của tôi. Hy vọng nó giúp!


6

Trong mục tiêu Scheme, hãy tìm nhãn Buildvà đảm bảo rằng nhãn đó Find Implicit Dependencieskhông được chọn. Các bước này có thể hoạt động.


Khi bạn nói "close", bạn có nghĩa là nó phải có màu và dấu kiểm? Hoặc nó phải trống, không có dấu kiểm?
Ben Leggiero 14/02/19

1
Xin chào, @BenLeggiero. "Đóng" có nghĩa là nó phải trống, không có dấu kiểm.
Nh Xu

3

Giải pháp của tôi chỉ đơn giản là Clean Build Folder sau đó xây dựng lại.


Thật ngạc nhiên khi không ai đánh giá về giải pháp này. Đơn giản nhưng đó phải là điều đầu tiên chúng ta nên thử trước khi đi sâu hơn vào vấn đề.
Hoon

3

Vấn đề của tôi liên quan đến sự phụ thuộc theo chu kỳ giữa tiêu đề bắc cầu nhanh chóng và các tệp c mục tiêu của tôi.

Trong các tệp tiêu đề c mục tiêu của mình, tôi có một #import "...-swift.h"tệp và sau đó trong một vài tệp nhanh của mình, tôi đã đưa các tệp đó vào với lần nhập nói trên và do đó gây ra sự phụ thuộc theo chu kỳ.

Đây là StackOverflow đã dẫn tôi tìm giải pháp:

Mục tiêu C, Vấn đề về khả năng tương tác của Swift do phụ thuộc vòng tròn

Cách ngăn tham chiếu vòng tròn khi tiêu đề bắc cầu Swift nhập tệp nhập chính Hopscotch-Swift.h

BIÊN TẬP:

Tôi buộc phải chuyển đổi các tệp trên thành nhanh chóng và điều này đã giải quyết được sự cố của tôi.


2

Có vẻ như bạn cần thay đổi thứ tự của các giai đoạn xây dựng trong mục tiêu Nhóm của mình. Đối với tôi, việc di chuyển Tiêu đề lên trên phần còn lại đã hiệu quả. Bạn có thể tự động hóa điều này trong Podfile của mình:

require 'xcodeproj'

post_install do |installer|
  installer.pods_project.targets.each do |target|
    headers_phase = target.build_phases.find { |p| p.kind_of?(Xcodeproj::Project::Object::PBXHeadersBuildPhase) }
    if headers_phase
      puts "#{target.name}: Moving Headers build phase to top"
      target.build_phases.insert(0, target.build_phases.delete_at(target.build_phases.index(headers_phase)))
    end
  end
end

1

Cùng một vấn đề trên Version 10.0 beta 3 (10L201y)và tôi muốn có Hệ thống xây dựng mới .

Sự cố đã bị vô hiệu hóa Enable Modules (C and Objective-C)

trong Build Settings -> Apple Clang - Language - Modules

Sau khi bật nó (đặt thành CÓ) đã loại bỏ Lỗi.


1

Tôi đã gặp sự cố tương tự khi cố gắng lưu trữ dự án của mình trên Xcode 10. Đây là văn bản chi tiết:

→ Target 'mytarget': CodeSign /path/to/mytarget.app

○ Target 'mytarget': SetGroup staff /path/to/mytarget.app

○ Target 'mytarget': SetMode u+w,go-w,a+rX /path/to/mytarget.app

○ Target 'mytarget': SetGroup staff /path/to/mytarget.app

Đã sửa nó bằng cách cài đặt $(USER)trongmytarget -> Build Settings -> Deployment -> Install Owner


1

Core_Data

Tôi đã gặp vấn đề và lỗi tương tự nhưng của tôi đã xảy ra khi tôi "Tạo lớp con NSManagedObject" cho thực thể của mình và tôi gặp phải lỗi này. Vì vậy, nếu bạn cho rằng lỗi của mình giống với lỗi của tôi về Dữ liệu cốt lõi, điều có thể giúp bạn (và đã giúp tôi) là:

  • nhấp vào Thực thể của bạn trong tệp "xcdatamodel"
  • chuyển đến thanh bên phải của bạn, nhấp vào Trình kiểm tra mô hình dữ liệu
  • thay đổi "Mô-đun" thành "Mô-đun sản phẩm hiện tại"
  • và cuối cùng, thay đổi "Codegen" thành "Thủ công / Không có"
  • dọn dẹp và xây dựng

Tôi nghĩ vì trong các tình huống khác, Xcode tạo một tệp tự động và khi chúng ta tạo một tệp khác, nó gây ra xung đột.


1

Xcode 10.2.1 / Mục tiêu kiểm tra đơn vị. Mục tiêu kiểm tra đơn vị của tôi độc lập với mục tiêu máy chủ để cải thiện thời gian xây dựng. Giải quyết nó bằng cách bỏ chọn Find Implicit Dependenciestrong Scheme- Buildtùy chọn, Vì tôi chỉ định tất cả các phụ thuộc trong Build Settings- Compile Sources.


0

Bạn có thể sửa lỗi này ở đây:

Tệp -> Cài đặt không gian làm việc -> Hệ thống xây dựng: Hệ thống xây dựng mới

Cài đặt không gian làm việc


0

Tôi đã thử những thứ từ trang này nhưng điều duy nhất đã giúp tôi là tôi đã tạo một bản sao của mục tiêu và cập nhật tên của bản sao (loại bỏ hậu tố bản sao), đồng thời xóa cái cũ và cài đặt pod sau đó.


0

Tôi gặp sự cố này sau khi cập nhật Xcode lên phiên bản 11.4. Hạ cấp xuống 11.2.1 đã sửa nó.


0

Xcode: 11.3.1 Mục tiêu: Mục tiêu XCUITest

  1. Chạy lệnh để dọn dẹp thư mục xây dựng: rm -rf ~ / Library / Developer / Xcode / DerivedData / *

  2. Thay đổi cài đặt không gian làm việc: Chọn Hệ thống tạo kế thừa

nhập mô tả hình ảnh ở đây


-1

Tôi đã giải quyết vấn đề này bằng cách chuyển "Run Script" lên đầu các giai đoạn xây dựng.


-1

Hai tùy chọn sau phù hợp với tôi: Cài đặt Tệp-> Dự án / Không gian làm việc.

1, Thay đổi hệ thống xây dựng thành "Hệ thống xây dựng kế thừa" trong Tệp-> Cài đặt dự án

2, Edit Scheme và chọn tùy chọn "Parallelize Build" trong phần Build.


Điều đó không liên quan. Hệ thống xây dựng hiện đại sẽ không gây ra điều này.
Raptor

-1

Trong ngăn dự án trên LHS, đối với các sản phẩm xây dựng của bạn, không chọn chúng trong danh sách thành viên Mục tiêu trong ngăn RHS.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.