7

Nazywam się Luca i obecnie pracuję nad ciągłą integracją iOS, aby tworzyć aplikacje w Xcode do dystrybucji (Ad Hoc i App Store) przy użyciu skryptów powłoki.Argumenty xcodebuild są ignorowane podczas korzystania z archiwum

Do tej pory osiągałem dobre wyniki dzięki plikom IPA. Mój problem dotyczy dystrybucji w App Store. Aby zbudować .app ze skryptu (przechodząc kilka argumentów) zrobić:

xcodebuild -scheme myScheme -configuration myConfiguration PRODUCT_NAME=myProductName TARGETED_DEVICE_FAMILY=myTargetedDeviceFamily .... etc 

Ponieważ z Xcode 4.2, aplikacje składanie odbywa się za pomocą oknie Organizatora Xcode muszę być w stanie również archiwizować mój plik wykonywalny.

Dlatego zmodyfikować poprzedni wiersz polecenia jako następujące:

xcodebuild -scheme myScheme -configuration myConfiguration PRODUCT_NAME=myProductName TARGETED_DEVICE_FAMILY=myTargetedDeviceFamily .... etc  **archive** 

Niestety po tym, jak to zrobić, wydaje się, że „archiwum” siła argumentu xcodebuild ignorować inne te (PRODUCT_NAME, TARGETED_DEVICE_FAMILY ... .) i moje dane wyjściowe są tworzone przy użyciu predefiniowanych ustawień budowania XCode.

Chcę być w stanie przekazać argumenty z xcodebuild i być skuteczne, ale akcja "archiwum" wydaje się temu zapobiegać.

jadę orzechy, proszę o pomoc :)

Dzięki

Odpowiedz

4

archiwum akcja dla xcodebuild wydaje się mieć błąd w Xcode 4.2. Zwykle przesłonięcia dla konfiguracji projektu można określić jako parametry wiersza polecenia lub za pomocą parametru -xcconfig.

Mimo, że akcja kompiluje, ich archiwum nie jest archiwizowane .. (Prawdopodobnie dzieje się tak dlatego, że archiwum to meta-akcja, która wewnętrznie wywołuje kompilację, ale nie przekazuje opcji do wewnętrznego wywołania.) Istnieje OpenRadar bug, który opisuje ten problem, więc prawdopodobnie został zgłoszony firmie Apple.

Wreszcie, jeśli zamierzasz użyć akcji archiwum ze skryptu, nie możesz polegać na kodzie wyjścia z xcodebuild. Akcja archiwum zawsze daje kod wyjścia 0 (sukces, według konwencji). Aby wykryć błąd kompilacji, musisz zeskrobać wyjście.

0

Wpadłem na ten sam problem. Moje bieżące obejście polega w zasadzie na usunięciu innych konfiguracji, więc archiwum jest zmuszone użyć tego, którego potrzebujesz. Naprawdę nie jest to rozwiązanie, które można zrobić za pomocą wiersza poleceń, mam nadzieję, że Apple rozwiąże ten rażący problem.

-1

może być za późno na oryginalny plakat, ale może pomóc innym. dla mojego procesu kompilacji używam xcodebuild się z pierwszą czyste, a następnie zbudować, a następnie użyć xcrun stworzyć archiwum:

/usr/bin/xcrun -sdk iphoneos PackageApplication -v "build/<Path_to_build_dir>/<App_Name>.app" -o "<Path_to_archive_output>.ipa" --sign "<signing identity>" --embed "<path to provision profile>.mobileprovision" 

z tego polecenia, można utworzyć archiwum dla sklepu z aplikacjami, a nawet przesłać ad-hoc build do TestFlight tak:

curl http://testflightapp.com/api/builds.json \ 
    -F file="<path to archive>" \ 
    -F api_token='<api token>' \ 
    -F team_token='<team token>' \ 
    -F notes='Automated build' \ 
    -F notify=True \ 
    -F distribution_lists='me' 

to działa jak z Xcode 6.1