Próbuję przejść do nowego systemu kompilacji podczas kompilacji z Xcode 10. Jednak powoduje to następujący błąd:
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'
Nawet po usunięciu pliku powodującego problem otrzymuję to samo dla innego xib / storyboardu. Jak mogę rozwiązać ten błąd bez powrotu do starszego systemu kompilacji?
xcode10
compile-time
build-system
Sahil Kapoor
źródło
źródło
Odpowiedzi:
Dla każdego, kto ma problem z systemem kompilacji Xcode 10, wykonaj następujące kroki, aby go naprawić:
To rozwiąże problem z kompilacją z nowym Xcode.
Jeśli chcesz pracować z nowym systemem kompilacji, możesz znaleźć pomoc dotyczącą rozwiązywania problemów na tej stronie pomocy Apple Xcode .
źródło
Miałem ten problem z Cocoapods. Rozwiązaniem było wyczyszczenie folderu kompilacji, ponowne zainstalowanie wszystkich podów, a następnie ponowne skompilowanie aplikacji. W ten sposób problem rozwiązał się sam.
źródło
Rozwiązałem problem, przenosząc fazę tworzenia „Kopiuj zasoby paczki” przed wszystkimi fazami tworzenia „Kopiuj pliki” i „Połącz plik binarny z bibliotekami”
źródło
Nowy system kompilacji Xcode 10 wykrywa cykle zależności w kompilacji i zapewnia diagnostykę, która pomaga w ich rozwiązywaniu. Naprawienie tych cykli zależności poprawia niezawodność kompilacji, dzięki czemu prawidłowe produkty są wytwarzane konsekwentnie (cykle są możliwą przyczyną konieczności usunięcia danych pochodnych). Poprawia również przyrostowe czasy kompilacji, ponieważ cykle w kompilacji powodują, że coś na wykresie kompilacji jest zawsze nieaktualne dla każdej kompilacji, co powoduje, że ponowne tworzenie kompilacji działa niepotrzebnie za każdym razem, gdy budujesz.
W Pomocy Xcode znajduje się dokumentacja dotycząca rozwiązywania niektórych typowych typów cykli zależności: https://help.apple.com/xcode/mac/current/#/dev621201fb0
To powiedziawszy, ta diagnostyka cyklu wygląda trochę dziwnie. Wygląda na to, że udało Ci się go rozwiązać, zmieniając fazy kompilacji, ale nie sądzę, aby diagnostyka naprawdę wyjaśniła problem. Jeśli nie masz nic przeciwko, raport o błędzie dotyczący ulepszenia tej diagnostyki dla tego konkretnego przypadku byłby bardzo mile widziany. Możesz go złożyć na https://bugreport.apple.com . Podaj wszystkie szczegóły dotyczące projektu, które Twoim zdaniem mogą być istotne; przykładowy projekt, który odtwarza problem, jest idealny, ale jeśli nie możesz tego załączyć, diagnostyka i pewne wyobrażenie o strukturze projektu są nadal pomocne.
źródło
Miałem ten problem z Cocoapods i znalazłem tymczasowe obejście:
sudo gem update cocoapods
rm -rf ~/Library/Developer/Xcode/DerivedData/*
pod install
Źródło tutaj i jestem na Xcode 10 beta 4.
EDYCJA : teraz w Xcode 10.0 i nadal aktualne.
źródło
Clean Build Folder
(i zamknięcie Xcode również może pomóc) przed wykonaniem kroków2.
i3.
.Miałem podobny problem z mieszaną interakcją między Swift, Objective-C i CoreData : w moim projekcie (napisanym w języku Swift) korzystałem również z automatycznie generowanych klas Swift firmy Core Data.
Ale w pewnym momencie potrzebowałem klasy Objective C z właściwościami publicznymi (zdefiniowanymi w jej odpowiedniku w nagłówku), odwołujących się do podstawowych jednostek danych.
Jak tylko zmieniłem model CoreData, XCode próbował odbudować klasy i zawiesiłem się ze wskazanym błędem kompilacji cyklu.
Po początkowej chwili rozpaczy, ponieważ nie miałem żadnych faz kompilacji nagłówka w moim projekcie, aby zmienić kolejność, stwierdziłem, że rozwiązanie jest dość proste:
W
myObjCClass.h
usunąłem udostępnioną instrukcję importu nagłówka Swift i zmieniłem ją za pomocą@class
dyrektywy:i przeniosłem
#import "ProjectName-Swift.h"
instrukcję domyObjCClass.m
pliku definicji klasy.I to nie budziło zmartwień.
źródło
W końcu udało mi się rozwiązać ten problem, przenosząc
Embed App Extensions
skryptBuild Phases
z głównego celu na ostatnią pozycję.źródło
W rzeczywistości wystarczy zwrócić uwagę na monit Xcode
This usually can be resolved by moving the target's Headers build phase before Compile Sources
, a następnie możesz to zrobić.Kiedy napotkałem ten problem, Xcode wyświetla monit:
:-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”
Zrobiłem tylko jedną rzecz i rozwiązałem problem doskonale:
Wybierz,
Target
a następnie wybierz,Build Phase
aby przesunąćRun Script
na przódCompile Sources
.Uruchom, skompilowano pomyślnie.
Zasada jest prosta, wystarczy zmienić kolejność kompilacji.
Xcode 10.2 i Swift 5
źródło
Miałem ten sam problem: poniżej był błąd
Rozwiązałem to, wykonując poniższe kroki:
1). Przejdź do docelowego RxCocoa w projekcie Pods-MyAppName
2) Przejdź do faz budowy
3) Przeciągnij fazę nagłówków i przenieś ją nad fazę budowy kompletnych źródeł.
To rozwiązało mój problem. Mam nadzieję, że to pomoże!
źródło
W docelowego
Scheme
, znaleźć wytwórnięBuild
, i upewnić się, żeFind Implicit Dependencies
nie jest zaznaczone. Te kroki mogą działać.źródło
Moje rozwiązanie polegało po prostu na wyczyszczeniu folderu kompilacji, a następnie ponownej kompilacji.
źródło
Mój problem był związany z cykliczną zależnością między moim szybkim nagłówkiem mostkującym a obiektywnymi plikami c.
W moich obiektywnych plikach nagłówkowych c miałem rozszerzenie
#import "...-swift.h"
plik, a następnie w kilku moich szybkich plikach włączałem te pliki do wspomnianego importu, powodując w ten sposób cykliczną zależność.To jest StackOverflow, który doprowadził mnie do znalezienia rozwiązania:
Cel C, problem szybkiej interoperacyjności z powodu zależności cyklicznej
Jak zapobiec odwołaniu cyklicznemu, gdy nagłówek mostkowania Swift importuje plik, który importuje sam plik Hopscotch-Swift.h
EDYTOWAĆ:
Skończyło się na konwersji powyższych plików do formatu szybkiego i to rozwiązało mój problem.
źródło
Wygląda na to, że musisz zmienić kolejność faz budowy w swoich celach w Podach. Dla mnie przeniesienie nagłówków nad resztę zadziałało. Możesz to zautomatyzować w swoim pliku Podfile:
źródło
Ten sam problem
Version 10.0 beta 3 (10L201y)
i chciałem mieć nowy system kompilacji .Problem został wyłączony
Enable Modules (C and Objective-C)
w
Build Settings -> Apple Clang - Language - Modules
Po włączeniu (ustawieniu na TAK) pozbyłem się błędu.
źródło
Spotkałem podobny problem, gdy próbowałem zarchiwizować mój projekt w Xcode 10. Oto szczegółowy tekst:
Poprawiony poprzez ustawienie
$(USER)
wmytarget -> Build Settings -> Deployment -> Install Owner
źródło
Core_Data
Miałem ten sam problem i błąd, ale mój wystąpił, gdy utworzyłem podklasę NSManagedObject dla mojej encji i napotkałem ten błąd. Więc jeśli uważasz, że twój błąd jest taki sam jak mój dotyczący danych podstawowych, prawdopodobnie może ci pomóc (i pomógł mi):
Myślę, że ponieważ w innych scenariuszach Xcode tworzy plik automatycznie, a kiedy tworzymy kolejny, powoduje konflikt.
źródło
Xcode 10.2.1 / Cel testu jednostkowego. Mój cel testu jednostkowego jest niezależny od celu hosta, aby skrócić czas tworzenia. Rozwiąż go usuń zaznaczenie
Find Implicit Dependencies
wScheme
-Build
opcje, jak ja określić wszystkie zależności wBuild Settings
-Compile Sources
.źródło
Możesz to naprawić tutaj:
Plik -> Ustawienia obszaru roboczego -> Buduj system: nowy system kompilacji
źródło
Próbowałem różnych rzeczy z tej strony, ale jedyną rzeczą, która mi pomogła, było to, że zrobiłem kopię celu i zaktualizowałem nazwę kopii (usunąłem przyrostek kopii), usunąłem starą, a następnie zainstalowałem pod.
źródło
Napotkałem ten problem po aktualizacji Xcode do wersji 11.4. Powrót do wersji 11.2.1 naprawił to.
źródło
Xcode: 11.3.1 Cel: cel XCUITest
Uruchom polecenie, aby wyczyścić folder kompilacji: rm -rf ~ / Library / Developer / Xcode / DerivedData / *
Zmień ustawienia obszaru roboczego: wybierz opcję Legacy Build System
źródło
Pomogły mi dwie opcje: Plik-> Ustawienia projektu / obszaru roboczego.
1, Zmień system kompilacji na „Legacy Build system” w menu Plik-> Ustawienia projektu
2, Edytuj schemat i wybierz opcję „Parallelize Build” w sekcji Build.
źródło
W okienku projektu na LHS dla produktów kompilacji nie wybieraj ich na liście członkostwa docelowego w panelu RHS.
źródło