Jesteś na dobrej drodze, jeśli chodzi o plik .xcscheme - miałem ten problem podczas tworzenia własnych projektów!
Dla potomnych, a przynajmniej dla każdego, kto trafił tutaj z poszukiwań, mamy dwie wersje rzeczy - „Jestem zajęty, więc proszę o fakty” oraz bardziej zaangażowaną dyskusję i uzasadnienie. Obie te wersje zakładają, że próbujesz budować z pliku Workspace; jeśli nie, to przepraszam, ponieważ dotyczy to głównie projektów opartych na przestrzeni roboczej.
Wersja skrócona „Napraw to”
Główną przyczyną jest to, że domyślne zachowanie schematów polega na utrzymywaniu schematów jako „prywatnych”, dopóki nie zostaną wyraźnie oznaczone jako udostępnione. W przypadku kompilacji inicjowanej z wiersza polecenia interfejs użytkownika Xcode nigdy nie działa, a narzędzie xcoderun nie ma własnej pamięci podręcznej schematów do pracy. Celem jest wygenerowanie, udostępnienie i zatwierdzenie schematu, który ma działać Bamboo:
- Na czystej kopii roboczej kodu otwórz obszar roboczy projektu.
- Wybierz Schemat> Zarządzaj schematami ... z menu produktów.
- Pojawi się lista schematów zdefiniowanych dla projektu.
- Zlokalizuj schemat, który Bamboo próbuje uruchomić
- Upewnij się, że pole „Udostępnione” jest zaznaczone dla tego schematu i że ustawienie „Kontener” jest ustawione na obszar roboczy, a nie sam plik projektu.
- Kliknij „OK”, aby zamknąć arkusz Zarządzaj schematami.
- Nowy plik .xcscheme został utworzony w Twoim projekcie w WorkspaceName.xcworkspace / xcshareddata / xcschemes.
- Zatwierdź ten plik w swoim repozytorium i uruchom kompilację Bamboo.
Głębsza dyskusja i uzasadnienie
Xcode 4 wprowadził Obszary robocze i schematy, aby pomóc w próbie okiełznania chaosu nieodłącznie związanego z mechaniką okablowania projektów Xcode, budowania celów i wspólnego budowania konfiguracji. Sam obszar roboczy ma swój własny zestaw danych konfiguracyjnych, który opisuje każde z mniejszych „pudełek” danych, które zawiera, i działa jako szkielet do dołączania plików .xcodeproj oraz zestawu współużytkowanych danych konfiguracyjnych, które są dublowane na każdej maszynie deweloperskiej lub systemie CI . To jest zarówno moc, jak i pułapka obszarów roboczych - istnieje 1) wiele sposobów, na które można uzyskać konfigurację w 100% poprawnie, ale umieścić ją w niewłaściwym pojemniku lub 2) umieścić we właściwym kontenerze, ale nieprawidłowo skonfigurowanym, renderując dane niedostępne dla innych części systemu!
Domyślnym zachowaniem schematów Xcode 4 jest automatyczne generowanie nowych schematów w miarę dodawania projektów do pliku Workspace. Ci z was, którzy dodali kilka plików .xcodeproj, mogli zauważyć, że lista schematów szybko staje się niesforna, zwłaszcza gdy pliki projektów są dodawane, a następnie usuwane, a następnie ponownie wczytywane do tego samego obszaru roboczego. Wszystkie schematy, generowane automatycznie lub tworzone ręcznie, domyślnie są schematami „prywatnymi” i są widoczne tylko dla bieżącego użytkownika, nawet jeśli pliki .xcuserdata są zatwierdzone z danymi projektu i konfiguracją. Jest to główna przyczyna tego tajemniczego błędu kompilacji Raporty Bamboo z xcodebuild - ponieważ Bamboo obsługuje kompilację za pomocą wiersza poleceń, a nie interfejsu użytkownika Xcode, nie ma możliwości automatycznego generowania schematów i opiera się tylko na tych, które są zdefiniowane w samym obszarze roboczym.
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyApplication -configuration Debug
xcodebuild szuka pliku <'scheme' Parameter Value> .xcscheme istniejącego w <'workspace' Parameter Value> / xcshareddata / xcschemes.
Oczywiście istnieje wiele sposobów, w jakie można skonfigurować zarówno Bamboo, jak i obszar roboczy, więc pamiętaj, że Twoja unikalna konfiguracja może nie odpowiadać w 100% temu, co jest tutaj przedstawione. Kluczowe wnioski:
- Niektóre zautomatyzowane zadania, którymi w magiczny sposób zajmuje się interfejs użytkownika Xcode, nie są dostępne przez interfejs CLI Xcodebuild.
- Możesz dołączyć schemat i tworzyć dane konfiguracyjne w wielu miejscach w `` hierarchii kontenerów '' - upewnij się, że dane trafiają do właściwego kontenera (obszar roboczy, projekt i / lub cel kompilacji)
- Zastanów się, gdzie w hierarchii kontenerów narzędzie xcodebuild może szukać danych konfiguracyjnych; świetnym wskaźnikiem tego, gdzie zacznie szukać, jest użycie argumentów „-workspace” lub „-project”.
Pole „Udostępnione” jest już zaznaczone ... co teraz?
Napotkałem ten sam problem na mojej własnej instancji Bamboo; okazało się, że schemat, który został zatwierdzony w moim repozytorium, był przestarzały, a najnowsza wersja narzędzi wiersza poleceń nie radziła sobie z nim prawidłowo. Ponieważ istniało to wcześniej, przejrzałem ustawienia, aby upewnić się, że w schemacie nie ma nic rażąco niestandardowego, usunąłem i odtworzyłem schemat, upewniając się, że oznaczyłem go jako `` Współdzielony '' i ponownie wprowadzając nowy plik .xcscheme do magazyn.
Jeśli wszystko wygląda dobrze, a odbudowanie go nie rozwiązuje problemu, sprawdź dokładnie to ustawienie kontenera - naprawdę łatwo jest podłączyć ten schemat do niewłaściwego kontenera w hierarchii!