Funzioni di custruisce è furnisce l'applicazioni iOS
In questu articulu, spartemu l'esperienza di l'assemblea è di furnisce l'applicazioni iOS à l'utilizatori, chì u studio Plarium Krasnodar hà accumulatu in u prucessu di debugging CI / CD.
A preparazione di
Ogni persona chì hè in un modu o un altru implicatu in u sviluppu di l'applicazioni per i dispositi Apple hà digià apprezzatu a cunvenzione cuntruversa di l'infrastruttura. E difficultà si trovanu in ogni locu: da u menu di u prufilu di u sviluppatore à l'arnesi di debug è di custruisce.
Ci sò assai articuli nantu à i "basamenti" in Internet, cusì avemu da pruvà à mette in risaltu u principale. Eccu ciò chì avete bisognu per custruisce a vostra applicazione cù successu:
applicazione creatu cun unicu ID (l'impurtanza di u Bundle Identifier deve esse nutatu, perchè l'usu di l'ID wildcard rende impussibile di utilizà parechje funzioni di l'applicazione, per esempiu: Domains Associati, Push Notifications, Apple Sign In è altri);
Un certificatu di sviluppatore deve esse generatu via Keychain in qualsiasi dispositivu macOS. U tipu di certificatu hè assai impurtante. Sicondu l'ambiente di l'applicazione (Dev, QA, Staging, Production) serà diversu (Sviluppu o Distribuzione), cum'è u tipu di prufilu di firma di l'applicazione.
Tipi principali di profili:
Sviluppu - destinatu à firmà l'applicazione di u squadra di sviluppu, un certificatu di Sviluppu hè utilizatu (nome di tipu iPhone Developer: XXXXX);
Ad Hoc - destinatu à firmà una applicazione di prova è verificazione interna da u dipartimentu QA, u certificatu di Distribuzione di u sviluppatore hè utilizatu (nome di tipu iPhone Distribution: XXXXX);
App Store - liberate a compilazione per a prova esterna via TestFlight è caricate in l'App Store, u certificatu di Distribuzione di u sviluppatore hè utilizatu.
Quandu generà Profili di Sviluppu è Ad Hoc, hè ancu indicatu lista di dispositivi, nantu à quale pudete installà una custruzzione, chì permette di limità più l'accessu per l'utilizatori. Ùn ci hè micca una lista di i dispositi in u prufilu App Store, postu chì u cuntrollu di l'accessu durante a prova beta chjusa hè trattatu da TestFlight, chì serà discututu dopu.
Per a chiarezza, pudete presentà u prufilu di u sviluppatore in a forma di una tabella sottu. Questu facenu più faciule per capiscenu quali paràmetri avemu bisognu per l'assemblea è da induve ottene.
Assemblea
Per fà più faciule per separà l'assemblee per prughjettu è ambiente, usemu nomi di prufilu cum'è ${ProjectName}_${Instance}, vale à dì, nome di prughjettu + istanza (dipende da l'ambiente di l'applicazione: Dev, QA, GD, Staging, Live, etc.).
Quandu hè impurtatu à u servitore di custruzzione, u prufilu cambia u so nome à un ID unicu è hè spustatu à u cartulare /Users/$Username/Library/MobileDevice/Provisioning Profiles (Induva $Username currisponde à u nome di u contu d'utilizatore di u servitore di creazione).
Ci hè duie manere di custruisce un schedariu *.ipa - legatu (PackageApplication) è mudernu (via creazione è esportazione XcAchive). U primu metudu hè cunsideratu obsoletu, postu chì da a versione 8.3 u modulu di imballaggio di u schedariu app hè statu eliminatu da a distribuzione Xcode. Per aduprà, avete bisognu di copià u modulu da u vechju Xcode (versione 8.2 è precedente) à u cartulare: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
-workspace - percorso à u schedariu di prughjettu.
-scheme - u schema utilizatu, specificatu in u prugettu.
-derivedDataPath - percorso per scaricà l'applicazione assemblata (*.app).
CODE_SIGN_IDENTITY - u nome di u cuntu di sviluppatore, chì pò esse verificatu in Keychain (Sviluppatore iPhone: XXXX XXXXXXX, senza TeamID in parentesi).
PROVISIONING_PROFILE - ID di prufilu per firmà l'applicazione, chì pò esse ottenuta cù u cumandimu:
cd "/Users/$Username/Library/MobileDevice/Provisioning Profiles/" && find *.mobileprovision -type f | xargs grep -li ">${ProjectName}_${Instance}<" | sed -e 's/.mobileprovision//'
Se l'applicazione usa un prufilu supplementu (per esempiu, per Push Notifications), invece di PROVISIONING_PROFILE indicà:
A diffarenza si trova in u metudu di assemblea è l'opzioni SYNCHRONOUS_SYMBOL_PROCESSING, chì disattiveghja u scaricamentu di u simbulu à u tempu di creazione.
Dopu avemu bisognu di generà un schedariu cù i paràmetri di l'esportazione:
$Method - metudu di consegna, currisponde à u tipu di prufilu di firma di l'applicazione, vale à dì, per u Sviluppu u valore serà u sviluppu, per Ad Hoc - ad-hoc, è per l'App Store - app-store.
$BundleID - ID di l'applicazione, chì hè specificatu in i paràmetri di l'applicazione. Pudete cuntrollà cù u cumandimu:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName и $ProfileId - paràmetri di u nome di u sviluppatore è di l'ID di u prufilu di firma chì sò stati utilizati prima è devenu cuncordà i valori in i paràmetri di esportazione.
$TeamID - ID di dece cifre in parentesi dopu u nome di u sviluppatore, esempiu: Sviluppatore iPhone: …… (XXXXXXXXXX); pò esse verificatu in Keychain.
Dopu, usendu u cumandamentu di l'esportazione, uttene u schedariu *.ipa necessariu:
Avà u schedariu cullatu deve esse mandatu à l'utilizatore finale, vale à dì, installatu nantu à u dispusitivu.
Ci hè parechje servizii per a distribuzione di Sviluppu è Ad Hoc builds, cum'è HockeyApp, AppBlade è altri, ma in questu articulu parlemu di un servitore standalone per a distribuzione di applicazioni.
L'installazione di l'applicazione per iOS si svolge in 2 fasi:
Riceve u manifestu di l'installazione di l'applicazione attraversu u Serviziu di Articuli.
A stallazione di u schedariu *.ipa secondu l'infurmazioni specificate in u manifestu via HTTPS.
Cusì, avemu prima bisognu di generà un manifestu di installazione (file type *.plist) cù u cumandimu:
Comu pudete vede, u manifestu cuntene quasi tutti i paràmetri implicati in a custruzione di l'applicazione.
Versione di l'applicazione ($AppVersion) pò esse verificatu cù u cumandimu:
defaults read $ProjectDir/Info CFBundleVersion
Parameter $ipaUrl cuntene un ligame direttu per scaricà u schedariu *.ipa. Da a settima versione di iOS, l'applicazione deve esse installata via HTTPS. In l'ottava versione, u furmatu di u manifestu hà cambiatu pocu: blocchi cù paràmetri per l'icone di l'applicazione cum'è
<images>
<image>...</image>
</images>
Cusì, per installà l'applicazione, basta una pagina HTML simplice cù un ligame cum'è questu:
Per i bisogni di i dipartimenti di sviluppu è teste, Plarium hà creatu a so propria applicazione di stallazione di custruzzione, chì ci dà:
l'autonomia è l'indipendenza,
centralizazione di u cuntrollu di l'accessu è l'installazione sicura di l'applicazioni per mezu di ligami "temporanei" creati dinamicamente,
funziunalità espansibile (vale à dì, a squadra di sviluppu, se ne necessariu, pò integrà e funzioni mancanti in una applicazione esistente).
Prucessioni
Avà parlemu di a prova di pre-release di l'applicazione utilizendu TestFlight.
I cundizioni necessarii per u scaricamentu sò u tipu di prufilu di firma di l'App Store è a presenza di e chjave API generate.
Ci hè parechje manere di scaricà l'applicazione:
via Xcode (Organizzatore),
via altool,
via Application Loader per versioni più vechje di Xcode (ora Transporter).
Per u scaricamentu automaticu, hè utilizatu altool, chì hà ancu dui metudi d'autorizazione:
Password specifica per l'app,
Chiave API.
Hè preferibile scaricà l'applicazione cù a chjave API.
Per uttene a chjave API, andate à a lea è generà una chjave. In più di a chjave stessu in u formatu *.p8, avemu bisognu di dui parametri: IssuerID è KeyID.
In seguitu, impurtate a chjave scaricata à u servitore di custruzzione:
Induve apiKey и apiIssuer avè valori di campu da a pagina di generazione di chjave API.
Dopu, dopu a validazione successu, carchemu l'applicazione cù u cumandamentu --upload-app cù i stessi paràmetri.
L'applicazione serà pruvata da Apple in un o dui ghjorni è diventeranu dopu dispunibuli per i testatori esterni: saranu ligami per e-mail per a stallazione.
Un altru modu per scaricà una applicazione attraversu altool hè di utilizà una password specifica per l'app.
Per ottene u Password-Specific App vi tocca à andà à a lea è generà in a sezione Sicurezza.
Dopu, duvete creà un registru di u servitore di custruzzione in Keychain cù questa password. Da a versione 11 di Xcode, questu pò esse fattu cù u cumandimu:
Cum'è un valore di paràmetru -p pudete piglià u valore $AppPswd in forma non criptata (esplicita).
Tuttavia, cum'è digià dettu, da u puntu di vista di u funziunamentu, hè megliu di sceglie API Key per l'autorizazione altool, postu chì e diverse versioni di Xcode anu certi prublemi ("ùn vede" Keychain, errori d'autorizazione durante u upload, etc.).
Hè tuttu, in realtà. Vogliu chì tutti quelli chì participanu à custruzzioni riesciuti è versioni senza prublemi in l'App Store.