2013-06-01 10 views
7

Buduję aplikacje na iOS od ponad 2 lat i nigdy nie spotkałem się z tym problemem. Próbuję zarchiwizować aplikację do dystrybucji beta. Kompilacja się powiedzie, ale na samym końcu procesu Xcode zgłasza "Archiwum anulowane".Archiwum w Xcode 4.5 - Brak błędów, ale kompilacja anulowana

enter image description here

Dzienniki kompilacji nie wykazują żadnych ostrzeżeń lub błędów wszelkiego rodzaju.

enter image description here

Czasami poprzez czyszczenie/folder build Czyszczenie/wymazywania danych uzyskanych mogę dostać archiwum, aby odnieść sukces, ale nie wydaje się być nie do niego wzór. Czy ktoś napotkał ten problem? W tym przypadku nie mam nawet nic do przekazania.

+1

Nigdy nie widziałem ani nie słyszałem o tym. Robisz to, co trzeba, czyszcząc projekt itp. Spróbuj ponownie zainstalować twój kod xcode, może to być problem z xcode. Wiem, że to jest ból, ale może raz na zawsze pozbyć się problemu. Ale to jest ostatnia deska ratunku. –

+0

Czy zdarzyło Ci się, że to działa? Mam dokładnie ten sam problem. Czy twój projekt wykorzystuje cocoapody? Zastanawiam się, czy to jest problem z moim. Nie ma innej wskazówki co do tego, co jest nie tak :( – ConfusedNoob

+0

Myślałem o ponownym zainstalowaniu Xcode'a. Myślę, że będę musiał to wypróbować. Używam CocoaPods, ale użyłem CocoaPods w wielu projektach w przeszłości bez żadnych problemów –

Odpowiedz

31

Czy masz niestandardowy skrypt uruchamiania, który powoduje zmianę wersji za pomocą agvtool? Stwierdziłem, że to powoduje dokładnie takie zachowanie. Prawie 100% brak archiwizacji i powszechne niepowodzenie w budowaniu. Usunięcie tego rozwiązało problem.

+2

Wow, to było to, podważyłem moją kompilację # z niestandardowym skryptem uruchamiającym, używając AVGTool, Awesome catch! Zabójca polegał na tym, że nie ma informacji zwrotnej w dziennikach informujących, co anuluje kompilację.Dzięki za odpowiedź! –

+0

aaaaahhhhhhhhhhhh to kosztowało mnie wiele godzin po zautomatyzowaniu kompilacji i pakietów ipa i wszystkich fajnych rzeczy, avgtool zabijał scenariusz THX !!! –

12

Po pierwsze: +1 w odpowiedzi ConfusedNoob, ponieważ to był problem (który doprowadził mnie do wielu eksperymentów i wreszcie tego rozwiązania). Jeśli moja odpowiedź pomaga, +1 jego również, ponieważ jego podpowiedź była ogromna!

(Również Zobacz inne moje odpowiedzi, poniżej, że omija agvtool ogóle. I w końcu osiadł w celu korzystania, że ​​we wszystkich moich projektach.)

Byłem pałować z nim trochę i jedyną rzeczą Odkryłem, że działa niezawodnie, aby rozwiązać problem, używając agvtoolu jako działania wstępnego w odpowiednich schematach, a nie jako skrypt startowy w fazie kompilacji.

  • CMD-SHIFT-przecinek edytować schematów (XCode 6.x)
  • Twiddle-otwarte jakikolwiek schemat chcesz to dalej. Zrobiłem to na Run i Archive, ale prawdopodobnie potrzebuję go tylko w archiwum.
  • Wybierz ikonę "+" i "Nowe działanie skryptu"
  • Dodaj swój skrypt agvtool. Jeśli zależy Ci, kopalnia jest:

    cd ${PROJECT_DIR} ; xcrun agvtool next-version -all 
    

(UWAGA: wstępne działania nie naturalnie prowadzony w ${PROJECT_DIR}, więc trzeba cd.)

Close & uratować i to wszystko .

Problem polega na tym, że agvtool modyfikuje plik projektu (niepotrzebnie, ponieważ wszystkie numery kompilacji są ważne gdzie indziej), a modyfikowanie pliku projektu powoduje anulowanie kompilacji.

+1 również na pytanie - cripes, to było trudne!

+0

"cd $ {PROJECT_DIR}" dobry! – Luke

+2

Nie przeszkadza mi to, ale jeśli dodany jako skrypt przed akcją w schemacie "Archiwum", wydaje się być "zarchiwizowany" z aktualną wersją i następnie zwiększany (ten sam wynik, co po akcji) w Xcode 7. –

+1

Zauważyłem też, że mam Wykonaj to jako działanie po akcji, aby zapobiec ostrzeżeniu o anulowaniu podczas wykonywania testów i musiałem wybrać opcję 'Provide build settings from' and my framework. – Gujamin

1

Inną techniką jest całkowita rezygnacja z agvtool. Wystarczy dodać ten skrypt środowiska wykonawczego na koniec fazy kompilacji (po zasobach pakietu kopii.)

  • Wybierz projekt

Select your project

  • Wybierz zbudować fazy i +

Select build phases and +

  • dodać nowy Run Script fazę

Add new run-script phase

  • Wprowadź skrypt

Enter the script

Skrypt do łatwego kopiowania/wklejania:

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") 
buildNumber=$(($buildNumber + 1)) 
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE" 

Upewnij się, że skrypt jest uruchamiany po fazy copy-wiązka swojej budowie

1

dla mnie faza carthage update build był przyczyną problemu.

Sprawdź również, czy masz inne fazy kompilacji ze skryptami, które modyfikują pliki lub kod.

Powiązane problemy