Po aktualizacji do Xcode 5.1 nie mogę już skompilować projektu dla symulatora 64-bitowego, otrzymując ten błąd:
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
Oto moje docelowe ustawienia kompilacji:
Próbowałem zmienić „Build Active Architecture” na No, a także dodać „i386” do „Valid Architectures”, niestety żaden z nich nie zadziałał. Dzięki za wszelkie sugestie!
Odpowiedzi:
Po aktualizacji do XCode 5.1 pojawił się ten sam komunikat o błędzie. Czy używasz CocoaPods? Jeśli tak, powinno to rozwiązać problem:
źródło
Co trzeba zrobić, to po prostu ustawić
ONLY_ACTIVE_ARCH
sięNO
(przynajmniej u mnie działa). Poniżej znajduje się zrzut ekranu:EDYTOWAĆ:
O ile wiem ( proszę zwrócić go, czy coś jest nie tak, dziękuję ), jeśli ustawisz
ONLY_ACTIVE_ARCH
sięYES
, oznacza to, że Xcode będzie budować tylko dla aktywnego architektury (co odnosi się do urządzenia, które jest aktywne w Xcode obecnie). Wygląda na to, że domyślne ustawienie Xcode to DebugujYES
, więc nie będzie budować plików binarnych dla innych architektur, gdy chcesz budować tylko dla specjalnego urządzenia podłączonego do komputera Mac.Przyczyną niepowodzenia kompilacji może być to, że projekt nie obsługuje architektury podłączonego urządzenia. Dlatego najlepszym rozwiązaniem jest dodanie odpowiedniej architektury dla Twojego urządzenia. Poniżej znajduje się lista architektur i urządzeń, które obsługują:
iPhone 6
,iPhone 5s
,iPad Air
,Retina iPad Mini
iPhone 5
,iPhone 5c
,iPad 4
iPhone 3GS
,iPhone 4
,iPhone 4S
,iPod 3G/4G/5G
,iPad
,iPad 2
,iPad 3
,iPad Mini
iPhone
,iPhone 3G
,iPod 1G/2G
Więc dlaczego „ustawić
ONLY_ACTIVE_ARCH
naNO
” pracach? Ponieważ urządzenie nadal może uruchomić plik binarny, który został zbudowany dla wszystkich dodanych architektur (zaliczenie kompilacji), ale straci część wydajności. To tylko szybkie rozwiązanie, ale nie najlepsze.Uwaga : im więcej dodałeś architektur, tym większy plik binarny zostanie wygenerowany. Dlatego dobrze jest wybrać odpowiednią architekturę do swojego projektu. ;)
źródło
Dodaj
arm64
do celuvalid architectures
. Wygląda na to, że dodajex86-64
architekturę do prawidłowych architektur symulatora.źródło
Jeśli używasz CocoaPods, najbardziej prawdopodobnym problemem jest to, że ustawienia kompilacji projektu Pods dla budowania tylko aktywnej architektury są ustawione na Tak dla debugowania.
Rozwiązanie jest proste. Zmień to na Nie .
Podobnie, zmień na Nie dla projektu aplikacji.
źródło
Miałem podobny problem. Rozwiązałem ten problem, zmieniając „Architektura” na „ $ (ARCHS_STANDARD_32_BIT) ” w ustawieniach kompilacji dla projektu.
Teraz musisz wybrać architekturę standardową (armv7, arm64) - $ (ARCHS_STANDARD), ponieważ firma Apple zaleca tworzenie aplikacji w architekturze 64-bitowej. Kliknij: dokument Apple
źródło
$(ARCHS_STANDARD_INCLUDING_64_BIT)
?$(ARCHS_STANDARD_32_BIT)
lub$(ARCHS_STANDARD_INCLUDING_64_BIT)
?Dodaj: Architektury: $ (ARCHS_STANDARD_INCLUDING_64_BIT)
Prawidłowe architektury: arm64 armv7 armv7s
źródło
Na wszelki wypadek, dla każdego, kto nadal napotyka problem pomimo wykonania powyższego, sprawdź, czy używany symulator jest również obsługiwany. Mój został określony jako arm7 i arm7s, ale próbowałem uruchomić aplikację na symulatorze 64-bitowym.
źródło
Aby uniknąć resetowania „instalacji poda” only_active_arch do debugowania przy każdym uruchomieniu, możesz dodać następujące elementy do pliku pod
źródło
Po prostu dodaj arm64 w prawidłowej architekturze. Mam nadzieję, że będzie działać dla Ciebie.
źródło
Mój problem polegał na tym, że projekt Pods był ukierunkowany na OS X, mimo że mój Podfile miał
platform :ios
. Używam cocoapods 0.35.0.rc2.Aby to naprawić, wybierz projekt Pods w nawigatorze projektu i sprawdź, czy węzeł PROJECT Pods (pamiętaj, a nie cel) jest przeznaczony dla systemu iOS. Oznacza to, że ustawienia budowania architektur powinny być następujące:
$(ARCHS_STANDARD)
iOS 8.1
iOS
$(ARCHS_STANDARD)
Chciałem też zbudować wszystkie architektury, więc dodałem do Podfile:
źródło
Musiałem dodać następujące elementy
i386
ix86_64
doValid Architectures
. Używam Xcode 7.2 i używam iOS 8+. I jużarmv7
,armv7s
iarm64
tam, i że pracował w Xcode 6.4.źródło
Napotkałem ten sam problem podczas uruchamiania mojej aplikacji na iPadzie przy użyciu Xcode 5.1. Zostało to rozwiązane poprzez usunięcie armv7s z „prawidłowych architektur” i ustawienie wartości „buduj tylko aktywne architektury” na Nie. Oba te pola można znaleźć w aplikacji-> cele-> ustawienia kompilacji-> architektury.
źródło
Dotarłem do tego pytania z powodu problemu z budową wiersza poleceń dla symulatora w Xcode 7.2. Na wypadek, gdyby ktoś inny dotarł tutaj z tym samym problemem, podzielę się rozwiązaniem, które znalazłem:
Najwyraźniej w Xcode 7.2 jest błąd, który powoduje
xcodebuild
niepowodzenie podczas próby kompilacji dla symulatora. Rozwiązaniem jest podanie opcji „-destination”, np .:Aktualizacja
Powyższe przykładowe polecenie utworzy plik binarny zawierający grafikę tylko dla iPhone'a 6. Jeśli plik binarny jest uruchamiany na innych symulatorach, grafika iPhone'a 6 jest skalowana do platformy. Lepiej obejście , które zawiera wszystkie grafiki na wszystkich platformach jest określenie parametru
PLATFORM_NAME=iphonesimulator
, na przykład:źródło
Spróbuj usunąć wszystkie poprzednie architektury (tj. Usuń ustawienie ARCHS_STANDARD) w tym samym czasie, gdy dodasz i386 do architektur. Powinno to zmienić aktywną architekturę na i386. Napotkałem podobny problem, gdy próbowałem domyślnie zbudować dla armv7, ale nadal próbowałem kompilować dla arm64. Zmieniłem ARCHS_STANDARD na ARCHS_STANDARD_32_BIT, co zmieniło wybraną aktywną architekturę.
źródło
W acrhiecture - czasami do obsługi wersji 6.0 i 7.0 wykluczamy arm64
W architekturach -> acrchitecture - wybierz standardową architekturę arm64 armv7 armv7s. Tuż poniżej w Valid acrchitecture make user arm64 armv7 armv7s jest dołączony. To zadziałało dla mnie.
źródło
Rozwiązałem ten problem używając odpowiedzi @ Kjuly i konkretnej linii:
„Przyczyną niepowodzenia budowy może być to, że projekt nie obsługuje architektury podłączonego urządzenia”.
Po załadowaniu Xcode automatycznie ustawia moją aplikację na iPada na iPada Air
Spowodowało to błąd analizy zależności.
Zmiana typu urządzenia natychmiast rozwiązała problem:
Nie wiem, dlaczego to działa, ale jest to bardzo szybka odpowiedź, która zaoszczędziła mi wiele majstrowania w tle i natychmiast uruchomiła aplikację do przetestowania. Nigdy bym nie pomyślał, że to może być rzecz i coś tak prostego może to naprawić, ale w tym przypadku tak się stało.
źródło
Stwierdziłem, że konieczne było ręczne wpisanie nazw architektury:
Nie wiem, dlaczego było to konieczne, czyli dlaczego te wartości nie zostały odziedziczone z samego Xcode. Ale jak tylko to zrobiłem, problem zniknął.
źródło
W prawidłowych architekturach: wybierz każdy wpis (wydanie, debugowanie) i skompiluj, a następnie naciśnij klawisz Backspace. Powinno działać
źródło