Xcode 4: Niepowodzenie kompilacji, żadnych problemów

90

Aplikacja działa dobrze w symulatorze, buduje i działa.

Kiedy podłączam swoje urządzenie (iPhone 3GS z systemem iOS 4.3) i kieruję reklamy na iPhone'a, otrzymuję komunikat „Niepowodzenie kompilacji” i „Brak problemów”.

Patrząc na okno wyników kompilacji, wszystko jest zielone i ma znacznik wyboru, łącznie z informacją o niepowodzeniu kompilacji .

Rozwinięcie transkrypcji nie pokazuje błędów.

Nie mogę wykluczyć możliwości wystąpienia błędu podpisywania lub obsługi administracyjnej, ale dało mi to te błędy, naprawiłem je i teraz nie daje mi żadnych błędów ani problemów, po prostu „Kompilacja nie powiodła się; Żadnych problemów”

  • W jaki sposób kompilacja może zawieść bez żadnych problemów?
  • Czy istnieje sposób, w jaki mogę obejrzeć wynik kompilacji, aby sprawdzić, czy mogę znaleźć przyczynę niepowodzenia bez żadnych problemów?
  • Czy istnieje wynik kompilacji poza listą problemów?
  • Nie widzę w oknie kompilacji, w którym próbuje załadować aplikację na moje urządzenie - czy to wyjście jest gdzie indziej?
Adam Davis
źródło
To się teraz dzieje ze mną! Bardzo frustrujące!
tallen11
1
Myślę, że stackoverflow.com/a/28064945/1709587 zwykle pokaże jakiś komunikat o błędzie; jest znacznie bardziej użyteczny niż zróżnicowane domysły zawarte w innych odpowiedziach i powinien być punktem wyjścia dla każdego, kto próbuje debugować tę sytuację. Czy zgodziłbyś się na przeniesienie go na górę strony?
Mark Amery,

Odpowiedzi:

76

Otrzymuję komunikat „Niepowodzenie kompilacji” bez błędów w nawigatorze problemów (tylko ostrzeżenia). Nawigator raportów wyświetlał jednak błędy poprawnie.

Bystry
źródło
4
Świetnie, to pokazało moje błędy. Teraz mogę przestać marnować czas i faktycznie rozwiązać błąd :)
Daniel Ryan
Uratowałem mój dzień !! Dziękuję
DZenBot
Musiałem wyczyścić DerivedData + wyłączyć BitCode (na wszelki wypadek).
DevAndArtist
33

Czy używasz „podkreślenia” i „spacji” itp. Jako identyfikatora pakietu?

Czy używasz .m zamiast .h w jednym z importowanych plików? #import „Photo.h”

user674180
źródło
1
Nie, nie używam spacji ani podkreślenia w identyfikatorze pakietu.
Adam Davis,
2
Dzięki! U mnie było to podkreślenie w identyfikatorze paczki.
cocoapriest
Dzięki! Mój identyfikator pakietu był z jakiegoś powodu pusty.
tallen11
2
Dziękuję Ci. Po usunięciu podkreślenia mój projekt skompilował się dobrze. Czuję dziwną kombinację oślepiającej wściekłości, ulgi i wdzięczności. JAK MOGĘ BYĆ TAKIM GŁUPCIEM, BY KORZYSTAĆ Z UNDERSCORE W NAZWIE PROJEKTU?!?
Tina D.
1
ŁAŁ! Ja też miałem ten problem. Podkreślony. Zmieniony na myślnik i wszystko jest w porządku. To absolutnie ABSURD APPLE! Uwielbiam iOS. Gardzę zawiłym procesem, którego Apple używa, aby przenieść aplikację na urządzenie w celu przetestowania. W każdym razie dziękuję za tę poprawkę!
DA.
21

Pierwszą rzeczą, którą spróbuję, jest wyczyszczenie wszystkiego (menu Produkt / Wyczyść) i ponowne zbudowanie. Mogłeś już tego spróbować.

Pełne dane wyjściowe kompilacji znajdziesz (i możesz oglądać podczas kompilacji) w Nawigatorze dziennika. To jest najbardziej prawidłowa ikona małych ikon tuż pod przyciskami Uruchom i Buduj.

Pliki dziennika kompilacji (i debugowania) znajdują się w katalogu / Users / you / Library / Developer / XCode / DerviedData / YourProject-abcdefg / Logs / Build (i odpowiednio ../Debug).

Wydaje mi się, że nie ma żadnych wyników instalacji Twojej aplikacji na urządzeniu.

Codo
źródło
Tak, czyszczenie nie pomaga. Używałem i przeglądałem dane wyjściowe kompilacji w nawigatorze dziennika i powiązanym dzienniku sesji. Pliki dziennika, które wskażesz, wydają się być binarne, więc wygląda na to, że mam do nich dostęp tylko za pośrednictwem nawigatora dziennika i dziennika sesji.
Adam Davis,
Jeśli chodzi o Log Navigatora, w moim przypadku miałem dziennik, który był w przyszłości (ponieważ zmieniłem datę na komputerze na 1 dzień naprzód w celu wykonania niektórych testów). Wygląda na to, że xcode używa najnowszego dziennika (według daty kompilacji). Aby to naprawić (w xcode 5), usunąłem datę pochodną projektu i ponownie uruchomiłem xcode, więc przyszłe dzienniki zniknęły, a nawigator problemów zaczął wyświetlać prawidłowe ostrzeżenia i błędy.
alex-i
19

Czy w nazwie produktu Twojego celu jest spacja?

Wiem, że we wcześniejszych wersjach Xcode to nie był problem, ale wydaje się, że coś zepsuło w Xcode 4, więc to już nie działa (podejrzewam, że ma to coś wspólnego z nonsensem ścieżki DerivedData). Możesz dodać spację do nazwy swojej aplikacji, która pojawia się na Launchpad twojego iDevice, ustawiając CFBundleDisplayNameklucz w Info.plistczymś innym niż ${PRODUCT_NAME}.

damian
źródło
Nie, nazwa aplikacji to jedno słowo, bez znaków specjalnych, spacji ani niczego innego.
Adam Davis,
To zrobiło to dla mnie. Człowieku, firma Apple znajduje nowe sposoby, aby utrudnić programistom przejście na ich platformę. Niesamowity błąd. !!
CF_Maintainer
Nie możesz też mieć podkreślenia w nazwie produktu
afrederick
13

Na jednej z lokalnych list mailingowych Cocoa Heads zachęcono mnie do wypróbowania małego domyślnego projektu przykładowego - coś, co powinienem był zrobić na początku, aby upewnić się, że moje udostępnianie i podpisywanie działają. Został zbudowany i działał na moim urządzeniu bez problemu, więc wszystkie oznaki wskazują na problem z moim kodem lub projektem.

Wrzucę rzeczy z istniejącego projektu do nowego przykładowego projektu, a jeśli zawodzi w podobny sposób, powinienem być w stanie zawęzić problem do mniejszego obszaru zainteresowania.


Dodałem główną funkcjonalność aplikacji do nowego projektu i działa dobrze. Jedyne, co tym razem zrobiłem inaczej, to nie skonfigurowałem uniwersalnego pliku binarnego (teraz tylko iPhone) i wyłączyłem wszystko oprócz orientacji pionowej. O ile wiem, wszystko inne jest takie samo, ale jeśli zdecyduję się przyjrzeć temu dokładniej później, porównam pliki projektu i zobaczę, co jeszcze może być inne.

Więc rozwiązaniem dla mnie było rozpoczęcie nowego projektu i przeniesienie wszystkich funkcji ze starego projektu do nowego projektu.

Możliwe, że odtworzenie celu, jak sugeruje Paul w innej odpowiedzi, również by go naprawiło, ale przy tak prostym projekcie ponowne uruchomienie od zera było dla mnie łatwe.

Adam Davis
źródło
Ja też miałem ten problem. Utworzyłem nowy projekt Xcode4 przed skonfigurowaniem mojego certyfikatu / profilu aprowizacji i błąd nie powodował żadnych problemów. Po skonfigurowaniu i ponownym uruchomieniu Xcode mogłem rozpocząć nowy projekt i uruchomić go bez problemów. (Wiem, że niewiele pomaga przy istniejącym projekcie.)
zekel
@zekel Ciekawe! Uruchomiłem projekt i uruchomiłem go również na symulatorze, zanim przeszedłem przez proces uzyskiwania certyfikatów i przygotowania. Wyobrażam sobie, że ludzie, którzy nie pozwolili, aby ich prowizja wygasła podczas aktualizacji, nie mieliby wtedy tego problemu ...
Adam Davis
7

Miałem ten sam problem i jak ktoś inny zasugerował, że ma to związek z identyfikatorem pakietu. Niedawno zmieniłem go w ramach testu i umieściłem w nim gwiazdkę. Naprawiłem to i musiałem wyczyścić cel, a potem zadziałało.

Cortis
źródło
Ja też miałem gwiazdkę i jej usunięcie rozwiązało mój problem. Dzięki, że o tym wspomniałeś.
SteveB
Użycie identyfikatora wieloznacznego (np. Com.developername. *) Było przyczyną problemu również dla mnie. Przywrócenie domyślnej nazwy com.developername. $ {PRODUCT_NAME: rfc1034identifier} rozwiązało problem. Obecnie używam Xcode 4.0.2
GnarlyDog
7

Zdarzyło mi się to po usunięciu nieużywanego celu. Wygląda na to, że Xcode wstawił spację w CFBundleIdentifier mojego pozostałego celu (com.company.etc). Musiałem edytować Info.plist za pomocą zewnętrznego edytora tekstu, aby go usunąć, a potem działało dobrze.

AbePralle
źródło
przydarzyło się to również mnie. pod cele, podsumowanie, identyfikator, pozbyłem się spacji na początku. Jabłko Sheesh. Ile pułapek możesz stworzyć?
fregas
Identyfikator pakietu był moim problemem. To jest w pliku Info.plist.
bentford
7

Po prostu bawiłem się dodawaniem wielu projektów w obszarze roboczym i mam ten problem. Mam prostą bibliotekę w jednym z projektów i budowałem i dodałem cel oparty na oknie iOS, aby go przetestować. Usunąłem pierwszy cel, który stworzyłem, aby zmienić jego nazwę. Po przeczytaniu tego próbowałem usunąć xcuserdata z wnętrza pakietu .xcodeproj i to rozwiązało mój problem. Mam nadzieję, że to pomoże komuś innemu. Uruchamianie Xcode 4.1 na OS X 10.7.1.

Andrzej
źródło
7

Po przejrzeniu wszystkich tych odpowiedzi miałem dokładnie ten sam problem, ale coś innego rozwiązało go za mnie.

Problem:

Kompilacja nie powiodła się bez problemów po refaktoryzacji. (Zmieniono nazwę klasy za pomocą Edycja -> Refaktoryzacja -> Zmień nazwę).

najgłupsze rozwiązanie Kiedykolwiek:

Idź refaktoryzuj (zmień nazwę) coś innego (-_- "). Po wykonaniu tej czynności błąd polegał na tym, że Xcode nie mógł zmienić nazwy wszystkich odpowiednich plików i nie wyświetlał błędów. Następnie po kolejnym refaktorze pojawiły się błędy z poprzedniego refaktora .

Mazyod
źródło
Otóż ​​to ! ręcznie zmieniłem nazwę właściwości i to spowodowało problem. dziękuję
Laszlo
6

Miałem ten sam problem. Próbowałem to naprawić, awaria xcode. Otworzyłem go ponownie i działało dobrze. Może miałem szczęście czy coś? W każdym razie nie obchodzi mnie, co było z tym nie tak, dopóki działa teraz

Porter
źródło
6

Jeśli zmieniłeś identyfikator pakietu i wyczyściłeś projekt, ale to również nie zadziałało, spróbuj opróżnić katalog / Users / YOUR_USERNAME / Library / Developer / Xcode / DerivedData.

Mi to pasuje.

Kenial
źródło
6

Dla mnie kompilacja nie powiodła się bez wyświetlania żadnych błędów w nawigatorze problemów. Jednak w nawigatorze dziennika, podczas tej sesji kompilacji, mogłem zobaczyć błąd. W moim przypadku błąd był niezadeklarowaną stałą. Zaimportowałem wymagany plik nagłówkowy i problem został rozwiązany. Nie jestem pewien, dlaczego ten błąd nie pojawił się w nawigatorze problemów.

Próbowałem odtworzyć to zachowanie, celowo zmieniając nazwę innej zmiennej. Tym razem błąd został wyświetlony w nawigatorze problemów. Tak więc nadal nie jestem pewien, dlaczego wcześniejszy błąd nie pojawił się w nawigatorze problemów.

Mam nadzieję że to pomoże.

Sreejit
źródło
6

Powyższe rozwiązania u mnie nie działają.

Moim rozwiązaniem jest przeniesienie projektu do innego folderu.

Błędy kompilacji pojawiają się wtedy tak jak zwykle.

Alex
źródło
4

Czy wyczyściłeś folder kompilacji? Przejdź do menu Produkt, przytrzymaj klawisz Option i wybierz „Wyczyść folder kompilacji…”

Jon Reid
źródło
Nie zmieniło to wyników.
Adam Davis,
Brak zmian
Jayprakash Dubey
4

Wiem na czym polega problem: w Info.plist -> Bundle Identifier: nie możesz użyć '_'. Na przykład nazwa com.mojafirma.Moja_aplikacja jest nieprawidłowa, ale nazwa com.mojafirma.Moja-aplikacja OK.

Rubycon
źródło
3

Miałem dokładnie ten sam problem, gdy próbowałem skompilować istniejący projekt w xcode 4 i prawie przeszedłem ból związany z odtworzeniem projektu.

Jednak w ostatniej próbie zastąpiłem plik info.plist nowo utworzonym plikiem, który zawierał dodatkowe znaczniki dla „typów dokumentów”, „typów adresów URL”, „UTI typu eksportowanego” i „UTI typu importowanego”

To wydawało się działać i było zaskakująco prostą poprawką dla mojego projektu.

user696455
źródło
3

Zdarzyło mi się to z moim celem UnitTest. Pracował, a potem przestał. Zapomniałem, że właśnie usunąłem plik .h / .m w systemie plików i nie usunąłem go z pliku projektu, jednak XCode tego nie zgłosił.

Rozgryzłem to, uruchamiając projekt w wierszu poleceń, który powiedział mi o błędzie:

/usr/bin/xcodebuild -target "UnitTest"

Uruchom to w folderze, w którym masz plik projektu, i zastąp UnitTest swoim celem - lub po prostu nie przekazuj celu, aby zbudować domyślny cel.

bandejapaisa
źródło
3

Ja też miałem ten problem, ale przyczyna była inna:

Mam obszar roboczy z jednym projektem. W tym projekcie używam frameworka, który jest dołączany poprzez dodanie projektu Xcode do mojego projektu. Zaimportowałem plik nagłówkowy frameworka w moim nagłówku prefiksu (.pch). To było głupie.

Rozwiązaniem było usunięcie #import pliku nagłówkowego struktury z mojego pliku nagłówkowego z prefiksami i dodanie go tylko w razie potrzeby.

CodeStage
źródło
3

Ten sam problem podczas tworzenia dla urządzenia. Kompilacja nie powiodła się, ale w moim dzienniku są zielone zaznaczenia Czyszczenie / usuwanie folderu kompilacji tego nie naprawia. Czytałem gdzie indziej, że ktoś rozwiązał ten problem, usuwając i odtwarzając cel, ale nie do końca wymyśliłem, jak to zrobić w XCode 4.


Moje tymczasowe rozwiązanie polegało na pobraniu i zainstalowaniu XCode 3.2.6 z iOS 4.3. Nie zdawałem sobie sprawy, że Apple wydało również wersję XCode 3, która zawiera iOS 4.3, umożliwiając odłożenie aktualizacji do XCode 4. Złożyłem raport o błędzie w Apple dotyczący problemu z niepowodzeniem kompilacji.


aktualizacja z Apple:

Kiedy budujemy ten projekt - aczkolwiek w wersji post-Xcode 4.0 - w kroku ProcessProductPackaging w dzienniku kompilacji widzimy następujące informacje:

(null): błąd: CFBundleIdentifier „com.yourcompany.Magic_Carpet” zawiera niedozwolony znak „_” nieprawidłowy identyfikator pakietu „com.yourcompany.Magic_Carpet”

Kod ProcessProductPackaging został dość niedawno poddany przeglądowi, więc podejrzewamy, że po prostu nie emitował poprawnie błędów w Xcode 4.0. Przyjrzyj się transkrypcji własnej kompilacji, a jeśli tak, to prawdopodobnie zostanie to naprawione w przyszłej wersji Xcode (nie możemy komentować dalej, dopóki nie zostanie wydana poprawka).

Przełączyłem się z podkreślenia na myślnik i rozwiązałem problem.

Paula Slocuma
źródło
2

To samo przydarzyło się mi z innej przyczyny.

Usunąłem get-task-allow z mojego pliku Entitlements.plist, pozostawiając pusty plik plist. W ustawieniach kompilacji nadal określono plik Entitlements.plist jako mój plik uprawnień. Zdecydowałem się uruchomić przy użyciu ustawień kompilacji Ad-Hoc na urządzeniu z systemem iOS z podłączonym iPhonem i zobaczyłem zachowanie opisane w tym błędzie. Dodanie get-task-allow back naprawiło to.

Colin
źródło
2

wydaje się, że istnieje wiele możliwych przyczyn tego problemu. Mój okazał się taki

Mój cel został ustawiony na używanie nieistniejącego profilu informacyjnego.

Ustawiłem projekt tak, aby używał nowego profilu, a stary usunąłem. Nie zdawałem sobie sprawy, że miejsce docelowe ma własne ustawienie profilu informacyjnego, które nadal było ustawione na stary (teraz usunięty) profil.

CharlieMezak
źródło
2

Wystarczy dodać kolejną odpowiedź po wypróbowaniu WSZYSTKICH powyższych bez powodzenia: musiałem zrestartować MacBooka, nie tylko zamknąć XCode, i to zadziałało. Skończyło się na tym, że XCode pokazał pewne błędy w Localizable.strings, których wcześniej nie pokazywał.

Mam nadzieję, że to pomoże

sonxurxo
źródło
Mam coś podobnego, Xcode 5.0.2: w jednym z moich Localizable.strings wystąpił błąd składni, którego Xcode nie pokazał podczas budowania.
Bart van Kuik
2

Wyczyść wszystkie Spaces w schematach projektu w xcschemes i to rozwiązuje ten problem. Pieprzone Apple :( AppCode ROCKS!

Bimawa
źródło
1

zobacz: http://developer.apple.com/library/ios/#DOCUMENTATION/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html

Zestaw znaków UTI Jednolity identyfikator typu to łańcuch Unicode, który zwykle zawiera znaki z zestawu znaków ASCII. Jednak dozwolony jest tylko podzbiór znaków ASCII. Możesz użyć alfabetu łacińskiego wielkich i małych liter (A – Z, a – z), cyfr od 0 do 9, kropki („.”) I łącznika („-”). To ograniczenie jest oparte na ograniczeniach nazw DNS, określonych w dokumencie RFC 1035.

Jednolite identyfikatory typów mogą również zawierać dowolne znaki Unicode większe niż U + 007F.

Ważne: każdy niedozwolony znak występujący w ciągu UTI - na przykład podkreślenie („_”), dwukropek („:”) lub spacja („”) - spowoduje odrzucenie ciągu jako nieprawidłowego UTI. W warstwie API nie jest generowany żaden błąd dla nieprawidłowych UTI.

sfjava
źródło
1

Nie miałem problemu z nazwą pakietu, więc sugerowane rozwiązania nie zadziałały. Na koniec ustawiłem opcję Don't code sign dla kompilacji, następnie zamknąłem projekt, usunąłem obsługę administracyjną w organizatorze, pobrałem nową obsługę administracyjną i dodałem ją do organizatora, a następnie ustawiłem je dla kompilacji. Zadziałało.

Engeor
źródło
1

To nie jest odpowiedź techniczna, ale odpowiedź „błąd użytkownika”, która prawdopodobnie nie dotyczy Twojej sytuacji. Przydarzyło mi się to i moje poszukiwania doprowadziły mnie do tego pytania i odpowiedzi bezskutecznie - dopóki nie zdałem sobie sprawy z mojego błędu. W Nawigatorze problemów został ustawiony filtr, który nie pasował do niczego, co było zgłaszane jako problem. Kiedy wyczyściłem filtr, problemy zostały wyświetlone.

Zauważ, że objawy były takie same, o jakie pytałeś i nie mam pojęcia, kiedy ustawiam ten filtr (musi być odziedziczony z innych widoków nawigacji), ponieważ nie potrzebowałbym żadnego filtrowania na krótkiej liście.

mobibob
źródło
1

Właśnie miałem podobny problem. Nie udało się nigdzie znaleźć błędu. Usunąłem wszystkie moje profile obsługi administracyjnej i dodałem nowe.

Następnie próbowałem zbudować inną aplikację testową na moim urządzeniu i otrzymałem ten komunikat o błędzie:

Błąd Code Sign: tożsamość certyfikatu „iPhone Developer: xxxxxx” pojawia się więcej niż raz w pęku kluczy. Narzędzie Codesign wymaga tylko jednego.

Więc wszedłem do pęku kluczy, znalazłem kilka wygasłych certyfikatów o tej samej nazwie i usunąłem je, i to załatwiło sprawę.

Dość losowo, ale być może jeśli spróbujesz zbudować inną aplikację na urządzenie, tak jak ja, możesz mieć szczęście, aby otrzymać komunikat o błędzie, tak jak ja, aby pomóc zdiagnozować problem.

mestevie
źródło
1

Przejdź do Organizatora w xcode. Na karcie Projekt usuń ten projekt. Pozwól xcode ponownie odbudować dane pochodne i napraw mój problem.

AccBLue
źródło
1

Z podobnym problemem spotkałem się w XCode4.5 i podczas pracy nad moją aplikacją XCode nagle się zawiesił.

Po wielu godzinach wyszukiwania dowiedziałem się, że jeden z moich plików w mojej aplikacji został usunięty po awarii xcode.

Przywróciłem plik z Kosza i problem został rozwiązany.

niks
źródło
1

Programowałem aplikację Mac OS X bez kodowania . Kiedy włączyłem piaskownicę w sekcji „Uprawnienie”, kodowanie włączało się automatycznie i nie mogłem stworzyć nowej kompilacji.

Thomas Johannesmeyer
źródło