En ĉi tiu artikolo, ni dividas la sperton pri muntado kaj liverado de iOS-aplikoj al uzantoj, kiujn la studio Plarium Krasnodar akumulis en la procezo de elpurigado de CI/KD.
Trejnado
Ĉiu persono, kiu estas iel aŭ alia implikita en la disvolviĝo de aplikoj por Apple-aparatoj, jam aprezis la polemikan oportunecon de la infrastrukturo. Malfacilaĵoj troviĝas ĉie: de la menuo de la profila programisto ĝis la iloj pri sencimigo kaj konstruo.
Estas multaj artikoloj pri la "bazoj" en la Interreto, do ni provos reliefigi la ĉefan aferon. Jen kion vi bezonas por konstrui vian aplikaĵon sukcese:
kreita aplikaĵo kun unika ID (la graveco de la Bundle Identifier devas esti notita, ĉar la uzo de ĵokera ID malebligas uzi multajn funkciojn de la aplikaĵo, ekzemple: Asociitaj Domajnoj, Push Notifications, Apple Sign In kaj aliaj);
Atestilo de programisto devas esti generita per Ŝlosilĉeno sur iu ajn macOS-aparato. La speco de atestilo estas tre grava. Depende de la aplika medio (Dev, QA, Staging, Production) ĝi malsamos (Evoluo aŭ Distribuo), same kiel la speco de aplika subskriba profilo.
Ĉefaj specoj de profiloj:
Disvolviĝo - destinita por subskribi la aplikaĵon de la disvolva teamo, estas uzata Disvolva atestilo (tipo nomo iPhone-Ellaboranto: XXXXX);
Ad Hoc - destinita por subskribi testan aplikaĵon kaj internan konfirmon de la departemento QA, la atestilo de Distribuo de la programisto estas uzata (tipo nomo iPhone Distribuo: XXXXX);
App Store - liberigu konstruon por ekstera testado per TestFlight kaj alŝutado al la App Store, la Distribua atestilo de la programisto estas uzata.
Kiam oni generas Evoluajn kaj Ad Hoc-profilojn, ĝi ankaŭ estas indikita aparata listo, sur kiu vi povas instali konstruaĵon, kiu permesas vin plue limigi aliron por uzantoj. Ne estas listo de aparatoj en la App Store-profilo, ĉar alirkontrolo dum fermita beta-testado estas pritraktata de TestFlight, kiu estos diskutita poste.
Por klareco, vi povas prezenti la profilon de la programisto en la formo de tabelo sube. Ĉi tio faciligas kompreni kiajn parametrojn ni bezonas por kunigo kaj de kie akiri ilin.
Asembleo
Por faciligi apartigi arojn laŭ projekto kaj medio, ni uzas profilnomojn kiel ${ProjectName}_${Instance}, tio estas, projektnomo + petskribo (dependas de la aplika medio: Dev, QA, GD, Staging, Live, ktp).
Kiam estas importita al la konstruservilo, la profilo ŝanĝas sian nomon al unika identigilo kaj estas movita al la dosierujo /Users/$Username/Library/MobileDevice/Provisioning Profiles (kie $Username respondas al la uzantkontonomo de la konstruservilo).
Estas du manieroj konstrui *.ipa dosieron - heredaĵo (PackageApplication) kaj moderna (per XcAchive-kreado kaj eksporto). La unua metodo estas konsiderata malnoviĝinta, ĉar ekde versio 8.3 la aplikaĵa dosiera pakmodulo estis forigita de la Xcode-distribuo. Por uzi ĝin, vi devas kopii la modulon de la malnova Xcode (versio 8.2 kaj pli frue) al la dosierujo: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
$Method — livera metodo, respondas al la aplikaĵa subskriba profilotipo, tio estas, por Evoluo la valoro estos evoluo, por Ad Hoc - ad-hoc, kaj por App Store - app-store.
$BundleID — Aplika ID, kiu estas specifita en la aplikaĵaj agordoj. Vi povas kontroli per la komando:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName и $ProfileId - agordoj de la nomo de programisto kaj subskriba profila ID, kiuj antaŭe estis uzataj kaj devas kongrui kun la valoroj en la eksportaj agordoj.
$TeamID — dekcifera identigilo inter krampoj post la nomo de la programisto, ekzemplo: IPhone-Programisto: …… (XXXXXXXXXX); povas esti kontrolita en Ŝlosilĉeno.
Poste, uzante la eksportan komandon, ni akiras la necesan dosieron *.ipa:
Nun la kolektita dosiero devas esti transdonita al la fina uzanto, tio estas, instalita sur la aparato.
Estas multaj servoj por distribuado de Disvolvado kaj Ad Hoc-konstruaĵoj, kiel HockeyApp, AppBlade kaj aliaj, sed en ĉi tiu artikolo ni parolos pri memstara servilo por distribuado de aplikaĵoj.
Instalado de la aplikaĵo por iOS okazas en 2 etapoj:
Ricevante la manifeston pri instalado de aplikaĵo per la Eroj-Servo.
Instalado de la dosiero *.ipa laŭ la informoj specifitaj en la manifesto per HTTPS.
Tiel, ni unue devas generi instalan manifeston (dosiertipo *.plist) per la komando:
Kiel vi povas vidi, la manifesto enhavas preskaŭ ĉiujn parametrojn implikitajn en konstruado de la aplikaĵo.
Aplikversio ($AppVersion) povas esti kontrolita per la komando:
defaults read $ProjectDir/Info CFBundleVersion
Parametro $ipaUrl enhavas rektan ligilon por elŝuti la dosieron *.ipa. De la sepa versio de iOS, la aplikaĵo devas esti instalita per HTTPS. En la oka versio, la formato de la manifesto iomete ŝanĝiĝis: blokoj kun agordoj por aplikaj ikonoj kiel
<images>
<image>...</image>
</images>
Tiel, por instali la aplikaĵon, sufiĉas simpla HTML-paĝo kun ligilo tia:
Kie apiKey и apiIssuer havas kampajn valorojn de la paĝo pri API-ŝlosila generacio.
Poste, post sukcesa validigo, ni ŝarĝas la aplikaĵon per la komando --upload-app kun la samaj parametroj.
La aplikaĵo estos provita de Apple ene de unu aŭ du tagoj kaj tiam estos disponebla por eksteraj testantoj: al ili estos retpoŝtaj ligiloj por instalado.
Alia maniero elŝuti aplikaĵon per altool estas uzi App-Specifika Pasvorto.
Por akiri la App-Specifikan Pasvorton, vi devas iri al ligilo kaj generu ĝin en la sekcio Sekureco.
Poste, vi devus krei konstruan servilon rekordon en Keychain kun ĉi tiu pasvorto. De la versio 11 de Xcode ĉi tio povas esti farita per la komando:
Kiel parametrovaloro -p vi povas preni la valoron $AppPswd en neĉifrita (eksplicita) formo.
Tamen, kiel jam menciite, el la vidpunkto de agado, estas pli bone elekti API-Ŝlosilon por altool-rajtigo, ĉar malsamaj versioj de Xcode havas iujn problemojn ("ne vidas" Ŝlosilĉenon, rajtigajn erarojn dum alŝuto, ktp.).
Tio estas ĉio, fakte. Mi deziras, ke ĉiuj implikitaj sukcesaj konstruoj kaj senpagaj eldonoj en la App Store.