Features fir iOS Uwendungen ze bauen an ze liwweren
An dësem Artikel deele mir d'Erfahrung fir d'Versammlung an d'Liwwerung vun iOS Uwendungen un d'Benotzer, déi de Plarium Krasnodar Studio am Prozess vum Debugging CI / CD gesammelt huet.
Virbereedung
All Persoun, déi op eng oder aner Manéier an der Entwécklung vun Applikatiounen fir Apple Apparater involvéiert ass, huet schonn d'kontroversiell Komfort vun der Infrastruktur appréciéiert. Schwieregkeeten ginn iwwerall fonnt: vum Entwécklerprofilmenü bis zum Debug a bauen Tools.
Et gi vill Artikelen iwwer d'"Basis" um Internet, also wäerte mir probéieren den Haapt Saach ze Highlight. Hei ass wat Dir braucht fir Är Applikatioun erfollegräich ze bauen:
e macOS-baséiert Apparat deen als Build Server handelt;
generéiert Entwéckler Zertifikat, déi weider benotzt gi fir d'Uwendung z'ënnerschreiwen;
erstallt Applikatioun mat eenzegaarteg ID (d'Wichtegkeet vum Bundle Identifier sollt bemierkt ginn, well d'Benotzung vun der Wildcard ID et onméiglech mécht vill Funktiounen vun der Applikatioun ze benotzen, zum Beispill: Associated Domains, Push Notifications, Apple Sign In an anerer);
En Entwécklerzertifika muss iwwer Keychain op all MacOS Apparat generéiert ginn. D'Zort vum Zertifika ass ganz wichteg. Ofhängeg vun der Applikatiounsëmfeld (Dev, QA, Staging, Produktioun) wäert et ënnerscheeden (Entwécklung oder Verdeelung), sou wéi d'Zort vun der Applikatioun Ënnerschrëftprofil.
Haaptarten vu Profiler:
Entwécklung - geduecht fir d'Uwendung vum Entwécklungsteam z'ënnerschreiwen, en Entwécklungszertifika gëtt benotzt (Typ Numm iPhone Entwéckler: XXXXX);
Ad Hoc - geduecht fir eng Testapplikatioun an intern Verifizéierung vum QA Departement z'ënnerschreiwen, den Entwéckler Verdeelungszertifika gëtt benotzt (Typ Numm iPhone Distribution: XXXXX);
App Store - Verëffentlechung bauen fir extern Testen iwwer TestFlight an Eroplueden an den App Store, den Entwéckler Verdeelungszertifika gëtt benotzt.
Wann Dir Entwécklung an Ad Hoc Profiler generéiert, gëtt et och uginn Apparat Lëscht, op deem Dir e Build installéiere kënnt, wat Iech erlaabt den Zougang fir Benotzer weider ze beschränken. Et gëtt keng Lëscht vun Apparater am App Store Profil, well Zougangskontroll während zougemaach Beta Testen vun TestFlight gehandhabt gëtt, déi spéider diskutéiert gëtt.
Fir Kloerheet kënnt Dir de Profil vum Entwéckler a Form vun enger Tabell hei ënnen presentéieren. Dëst mécht et méi einfach ze verstoen wat Parameteren mir brauchen fir Assemblée a wou se kréien aus.
Assemblée
Ze maachen et méi einfach Assemblée vun Projet an Ëmwelt ze trennen, mir benotzen Profil Nimm wéi ${ProjectName}_${Instance}, dat ass, Projet Numm + Instanz (hängt vun der Applikatioun Ëmfeld: Dev, QA, GD, Staging, Live, a sou weider).
Wann importéiert op de Build Server, ännert de Profil säin Numm op eng eenzegaarteg ID a gëtt an den Dossier geplënnert /Users/$Username/Library/MobileDevice/Provisioning Profiles (Wou $Username entsprécht dem Benotzerkontnumm vum Build Server).
Et ginn zwou Weeër fir eng *.ipa Datei ze bauen - Legacy (PackageApplication) a modern (iwwer XcAchive Kreatioun an Export). Déi éischt Method gëtt als obsolet ugesinn, well zënter der Versioun 8.3 ass den App-Datei Verpackungsmodul aus der Xcode Verdeelung geläscht. Fir et ze benotzen, musst Dir de Modul vum alen Xcode (Versioun 8.2 a fréier) an den Dossier kopéieren: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
Wéi och ëmmer, dës Method gëtt aus der Siicht vun Apple als obsolet ugesinn. Et ass relevant fir *.ipa ze kréien andeems Dir aus dem Applikatiounsarchiv exportéiert.
Als éischt musst Dir d'Archiv mam Kommando sammelen:
$Method - Liwwermethod, entsprécht dem Typ vun der Applikatioun Ënnerschrëft Profil, dat heescht, fir Entwécklung wäert de Wäert Entwécklung sinn, fir Ad Hoc - ad-hoc, a fir App Store - App-Store.
$BundleID - Applikatioun ID, déi an der Applikatioun Astellunge spezifizéiert ass. Dir kënnt mam Kommando kontrolléieren:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName и $ProfileId - Entwéckler Numm an Ënnerschrëft Profil ID Astellungen déi virdru benotzt goufen a musse mat de Wäerter an den Export Astellunge passen.
$TeamID - Zéng-Ziffer ID an Klammeren nom Entwéckler Numm, Beispill: iPhone Entwéckler: …… (XXXXXXXXXX); kann an Keychain iwwerpréift ginn.
Als nächst, mam Export Kommando, kréien mir déi néideg *.ipa Datei:
Elo muss de gesammelt Fichier un den Endbenotzer geliwwert ginn, dat heescht, um Apparat installéiert.
Et gi vill Servicer fir Entwécklung an Ad Hoc Builds ze verdeelen, wéi HockeyApp, AppBlade an anerer, awer an dësem Artikel schwätze mir iwwer e Standalone Server fir Uwendungen ze verdeelen.
D'Installatioun vun der Applikatioun fir iOS fënnt an 2 Etappen statt:
Empfang vun der Applikatioun Installatioun Manifest duerch den Items Service.
Installatioun vun der *.ipa Datei no der Informatioun, déi am Manifest iwwer HTTPS spezifizéiert ass.
Also musse mir als éischt en Installatiounsmanifest generéieren (Dateityp *.plist) mam Kommando:
Wéi Dir gesitt, enthält de Manifest bal all d'Parameteren déi an der Applikatioun involvéiert sinn.
Applikatioun Versioun ($AppVersion) kann mam Kommando gepréift ginn:
defaults read $ProjectDir/Info CFBundleVersion
Parameter $ipaUrl enthält en direkten Link fir d'*.ipa Datei erofzelueden. Vun der siwenter Versioun vum iOS muss d'Applikatioun iwwer HTTPS installéiert ginn. An der aachter Versioun huet d'Format vum Manifest liicht geännert: Blocks mat Astellunge fir Applikatiounsikonen wéi
<images>
<image>...</image>
</images>
Also, fir d'Applikatioun z'installéieren, ass eng einfach HTML Säit mat engem Link wéi dësen genuch:
Fir d'Bedierfnesser vun den Entwécklungs- an Testdepartementer huet Plarium seng eege Installatiounsapplikatioun erstallt, déi eis gëtt:
Autonomie an Onofhängegkeet,
Zentraliséierung vun Zougangskontroll a sécher Installatioun vun Uwendungen duerch "temporär" dynamesch erstallt Linken,
erweiterbar Funktionalitéit (dat ass, d'Entwécklungsteam, wann néideg, kann fehlend Funktiounen an eng existent Applikatioun integréieren).
Testen
Elo wäerte mir iwwer Pre-Release Testen vun der Applikatioun schwätzen Testfluch.
Néideg Konditioune fir erofzelueden sinn den App Store Ënnerschrëft Profil Typ an d'Präsenz vun generéiert API Schlësselen.
Et gi verschidde Weeër fir d'Applikatioun erofzelueden:
iwwer Xcode (Organisateur),
via altool,
iwwer Applikatioun Loader fir eeler Versioune vun Xcode (elo Transporter).
Fir automatesch Erofluede gëtt Altool benotzt, deen och zwou Autorisatiounsmethoden huet:
App-spezifesch Passwuert,
API Schlëssel.
Et ass léiwer d'Applikatioun mam API Key erofzelueden.
Fir den API Key ze kréien, gitt op Link a generéiert e Schlëssel. Zousätzlech zu de Schlëssel selwer am *.p8 Format, brauche mir zwee Parameteren: IssuerID an KeyID.
Als nächst importéiert de erofgeluede Schlëssel op de Build Server:
Wou apiKey и apiIssuer hunn Feldwäerter vun der API Schlëssel Generatioun Säit.
Als nächstes, no der erfollegräicher Validatioun, luede mir d'Applikatioun mam Kommando --upload-app mat de selwechte Parameteren.
D'Applikatioun gëtt vun Apple bannent engem oder zwee Deeg getest a gëtt dann fir extern Tester verfügbar: Si gi Linken fir d'Installatioun per E-Mail geschéckt.
Eng aner Manéier fir eng Applikatioun duerch altool erofzelueden ass d'App-spezifesch Passwuert ze benotzen.
Fir d'App-spezifesch Passwuert ze kréien, musst Dir op Link a generéiert et an der Sécherheetssektioun.
Als nächst sollt Dir e Build Server Record an Keychain mat dësem Passwuert erstellen. Vun der Versioun 11 vum Xcode kann dëst mam Kommando gemaach ginn:
Provider listing:
- Long Name - - Short Name -
XXXXXXX XXXXXXXXX
Wéi Dir gesitt, fällt den erfuerderleche Kuerznumm-Wäert (asc-Provider) mam $TeamID-Parameter zesummen, dee mir beim Bau vun der Applikatioun benotzt hunn.
Fir d'Applikatioun an TestFlight ze validéieren an ze lueden, benotzt de Kommando:
Als Parameter Wäert -p Dir kënnt de Wäert huelen $AppPswd an onverschlësselte (explizit) Form.
Wéi och ëmmer, wéi scho gesot, aus der Siicht vun der Leeschtung ass et besser API Key fir Altool Autorisatioun ze wielen, well verschidde Versioune vum Xcode verschidde Probleemer hunn ("gesinn net" Keychain, Autorisatiounsfehler beim Eroplueden, etc.).
Dat ass alles, eigentlech. Ech wënschen jidderengem involvéiert erfollegräich Builds an problemfräi Verëffentlechungen am App Store.