2013-04-18 7 views
7

Pytanie - wersja skrócona:Dlaczego moje skrypty fazy kompilacji nie zostaną wykonane podczas tworzenia IPA z wiersza poleceń?

Dlaczego nie mój build phase scripts być wykonywane podczas tworzenia IPA z wiersza poleceń? Gdy uruchamiam xcodebuild w celu utworzenia IPA, wstępnie zdefiniowane skrypty fazy budowania nie zostaną wykonane. Dlaczego?


Pytanie - długa wersja:

Mam obszaru roboczego z systemem chcę utworzyć z IPA z linii poleceń.

Działa to dobrze, z wyjątkiem jednej rzeczy; Mam dwa skrypty w fazie budowania celu, które są używane do umieszczenia poprawnej wersji aplikacji (CFBundleShortVersionString) i poprawnego numeru wersji svn (CFBundleVersion). Skrypty te działają poprawnie podczas archiwizowania z xcode, ale z jakiegoś powodu nie są uruchamiane podczas archiwizacji z wiersza poleceń. Po pierwsze, dlaczego tak jest?

Oto skrypty, które pracują (jeśli forma archiwizacji Xcode) enter image description here enter image description here

podczas archiwizacji i tworzenia IPA z wiersza poleceń, co robię (podstawowe)

# Building 
xcodebuild ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -workspace MyWorkspace.xcworkspace/ -scheme MyScheme CONFIGURATION_BUILD_DIR=${PROJECT_BUILD_DIR} -configuration Release clean build 

# Creating IPA 
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${PROJECT_BUILD_DIR}/${APPLICATION_NAME}.app" -o "${IPA_OUTPUT_PATH}/${APPLICATION_NAME}.ipa" 

Działa i tworzy IPA, ale żaden ze skryptów fazy kompilacji nie zostanie wykonany, pozostawiając zarówno numer rewizji, jak i numer wersji nietknięty.

Wszystkie sugestie są mile widziane!

UPDATE DUE TO ODPOWIEDŹ BDASH za

Zamiast czystą kompilację I zrób zainstalować jako

xcodebuild install ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -workspace MyWorkspace.xcworkspace/ -scheme MyScheme CONFIGURATION_BUILD_DIR=${PROJECT_BUILD_DIR} -configuration Release 

Predefiniowane skrypt będzie faktycznie wykonane (widać w numerze wersji projektu) bez błędów podczas instalacji. Jednak utworzony IPA będzie miał rozmiar ~ 300 bajtów (zamiast ~ 10 MB) i nie będzie można go zainstalować na urządzeniu.

Budowanie aplikacji przed jej zainstalowaniem, tj

# Building 
xcodebuild clean build ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -workspace MyWorkspace.xcworkspace/ -scheme MyScheme CONFIGURATION_BUILD_DIR=${PROJECT_BUILD_DIR} -configuration Release 
# Installing 
xcodebuild install ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -workspace MyWorkspace.xcworkspace/ -scheme MyScheme CONFIGURATION_BUILD_DIR=${PROJECT_BUILD_DIR} -configuration Release 

a następnie tworząc IPA spowoduje IPA z wykonywanego skryptu wersji i prawidłowej wielkości BUT nie jest możliwe zainstalowanie go na urządzeniu. Próba umieszczenia go na urządzeniu spowoduje wyświetlenie komunikatu o błędzie mówiącego: "Program" MyApp "nie został zainstalowany na urządzeniu iPhone" Moje urządzenie ", ponieważ wystąpił nieznany błąd."

+0

Założę się, że jeśli budujesz z linii poleceń, 'xcodebuild' zakłada również, że sam wykonujesz skrypt. Wygląda mi na błąd. –

+0

Czy w końcu udało Ci się znaleźć rozwiązanie? – fatuhoku

Odpowiedz

2

Masz "Uruchom skrypt tylko podczas instalacji" zaznaczony co najmniej na jeden z etapów skryptu. Faza ta nie zostanie uruchomiona podczas działania z build na xcodebuild, tylko jeśli użyto akcji install.

+0

Zaktualizowałem moje pytanie z wyniku Twojej odpowiedzi. – Groot

+0

Podczas korzystania z akcji 'install' wbudowany produkt jest instalowany w katalogu określonym przez ustawienie konfiguracyjne' DSTROOT'. Domyślnie jest to '/ tmp/ProjectName.dst', chyba że nadpiszesz go w wierszu poleceń' xcodebuild'. Nie ma to wiele wspólnego z twoim pytaniem, jak początkowo zadawano. – bdash

+0

Dzięki za pomoc bdash! Nadpisuję katalog z wiersza poleceń, w którym zarówno "build", jak i "install" są umieszczone w tym samym katalogu. Masz rację, że odbiega to nieco od pierwotnego pytania, ale faktem jest, że pierwsze om moje skrypty nie zostaną wykonane. – Groot