Udostępnij za pośrednictwem


Rozwiązywanie problemów z kompilacją systemu iOS

Ważne

Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Mimo że możesz nadal używać programu Visual Studio App Center do momentu jej pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.

Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.

Nie znaleziono schematu Xcode

Kompilowanie elementu xcworkspace lub xcproject wymaga udostępnionego schematu Xcode. Schematy Xcode są zapisywane lokalnie, aby program Xcode mógł uzyskiwać do nich dostęp. Domyślnie schematy nie są udostępniane innym osobom ani nie są uwzględniane w kontroli źródła.

Aby udostępnić schemat w programie Xcode, wykonaj następujące kroki:

  1. Wybierz pozycję Schemat > produktu > Zarządzaj schematami.
  2. Ustaw schemat elementu xcproject/xcworkspace jako udostępniony.
  3. Kontener schematu musi być ustawiony na projekt Xcode lub obszar roboczy, który chcesz skompilować.
  4. .xcscheme Dodaj plik do kontroli źródła i wypchnięty do repozytorium zdalnego, aby centrum aplikacji mógł uzyskać do niego dostęp.

Oznaczanie schematu jako udostępnionego

Ostrzeżenie

Upewnij się, że xcshareddata/xcschemes/ folder nie znajduje się w pliku .gitignore . W tym miejscu .xcscheme pliki są przechowywane przez program Xcode. Usługa App Center opiera się na tych plikach, aby prawidłowo skompilować projekt. Po prostu eksportowanie pliku .xcscheme do innego folderu nie będzie działać.

Kompilacje systemu iOS kończą się niepowodzeniem z powodu błędu "clang: błąd: polecenie konsolidatora nie powiodło się z kodem zakończenia 1"

Błąd może być spowodowany przez kompilowanie centrum aplikacji za pomocą narzędzia xcodeproj zamiast obszaru roboczego. Podczas dodawania aplikacji CocoaPods do projektu przejdź do obszaru roboczego podczas kompilowania w centrum aplikacji.

Wskaźnik: poszukaj tego wiersza w dzienniku kompilacji:

ld: library not found for -lPods-GarageController
clang: error: linker command failed with exit code 1 (use -v to see invocation)

** ARCHIVE FAILED **

Aby rozwiązać ten błąd, otwórz konfigurację kompilacji projektu i kliknij przycisk Zapisz. Centrum aplikacji automatycznie wybierze obszar roboczy dla przyszłych kompilacji.

Objaśniono problemy z podpisywaniem systemu iOS

Uwaga

Tożsamości podpisywania, które używają znaków innych niż ascii, nie są obsługiwane w kompilacji.

Obsługa profilów aprowizacji i certyfikatów może być trudnym procesem. Poniższe porady powinny pomóc w pomyślnym podpisaniu aplikacji systemu iOS:

  1. Zapisz konfigurację kompilacji w centrum aplikacji po wypchnięciu zmian podpisywania do projektu. W centrum aplikacji konfiguracja kompilacji dowolnej gałęzi przechowuje dwie wartości projektu Xcode: i CODE_SIGN_STYLEDEVELOPMENT_TEAM (ustawione w pliku w project.pbxproj.xcodeproj folderze). Za każdym razem, gdy zmienisz się między ręcznym i automatycznym podpisywaniem lub przełączysz zespół deweloperski, upewnij się, że po wypchnięciu zmian zapisz konfigurację kompilacji w Centrum aplikacji. Jeśli nie zapiszesz się po wypchnięciu, kompilacja może zakończyć się niepowodzeniem z powodu błędu podpisywania.

  2. Przeciągnij i upuść prawidłowy profil aprowizacji podczas korzystania z automatycznego podpisywania. W programie Xcode na karcie Ogólne obiektu docelowego w obszarze Podpisywanie kliknij ikonę informacji obok pozycji Profil zarządzany programu Xcode. Zostanie wyświetlone okno podręczne z informacjami o profilu. Kliknij i przeciągnij ikonę PROV w lewym górnym rogu do żądanej lokalizacji (jak pokazano poniżej).

  3. Podczas korzystania z ręcznego i automatycznego podpisywania zanotuj obecnie obsługiwane opcje centrum aplikacji. Centrum aplikacji w pełni obsługuje ręczne podpisywanie aplikacji systemu iOS, dzięki czemu można użyć dowolnego typu profilu lub certyfikatu. Sprawdź, czy profil aprowizacji i certyfikat przekazany do usługi App Center są zgodne z tym, co określono w projekcie. Jeśli włączono opcję Automatyczne zarządzanie logowaniem w programie Xcode, usługa App Center obsługuje podpisywanie aplikacji przy użyciu certyfikatów i profilów deweloperów (a nie z dystrybucją). Podczas przekazywania do centrum aplikacji należy użyć profilu automatycznej aprowizacji z poziomu programu Xcode.

Nadal występują problemy?

Aby rozwiązać problemy z tworzeniem i uruchamianiem tworzenia konta, zalecamy wykonanie następujących kroków:

  1. Skonfiguruj ręczne logowanie w projekcie Xcode i upewnij się, że działa lokalnie.
  2. Po zweryfikowaniu zatwierdź i wypchnij zmiany do repozytorium.
  3. Przygotuj profil aprowizacji i certyfikat wybrany w obiekcie docelowym programu Xcode i przekaż go do konfiguracji kompilacji centrum aplikacji.
  4. Co najważniejsze: przed zapisaniem nowego certyfikatu i profilu w konfiguracji kompilacji upewnij się, że wypchnięliśmy najnowszy stan projektu.

Gdzie znajduje się mój plik ipa?

Program Xcodebuild, w przeciwieństwie do xcrun, nie zezwala na generowanie .ipa pliku, jeśli kompilacja nie jest podpisana. Niepodpisane kompilacje tworzą .xcarchive zamiast tego. Jeśli chcesz wygenerować .ipa plik z artefaktami niepodpisanej kompilacji, możesz użyć .xcarchive tego pliku.

Eksportowanie pliku xcarchive przy użyciu narzędzia xcode

Moja aplikacja systemu iOS korzystająca z programu Xcode kończy się niepowodzeniem z powodu błędu nieprawidłowej wersji kodu bitowego

Jeśli kompilacje kończą się niepowodzeniem z error: Invalid bitcode version (Producer: '802.0.38.0_0' Reader: '800.0.42.1_0')programem , używasz biblioteki lub zasobnika utworzonego przez nowszą wersję programu Xcode niż projekt. Możesz zaktualizować projekt i konfigurację kompilacji w usłudze App Center, aby użyć nowszej wersji programu Xcode lub przełączyć się na alternatywną wersję problematycznej biblioteki, która jest kompilowana przy użyciu zgodnej wersji programu Xcode.

Moja aplikacja systemu iOS nie może uruchomić testu

Typowym powodem niepowodzenia testów jest to, że polecenia konsolidatora napotkały błąd podobny do następującego:

 ld: directory not found for option iPhoneSimulator10.3.sdk/Developer/Library/Frameworks 
  ❌ ld: embedded dylibs/frameworks are only supported on iOS 8.0 and later (@rpath/XCTest.framework/XCTest) for architecture x86_64 
  ❌ clang: error: linker command failed with exit code 1 (use -v to see invocation)  

Prawdopodobną przyczyną tego błędu jest typ łączenia narzędzia Apple Mach-O Linker nie jest ustawiony na bibliotekę statyczną. Aby pomyślnie skompilować i przetestować aplikację, upewnij się, że typ łączenia konsolidatora Apple Mach-O w obiekcie docelowym testowym jest ustawiony na bibliotekę statyczną.

Apple Mach-O Linker

Moje kompilacje systemu iOS korzystające z platformy CocoaPods w środowisku Xcode 9 nadal kończą się niepowodzeniem, co należy zrobić?

Może to być spowodowane tym, że konfiguracja podpisywania w projekcie Zasobniki różni się od konfiguracji logowania w projekcie Głównym. Czy zasobniki są zaewidencjonowane w repozytorium? Jeśli tak, projekt Zasobniki musi używać tej samej metody podpisywania co projekt Główny.

Jeśli zasobniki nie są zaewidencjonowane, mogą wystąpić różne problemy. Istnieje kilka obejść, których można użyć w tym problemie z usługą GitHub ze skryptami przed kompilacją.

Ponieważ mój projekt został uaktualniony do wersji beta programu Xcode 10, nie można skompilować mojej aplikacji z powodu błędu Cykl zależności między elementami docelowymi

Nowy system kompilacji Xcode 10 wykrywa cykle zależności w kompilacji i kończy się niepowodzeniem kompilacji, jeśli istnieje.

Aby uzyskać więcej informacji na temat naprawiania kompilacji, zobacz dokumentację firmy Apple dotyczącą rozwiązywania typowych typów cykli zależności.