Xcode 3.2 zapewnia nową, niesamowitą funkcję w menu kompilacji „Kompiluj i archiwizuj”, która generuje plik .ipa odpowiedni do dystrybucji Ad Hoc. Możesz także otworzyć Organizatora, przejść do „Zarchiwizowanych aplikacji” i „Prześlij aplikację do iTunesConnect”.
Czy istnieje sposób użycia „Kompilacji i archiwizacji” z wiersza poleceń (jako część skryptu kompilacji)? Zakładam, że xcodebuild
byłby to w jakiś sposób zaangażowane, ale man
strona wydaje się nic na ten temat nie mówić.
AKTUALIZACJA Michael Grinich poprosił o wyjaśnienia; oto, czego dokładnie nie możesz zrobić z kompilacjami z wiersza poleceń, funkcje, które możesz zrobić TYLKO z Xcode's Organizer po „Kompilacji i archiwizacji”.
- Możesz kliknąć „Udostępnij aplikację ...”, aby udostępnić IPA testerom wersji beta. Jak zauważa Guillaume poniżej, z powodu pewnej magii Xcode, ten plik IPA nie wymaga osobnego pliku .mobileprovision, który muszą zainstalować beta-testerzy; to magiczne. Żaden skrypt wiersza poleceń nie może tego zrobić. Na przykład skrypt Arrix (przesłany 1 maja) nie spełnia tego wymogu.
- Co ważniejsze, po przetestowaniu kompilacji w wersji beta możesz kliknąć „Prześlij aplikację do iTunes Connect”, aby przesłać tę DOKŁADNĄ tę samą kompilację do Apple, bardzo przetestowanej wersji binarnej, bez jej odbudowywania. Jest to niemożliwe z wiersza poleceń, ponieważ podpisywanie aplikacji jest częścią procesu kompilacji; możesz podpisać bity do testów beta Ad Hoc LUB możesz je podpisać w celu przesłania do App Store, ale nie jedno i drugie. Żaden IPA zbudowany w wierszu polecenia nie może być testowany w wersji beta na telefonach, a następnie przesyłany bezpośrednio do Apple.
Chciałbym, aby ktoś przyszedł i udowodnił, że się mylę: obie te funkcje działają świetnie w graficznym interfejsie użytkownika Xcode i nie można ich replikować z wiersza poleceń.
źródło
xcodebuild
. Utworzenie pliku IPA polega tylko na umieszczeniu aplikacji w katalogu o nazwie „Ładunek”, spakowaniu tego katalogu i zmianie nazwy na MyAppName.ipa.Odpowiedzi:
Odkryłem, jak zautomatyzować proces kompilacji i archiwizacji z linii poleceń, właśnie napisałem artykuł na blogu wyjaśniający, jak możesz to osiągnąć.
Polecenie, którego musisz użyć, to
xcrun
:Wszystkie szczegóły znajdziesz w tym artykule . Jeśli masz jakieś pytania, nie wahaj się zadać.
źródło
RELEASE_BUILDDIR
musi być ścieżką absolutną.-o "${ipa_path}"
musi być ścieżką bezwzględną. W przeciwnym razie prawdopodobnie dostanieszerror: Unable to create '.../...ipa'
lub zostanie po cichu zignorowane tworzenie. Cholera, zmarnowało mi to kilka godzin.W Xcode 4.2 możesz użyć flagi -scheme, aby to zrobić:
Po tym poleceniu Archiwum pojawi się w Xcode Organizer.
źródło
archive
akcja nie uwzględnia żadnych ustawień, które wprowadzasz za pomocą tego wywołania, oprócz obszaru roboczego i schematu - to tylko kosztowało mnie godziny !xcode-select <path to Xcode.app>
-scheme <SchemeName>
”Archiwum
Eksport IPA ( zwróć uwagę na listę opcji eksportu )
Dla tych, którzy nie wiedzą o exportOptions.plist, https://blog.bitrise.io/new-export-options-plist-in-xcode-9
Ci, którzy używali tego do budowy projektu w narzędziach CI / CD, takich jak teamcity / jenkins, upewnij się, że używasz odpowiedniego xcode zainstalowanego w agencie kompilacji do archiwizacji i eksportu.
Możesz użyć do tego jednej z 2 poniższych opcji.
Oto skrypt wiersza poleceń do tworzenia archiwum i przykładu IPA. Mam projekt iPhone'a xcode, który znajduje się w folderze Desktop / MyiOSApp.
Wykonaj następujące polecenia jeden po drugim:
Jest to testowane z Xcode 5 i działa dobrze dla mnie.
źródło
xcodebuild -workspace <ProjectName>/<ProjectName>.xcworkspace -scheme <schemeName> clean archive -configuration release -sdk iphoneos -archivePath <ProjectName>.xcarchive
requires a provisioning profile with the Associated Domains feature. Select a provisioning profile for the "Release" build configuration in the project editor.
Używam własnego skryptu kompilacji do generowania pakietu IPA do dystrybucji ad hoc.
Skrypt zwiększa także numer wersji. Możesz usunąć tę część, jeśli nie jest potrzebna. Mam nadzieję, że to pomoże.
źródło
xcodebuild
Narzędzie może zbudować i archiwum eksport produktów z -exportArchive flagi (jak z Xcode 5). Krok eksportu był wcześniej możliwy tylko za pośrednictwem interfejsu użytkownika Xcode Organizer.Najpierw zarchiwizuj aplikację:
Biorąc pod uwagę
$ARCHIVE_PATH
(ścieżka do .xcarchive pliku ), wyeksportuj aplikację z archiwum za pomocą jednego z poniższych:Plik .ipa dla systemu iOS :
Plik .app systemu Mac :
W obu komendach argumenty -exportProvisioningProfile i -exportSigningIdentity są opcjonalne.
man xcodebuild
po szczegóły dotyczące semantyki. W tych przykładach profil udostępniania dla kompilacji iOS określa profil udostępniania dystrybucji AdHoc, a tożsamość podpisująca dla aplikacji Mac określa ID programisty do eksportu jako aplikacja innej firmy (tj. Nie dystrybuowana za pośrednictwem Mac App Store).źródło
-workspace
opcję do xcodebuild (i ścieżkę do obszaru roboczego)?man xcodebuild
stwierdza: „Aby zbudować obszar roboczy Xcode, należy przekazać zarówno opcje -workspace, jak i -scheme w celu zdefiniowania kompilacji”.Opracowaliśmy aplikację na iPada z XCode 4.2.1 i chcieliśmy zintegrować tę wersję z naszą ciągłą integracją (Jenkins) w celu dystrybucji OTA. Oto rozwiązanie, które wymyśliłem:
Następnie Jenkins przesyła pliki IPA, Plist i HTML do naszego serwera.
To jest szablon plist:
Aby to skonfigurować, musisz zaimportować certyfikat dystrybucyjny i profil informacyjny do pęku kluczy wyznaczonego użytkownika.
źródło
$WORKSPACE
zamiast$PWD
generowaćAPP_PATH
Trudno mi było znaleźć inne odpowiedzi tutaj. Ten artykuł zrobił, jeśli dla mnie. Niektóre ścieżki mogą wymagać absolutności, jak wspomniano w innych odpowiedziach.
Komenda:
źródło
Możesz zrezygnować z kompilacji, tak jak robi to XCode, abyś mógł przetestować i wysłać ten sam plik binarny. Na przykład w moim skrypcie (podobnym do powyższego) buduję moją wersję wydania podpisaną jako kompilacja AdHoc, następnie archiwizuję ją jako IPA do testowania, następnie rezygnuję z certyfikatu dystrybucyjnego i tworzę plik zip, do którego wysyłam Jabłko. Odpowiednia linia to:
źródło
W przypadku Xcode 7 masz znacznie prostsze rozwiązanie. Jedyną dodatkową pracą jest to, że musisz utworzyć plik listy konfiguracji do eksportu archiwum.
(W stosunku do Xcode 6, w wyniku
xcrun xcodebuild -help
,-exportFormat
a-exportProvisioningProfile
opcje nie są wspomniane już więcej, a pierwsza jest usuwana, a ten ostatni jest zastąpiona-exportOptionsPlist
).Krok 1 , zmień katalog na folder zawierający plik .xcodeproject lub .xcworkspace.
Krok 2 , użyj Xcode lub,
/usr/libexec/PlistBuddy exportOptions.plist
aby utworzyć plik listy opcji eksportu. Przy okazjixcrun xcodebuild -help
powie ci, jakie klucze musisz wstawić do pliku Plist.Krok 3 , utwórz plik .xcarchive (w rzeczywistości folder) w następujący sposób (katalog build / zostanie teraz automatycznie utworzony przez Xcode),
Krok 4 , wyeksportuj jako plik .ipa w ten sposób, który różni się od Xcode6
Teraz masz plik IPA w katalogu build /. Wystarczy wysłać go do Apple App Store.
Nawiasem mówiąc, plik ipa utworzony przez Xcode 7 jest znacznie większy niż przez Xcode 6.
źródło
-scheme
i-configuration
opcje określają sposób podpisywania pliku IPA.Podałem krótki opis kroków, które należy wykonać, oraz parametrów, które należy przekazać podczas generowania IPA przy użyciu terrminal poniżej:
Przejdź do folderu zawierającego plik MyApp.xcodeproject w terminalu
Za pomocą polecenia podanego poniżej uzyskasz wszystkie cele aplikacji
Po wykonaniu powyższej komendy otrzymasz listę celów, z których powinieneś wybrać konkretny cel, który chcesz wygenerować .ipa
Powyższe polecenie buduje projekt i tworzy plik .app. Ścieżką do zlokalizowania pliku .app jest
./build/Release-iphoneos/MyApp.app
Po pomyślnym zakończeniu kompilacji wykonaj następującą komendę, aby wygenerować .ipa aplikacji przy użyciu nazwy programisty i profilu administracyjnego, używając poniższej składni:
Objaśnienie każdego parametru w powyższej składni:
źródło
Xcode 8:
Format IPA:
Eksportuje archiwum MyMobileApp.xcarchive jako plik IPA do ścieżki MyMobileApp.ipa przy użyciu profilu udostępniania MyMobileApp Distribution Profile.
Format aplikacji:
Eksportuje archiwum MyMacApp.xcarchive jako plik PKG do ścieżki MyMacApp.pkg przy użyciu aplikacji kation tożsamości tożsamości podpisującej kation ID programisty Aplikacja: Mój zespół. Tożsamość podpisująca instalatora Identyfikator programisty Instalator: Mój zespół jest domyślnie używany do podpisania eksportowanego pakietu.
Strona podręcznika użytkownika Xcodebuild
źródło
Przejdź do folderu, w którym znajduje się katalog główny projektu i:
źródło
Idąc o krok dalej, przesyłanie do iTunesConnect za pomocą wiersza poleceń za pomocą Xcode 7 ! (Zakładając, że zaczynasz od
.ipa
od podpisanego przy użyciu prawidłowego profilu wydania i tożsamości podpisu).Wprowadź
altool
interfejs CLI dla modułu ładującego aplikacje (docs
, strona 38). Ukryta głęboko w strukturze Xcode.app, jest przydatna funkcja, która pozwala nam przesyłać bezpośrednio do ItunesConnect.Po prostu biegnij,
$ altool --upload-app -f file -u username [-p password]
aby przesłać swoją świeżo wybitą.ipa
prosto do Apple. Hasło jest opcjonalne i poprosi o podanie go, jeśli nie podasz tego polecenia.Jeśli podczas weryfikacji wystąpią problemy z aplikacją, konsola je wydrukuje.
Prawdopodobnie będziesz musiał wyeksportować ścieżkę,
altool
jeśli nie chcesz zapisać jej lokalizacji.Otóż to! Po prostu zaloguj się na iTunesConnect.com i wybierz nową wersję do testowania za pomocą testflight.
Uwaga końcowa: Jeśli pojawi się komunikat o błędzie
Exception while launching iTunesTransporter: Transporter not found at path: /usr/local/itms/bin/iTMSTransporter. You should reinstall the application
, możesz postępować zgodnie z sugestią zawartą w tej odpowiedzi SO , aby uruchomić dowiązanie symboliczne do właściwej lokalizacji:źródło
Poprawiając odpowiedź Vincenta, napisałem skrypt, aby to zrobić:
xcodearchive
Pozwala ci zarchiwizować (wygenerować IPA) swój projekt za pomocą wiersza poleceń. Pomyśl o tym jak o siostrze
xcodebuild
dowodzenia, ale o archiwizację.Kod jest dostępny na github: http://github.com/gcerquant/xcodearchive
Jedną z opcji skryptu jest włączenie archiwizacji symboli dSYM w archiwum ze znacznikiem czasu. Nie ma usprawiedliwienia, aby nie przechowywać symboli i nie być w stanie symbolizować dziennika awarii, który możesz później otrzymać.
źródło
Jak zbudować projekt iOS za pomocą polecenia?
I &
I &
Co to jest ExportOptions.plist?
ExportOptions.plist jest wymagany w Xcode. Pozwala określić niektóre opcje podczas tworzenia pliku IPA. Możesz wybrać opcje w przyjaznym interfejsie użytkownika podczas korzystania z Xcode do archiwizowania aplikacji.
Ważne : Metoda wydania i rozwoju różni się w ExportOptions.plist
AppStore:
Rozwój
źródło
wypróbuj xctool, jest to zamiennik xcodebuild firmy Apple, który ułatwia budowanie i testowanie produktów iOS i Mac. Jest to szczególnie pomocne w przypadku ciągłej integracji. Ma kilka dodatkowych funkcji:
Numer 3 jest niezwykle przydatny. Nie wiem, czy ktokolwiek może odczytać dane wyjściowe konsoli xcodebuild, nie mogę, zwykle dało mi to jedną linię z ponad 5000 znakami. Jeszcze trudniejszy do odczytania niż praca dyplomowa.
xctool: https://github.com/facebook/xctool
źródło
jeśli użyjesz następnego narzędzia: https://github.com/nomad/shenzhen
to zadanie jest bardzo łatwe:
źródło
źródło
Po aktualizacji do Xcode 8 okazało się, że Enterprise IPA generuje przez
Więc przełączam się
xcodebuild -exportArchive
i wszystko wróciło do normy.źródło
Masz na myśli opcje sprawdzania poprawności / udostępniania / przesyłania? Myślę, że są one specyficzne dla Xcode i nie są odpowiednie dla narzędzia do budowania z linii poleceń.
Przy odrobinie sprytu, założę się, że możesz zrobić skrypt, który zrobi to za Ciebie. Wygląda na to, że są po prostu przechowywane
~/Library/MobileDevice/Archived Applications/
z UUDI i listwą. Nie mogę sobie również wyobrazić, że tak trudno byłoby dokonać inżynierii wstecznej walidatora.Automatyzacja procesu, który mnie interesuje, polega na wysyłaniu kompilacji do testerów wersji beta. (Ponieważ przesyłanie do App Store zdarza się rzadko, nie mam nic przeciwko robieniu tego ręcznie, zwłaszcza, że często muszę dodawać nowy tekst opisu). Wykonując pseudo Budowanie + Archiwum za pomocą interfejsu CLI Xcode, mogę wyzwalać automatyczne kompilacje z każdego zatwierdzenia kodu, utwórz pliki IPA z osadzonymi profilami udostępniania i prześlij je pocztą e-mail do testerów.
źródło
xcodebuild
i tworzy IPA.