
Skeemoja ja konfiguraatioita
Xcode-projektin asetukset helposti hallintaan
Xcode tarjoaa monipuolisia työkaluja komentoriviltä operointiin. Niiden avulla on mahdollista mm. kääntää sovellus ja lähettää se Applen App Store Connectiin, joko App Store -julkaisua tai TestFlight-betajakelua varten. Komentorivityökaluja voi hyödyntää käännös- ja julkaisuprosessin automatisoinnissa.
Xcoden lisäksi tulee olla asennettuna Xcode Command Line Tools. Xcode ja sen komentorivityökalut luonnollisesti vaativat macOS:n toimiakseen.
Jos sinulla on asennettuna useita versioita Xcodesta (esim. jos käytät myös betaversioita virallisen julkaisun rinnalla), varmista ensin että komentorivityökalut käyttävät haluamaasi versiota.
xcode-select -p
tulostaa tällä hetkellä käytössä olevan Xcoden polun. Haluamasi Xcoden voit valita seuraavasti (esimerkkinä Xcoden oletuspolku):
xcode-select -s /Applications/Xcode.app/Contents/Developer
Jakelukanavasta riippumatta ensimmäinen askel sovelluksen julkaisussa on archive-tiedoston luominen. Xcoden graafisessa käyttöliittymässä archiven luominen tapahtuisi valitsemalla Product → Archive. Komentorivillä se (kuten moni muukin asia) tapahtuu xcodebuild -komennon avulla:
xcodebuild -workspace DemoAppi.xcworkspace -scheme Demoskeema -sdk iphoneos clean archive -archivePath DemoArchive.xcarchive
Tai jos projektissasi ei ole käytössä workspacea, korvaa -workspace -project:lla:
xcodebuild -project DemoAppi.xcodeproj -scheme Demoskeema -sdk iphoneos clean archive -archivePath DemoArchive.xcarchive
-scheme -valinta määrittää käännökseen käytettävän skeeman. Listan skeemoista saat komennolla:
xcodebuild -list
Lisää skeemoista ja konfiguraatioista edellisessä kirjoituksessani.
Xcodebuild-komennon ajamisen jälkeen sinulla pitäisi olla .xcarchive -päätteinen tiedosto.
Se ei kuitenkaan vielä riitä jos tarkoituksena on saada sovellus julkaistua joko App Storessa tai TestFlightissa, tai toimittaa se Ad Hoc -jakeluun. Siihen tarvitaan .IPA-paketti (joka ei valitettavasti liity olueen, vaan tarkoittaa iOS App Store Package:a). IPA voidaan käytetystä code signingista riippuen toimittaa joko App Store Connectiin tai kolmannen osapuolen Ad Hoc -jakelukanaviin (kuten esim. HockeyApp tai Fabric). App Store Connectista sovellus voidaan toimittaa joko Test Flight -betajakeluun tai se voidaan (Applen arvioinnin ja hyväksynnän jälkeen) julkaista App Storessa.
IPA saadaan poimittua äsken luomastamme archivesta samalla xcodebuild-komennolla jota käytimme archiven luomiseen, joskin tällä kertaa hieman eri parametreilla.
xcodebuild -exportArchive -archivePath DemoArchive.xcarchive -exportOptionsPlist exportOptions.plist -exportPath ipa/
Sitä ennen on määriteltävä exportOptions.plist -tiedosto, joka kertoo xcodebuild-komennolle millä tavalla IPA halutaan tuoda archive-tiedostosta.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>signingStyle</key>
<string>manual</string>
<key>method</key>
<string>ad-hoc</string>
<key>teamID</key>
<string>OMAN-TIIMISI-ID-TÄHÄN</string>
<key>signingCertificate</key>
<string>iPhone Distribution: Oman distribution-sertifikaattisi nimi tähän</string>
<key>provisioningProfiles</key>
<dict>
<key>com.demoappi.beta</key>
<string>DemoAppi Ad Hoc</string>
</dict>
</dict>
</plist>
Esimerkki exportOptions.plist -tiedostosta IPA:n tuottamiseen Ad Hoc -jakelua varten.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>signingStyle</key>
<string>manual</string>
<key>method</key>
<string>app-store</string>
<key>teamID</key>
<string>OMAN-TIIMISI-ID-TÄHÄN</string>
<key>signingCertificate</key>
<string>iPhone Distribution: Oman distribution-sertifikaattisi nimi tähän</string>
<key>provisioningProfiles</key>
<dict>
<key>com.demoappi</key>
<string>DemoAppi App Store</string>
</dict>
</dict>
</plist>
Esimerkki exportOptions.plist -tiedostosta IPA:n tuottamiseen App Store Connectia varten.
Oman teamID:si näet App Store Connectin Membership-sivulta.
Xcodebuild on Xcoden versiosta 10 alkaen mahdollistanut myös IPA:n lataamisen App Store Connectiin. Se voidaan määritellä exportOptions.plist -tiedostoon seuraavalla lisäyksellä:
<key>destination</key>
<string>upload</string>
Tällöin IPA ladataan App Store Connectiin -exportArchive:n suorittamisen yhteydessä.
IPA:n lataaminen App Store Connectiin edellyttää että Xcoden Accounts-asetuksiin on määritelty Apple ID joka on liitetty kehitystiimiisi ja tunnuksella on App Store Connectissa riittävät oikeudet IPA:n lataamiseen.
Vaihtoehtoisesti IPA:n lataaminen onnistuu myös altool -komennolla. Se on komentoriviversio Application Loader -sovelluksesta. Xcode 11:n myötä graafisella käyttöliittymällä varustettu Application Loader -sovellus poistui, mutta komentoriviltä toimiva altool on edelleen käytössä.
IPA:n lataaminen altool:lla App Store Connectiin tapahtuu näin:
xcrun altool --upload-app -f DemoAppi.ipa -u tunnuksesi -p salasana
Autentikointi altool:ssa eroaa hieman xcodebuildista; altool mahdollistaa tunnuksen ja salasanan syöttämisen komentoriviltä. Jos et halua antaa salasanaa altoolin parametrina, voit käyttää avainnippuun tallennettua salasanaa:
xcrun altool --upload-app -f DemoAppi.ipa -u tunnuksesi -p @keychain:"Application Loader: tunnuksesi"
Tunnuksena tässäkin tapauksessa toimii Apple ID jolla on oikeudet IPA:n lataamiseen.
Julkaistu 08.10.2019 – Tuomas Ekholm