Karatteristiċi tal-bini u l-kunsinna tal-applikazzjonijiet tal-iOS
F'dan l-artikolu, aħna naqsmu l-esperjenza ta 'assemblaġġ u twassil ta' applikazzjonijiet iOS lill-utenti, li l-istudjo Plarium Krasnodar akkumula fil-proċess ta 'debugging CI/CD.
Taħriġ
Kull persuna li hija b'xi mod jew ieħor involuta fl-iżvilupp ta 'applikazzjonijiet għal apparati Apple diġà apprezzat il-konvenjenza kontroversjali ta' l-infrastruttura. Diffikultajiet jinstabu kullimkien: mill-menu tal-profil tal-iżviluppatur sal-għodod tad-debug u l-bini.
Hemm ħafna artikli dwar il-"baŜi" fuq l-Internet, għalhekk se nippruvaw nenfasizzaw il-ħaġa ewlenija. Hawn dak li għandek bżonn biex tibni l-applikazzjoni tiegħek b'suċċess:
applikazzjoni maħluqa bl uniku ID (għandha tiġi nnutata l-importanza tal-Budle Identifier, minħabba li l-użu tal-wildcard ID jagħmilha impossibbli li jintużaw ħafna funzjonijiet tal-applikazzjoni, pereżempju: Dominji Assoċjati, Push Notifiki, Apple Sign In u oħrajn);
Ċertifikat ta 'żviluppatur irid jiġi ġġenerat permezz ta' Keychain fuq kwalunkwe apparat macOS. It-tip ta 'ċertifikat huwa importanti ħafna. Skont l-ambjent tal-applikazzjoni (Dev, QA, Staging, Production) se jkun differenti (Żvilupp jew Distribuzzjoni), kif ukoll it-tip ta 'profil tal-firma tal-applikazzjoni.
Tipi ewlenin ta 'profili:
Żvilupp - maħsub biex jiffirma l-applikazzjoni tat-tim ta 'żvilupp, jintuża ċertifikat ta' Żvilupp (isem tat-tip iPhone Developer: XXXXX);
Ad Hoc - maħsub għall-iffirmar ta 'applikazzjoni tat-test u verifika interna mid-dipartiment tal-QA, jintuża ċ-ċertifikat tad-Distribuzzjoni tal-iżviluppatur (isem tat-tip iPhone Distribution: XXXXX);
App Store - rilaxx build għall-ittestjar estern permezz TestFlight u uploading fl-App Store, iċ-ċertifikat tad-Distribuzzjoni tal-iżviluppatur jintuża.
Meta jiġu ġġenerati profili ta' Żvilupp u Ad Hoc, huwa indikat ukoll lista tal-apparat, li fuqha tista' tinstalla bini, li jippermettilek li tirrestrinġi aktar l-aċċess għall-utenti. M'hemm l-ebda lista ta 'apparati fil-profil tal-App Store, peress li l-kontroll tal-aċċess waqt l-ittestjar beta magħluq huwa mmaniġġjat minn TestFlight, li se jiġi diskuss aktar tard.
Għaċ-ċarezza, tista 'tippreżenta l-profil tal-iżviluppatur fil-forma ta' tabella hawn taħt. Dan jagħmilha aktar faċli li wieħed jifhem liema parametri għandna bżonn għall-assemblaġġ u minn fejn niksbuhom.
Assemblea
Biex tagħmilha aktar faċli li tissepara l-assemblaġġi skont il-proġett u l-ambjent, nużaw ismijiet tal-profil simili ${ProjectName}_${Instance}, jiġifieri, isem tal-proġett + istanza (jiddependi fuq l-ambjent tal-applikazzjoni: Dev, QA, GD, Staging, Live, eċċ).
Meta jiġi importat fis-server tal-bini, il-profil jibdel ismu għal ID unika u jitmexxa fil-folder /Users/$Username/Library/MobileDevice/Provisioning Profiles (Fejn $Username jikkorrispondi għall-isem tal-kont tal-utent tas-server tal-bini).
Hemm żewġ modi kif tibni fajl *.ipa - legat (PackageApplication) u modern (permezz tal-ħolqien u l-esportazzjoni ta 'XcAchive). L-ewwel metodu huwa kkunsidrat skadut, peress li mill-verżjoni 8.3 il-modulu tal-ippakkjar tal-fajl tal-app tneħħa mid-distribuzzjoni Xcode. Biex tużah, trid tikkopja l-modulu mill-Xcode l-antik (verżjoni 8.2 u preċedenti) għall-folder: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
-derivedDataPath — mogħdija biex tniżżel l-applikazzjoni immuntata (*.app).
CODE_SIGN_IDENTITY — l-isem tal-kont tal-iżviluppatur, li jista’ jiġi vverifikat f’Keychain (iPhone Developer: XXXX XXXXXXX, mingħajr TeamID fil-parentesi).
PROVISIONING_PROFILE — Profil ID għall-iffirmar tal-applikazzjoni, li tista’ tinkiseb bil-kmand:
cd "/Users/$Username/Library/MobileDevice/Provisioning Profiles/" && find *.mobileprovision -type f | xargs grep -li ">${ProjectName}_${Instance}<" | sed -e 's/.mobileprovision//'
Jekk l-applikazzjoni tuża profil addizzjonali (per eżempju, għal Notifiki Imbotta), imbagħad minflok PROVISIONING_PROFILE indika:
$Method — metodu ta' konsenja, jikkorrispondi għat-tip ta' profil tal-firma tal-applikazzjoni, jiġifieri, għall-Iżvilupp il-valur se jkun żvilupp, għal Ad Hoc - ad-hoc, u għall-App Store - app-store.
$BundleID — ID tal-applikazzjoni, li hija speċifikata fis-settings tal-applikazzjoni. Tista 'tiċċekkja bil-kmand:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName и $ProfileId — l-isem tal-iżviluppatur u l-issettjar tal-ID tal-profil tal-firma li ntużaw qabel u għandhom jaqblu mal-valuri fis-settings tal-esportazzjoni.
$TeamID — ID b’għaxar ċifri fil-parentesi wara l-isem tal-iżviluppatur, eżempju: Żviluppatur tal-iPhone: …… (XXXXXXXXXX); jistgħu jiġu ċċekkjati fil Keychain.
Sussegwentement, billi tuża l-kmand tal-esportazzjoni, niksbu l-fajl *.ipa meħtieġ:
Issa l-fajl miġbur jeħtieġ li jiġi kkonsenjat lill-utent aħħari, jiġifieri, installat fuq l-apparat.
Hemm ħafna servizzi għad-distribuzzjoni tal-iżvilupp u l-bini Ad Hoc, bħal HockeyApp, AppBlade u oħrajn, iżda f'dan l-artikolu se nitkellmu dwar server waħdu għad-distribuzzjoni tal-applikazzjonijiet.
L-installazzjoni tal-applikazzjoni għall-iOS issir f'2 stadji:
Jirċievi l-manifest tal-installazzjoni tal-applikazzjoni permezz tas-Servizz tal-Oġġetti.
Installazzjoni tal-fajl *.ipa skont l-informazzjoni speċifikata fil-manifest permezz ta' HTTPS.
Għalhekk, l-ewwel għandna bżonn niġġeneraw manifest ta 'installazzjoni (tip ta' fajl *.plist) bil-kmand:
Kif tistgħu taraw, il-manifest fih kważi l-parametri kollha involuti fil-bini tal-applikazzjoni.
Verżjoni tal-applikazzjoni ($AppVersion) jistgħu jiġu ċċekkjati bil-kmand:
defaults read $ProjectDir/Info CFBundleVersion
Parametru $ipaUrl fih link dirett biex tniżżel il-fajl *.ipa. Mis-seba' verżjoni tal-iOS, l-applikazzjoni trid tiġi installata permezz ta' HTTPS. Fit-tmien verżjoni, il-format tal-manifest inbidel ftit: blokki b'settings għall-ikoni tal-applikazzjoni bħal
<images>
<image>...</image>
</images>
Għalhekk, biex tinstalla l-applikazzjoni, paġna HTML sempliċi b'rabta bħal din hija biżżejjed:
Għall-bżonnijiet tad-dipartimenti tal-iżvilupp u l-ittestjar, Plarium ħoloq l-applikazzjoni tal-installazzjoni tal-bini tiegħu stess, li tagħtina:
awtonomija u indipendenza,
ċentralizzazzjoni tal-kontroll tal-aċċess u installazzjoni sigura tal-applikazzjonijiet permezz ta’ links “temporanji” maħluqa dinamikament,
funzjonalità espansibbli (jiġifieri, it-tim ta 'żvilupp, jekk meħtieġ, jista' jintegra funzjonijiet neqsin f'applikazzjoni eżistenti).
Ittestjar
Issa se nitkellmu dwar l-ittestjar qabel ir-rilaxx tal-applikazzjoni bl-użu titjira tat-test.
Il-kundizzjonijiet meħtieġa għat-tniżżil huma t-tip ta’ profil tal-firma tal-App Store u l-preżenza ta’ ċwievet API ġġenerati.
Hemm diversi modi biex tniżżel l-applikazzjoni:
permezz Xcode (Organizzatur),
permezz ta' altool,
permezz ta 'Applikazzjoni Loader għal verżjonijiet eqdem ta' Xcode (issa Transporter).
Għat-tniżżil awtomatiku, jintuża altool, li għandu wkoll żewġ metodi ta 'awtorizzazzjoni:
Password Speċifika għall-App,
Ċavetta API.
Huwa preferibbli li tniżżel l-applikazzjoni billi tuża l-API Key.
Biex tikseb iċ-Ċavetta API, mur fuq rabta u tiġġenera ċavetta. Minbarra ċ-ċavetta nnifisha fil-format *.p8, ikollna bżonn żewġ parametri: IssuerID u KeyID.
Где apiKey и apiIssuer għandhom valuri tal-kamp mill-paġna tal-ġenerazzjoni taċ-ċavetta API.
Sussegwentement, mal-validazzjoni b'suċċess, aħna tagħbija l-applikazzjoni bil-kmand --upload-app bl-istess parametri.
L-applikazzjoni se tiġi ttestjata minn Apple fi żmien jum jew jumejn u mbagħad issir disponibbli għal testers esterni: dawn se jintbagħtu links bl-email għall-installazzjoni.
Mod ieħor biex tniżżel applikazzjoni permezz ta' altool huwa li tuża Password Speċifika għall-App.
Biex tikseb il-Password Speċifika għall-App trid tmur rabta u iġġeneraha fit-taqsima tas-Sigurtà.
Sussegwentement, għandek toħloq rekord tas-server tal-bini f'Keychain b'din il-password. Mill-verżjoni 11 ta 'Xcode dan jista' jsir bil-kmand:
Bħala valur tal-parametru -p tista 'tieħu l-valur $AppPswd f'forma mhux kriptata (espliċita).
Madankollu, kif diġà ssemma, mil-lat tal-prestazzjoni, huwa aħjar li tagħżel API Key għall-awtorizzazzjoni altool, peress li verżjonijiet differenti ta 'Xcode għandhom ċerti problemi ("ma tarax" Keychain, żbalji ta' awtorizzazzjoni waqt it-tlugħ, eċċ.).
Dak kollu, fil-fatt. Nixtieq lil kull min hu involut bini ta' suċċess u rilaxxi mingħajr problemi fl-App Store.