Karakteristik nan bati ak livrezon aplikasyon pou iOS
Nan atik sa a, nou pataje eksperyans nan rasanble ak livrezon aplikasyon iOS bay itilizatè yo, ki estidyo a Plarium Krasnodar te akimile nan pwosesis la nan debogaj CI / CD.
Fòmasyon
Chak moun ki nan yon fason oswa yon lòt patisipe nan devlopman aplikasyon pou aparèy Apple te deja apresye konvenyans kontwovèsyal nan enfrastrikti a. Difikilte yo jwenn tout kote: soti nan meni an pwofil pwomotè nan debug la ak zouti bati.
Gen anpil atik sou "debaz yo" sou entènèt la, kidonk nou pral eseye mete aksan sou bagay prensipal la. Men sa ou bezwen pou konstwi aplikasyon w lan avèk siksè:
yon aparèy ki baze sou macOS aji kòm yon sèvè bati;
pwodwi sètifika pwomotè, ki pral plis itilize pou siyen aplikasyon an;
kreye aplikasyon ak inik ID (Nou ta dwe sonje enpòtans Idantifikatè Bundle a, paske itilizasyon ID wildcard fè li enposib pou itilize anpil fonksyon aplikasyon an, pou egzanp: Domèn Asosye, Notifikasyon Pouse, Apple Sign In ak lòt moun);
Yon sètifika pwomotè dwe pwodwi atravè Keychain sou nenpòt aparèy macOS. Kalite sètifika a trè enpòtan. Tou depan de anviwònman aplikasyon an (Dev, QA, Staging, Pwodiksyon) li pral diferan (Devlopman oswa Distribisyon), menm jan ak kalite pwofil siyati aplikasyon an.
Kalite prensipal Des:
Devlopman - gen entansyon siyen aplikasyon an nan ekip devlopman an, yo itilize yon sètifika Devlopman (tip non iPhone Developer: XXXXX);
Ad Hoc - gen entansyon pou siyen yon aplikasyon tès ak verifikasyon entèn pa depatman QA a, yo itilize sètifika Distribisyon pwomotè a (non kalite iPhone Distribisyon: XXXXX);
App Store - lage bati pou tès ekstèn atravè TestFlight ak telechaje nan App Store la, yo itilize sètifika distribisyon pwomotè a.
Lè jenere Devlopman ak Ad Hoc pwofil, li endike tou lis aparèy, sou kote ou ka enstale yon bati, ki pèmèt ou plis mete restriksyon sou aksè pou itilizatè yo. Pa gen okenn lis aparèy nan pwofil App Store la, paske se TestFlight ki okipe kontwòl aksè pandan tès beta fèmen, ki pral diskite pita.
Pou klè, ou ka prezante pwofil pwomotè a nan fòm yon tablo anba a. Sa fè li pi fasil pou konprann ki paramèt nou bezwen pou asanble ak ki kote pou jwenn yo.
Asanble
Pou fè li pi fasil separe asanble pa pwojè ak anviwònman, nou itilize non pwofil tankou ${ProjectName}_${Instance}, se sa ki, non pwojè + egzanp (depann sou anviwònman aplikasyon an: Dev, QA, GD, Staging, Live, ak sou sa).
Lè yo enpòte nan sèvè bati a, pwofil la chanje non li nan yon ID inik epi li deplase nan katab la /Users/$Username/Library/MobileDevice/Provisioning Profiles (Ki kote $Username koresponn ak non kont itilizatè a nan sèvè bati a).
Gen de fason pou konstwi yon fichye *.ipa - eritaj (PackageApplication) ak modèn (via XcAchive kreyasyon ak ekspòtasyon). Premye metòd la konsidere kòm demode, depi vèsyon 8.3 modil anbalaj dosye app a te retire nan distribisyon Xcode. Pou itilize li, ou bezwen kopye modil la soti nan ansyen Xcode (vèsyon 8.2 ak pi bonè) nan katab la: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
$Method — metòd livrezon, koresponn ak kalite pwofil siyati aplikasyon an, se sa ki, pou Devlopman valè a pral devlopman, pou Ad Hoc - ad-hoc, ak pou App Store - app-store.
$BundleID — ID aplikasyon, ki espesifye nan paramèt aplikasyon an. Ou ka tcheke avèk kòmandman an:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName и $ProfileId - Non pwomotè ak paramèt ID pwofil siyati yo te itilize deja epi yo dwe matche ak valè yo nan paramèt ekspòtasyon yo.
$TeamID — ID ki gen dis chif nan parantèz apre non pwomotè a, egzanp: Pwomotè iPhone: …… (XXXXXXXXXX); ka tcheke nan Keychain.
Apre sa, lè l sèvi avèk kòmand ekspòtasyon an, nou jwenn ki nesesè *.ipa dosye a:
Koulye a, dosye a kolekte bezwen yo dwe lage nan itilizatè a fen, se sa ki enstale sou aparèy la.
Gen anpil sèvis pou distribye Devlopman ak Ad Hoc bati, tankou HockeyApp, AppBlade ak lòt moun, men nan atik sa a nou pral pale sou yon sèvè otonòm pou distribye aplikasyon yo.
Enstale aplikasyon an pou iOS pran plas nan 2 etap:
Resevwa manifest enstalasyon aplikasyon an atravè Sèvis atik yo.
Enstalasyon fichye *.ipa a dapre enfòmasyon ki espesifye nan manifès la atravè HTTPS.
Kidonk, nou premye bezwen jenere yon manifès enstalasyon (tip fichye *.plist) ak lòd la:
Kòm ou ka wè, manifest la gen prèske tout paramèt ki enplike nan bati aplikasyon an.
Vèsyon aplikasyon ($AppVersion) ka tcheke avèk kòmandman an:
defaults read $ProjectDir/Info CFBundleVersion
Paramèt $ipaUrl gen yon lyen dirèk pou telechaje fichye *.ipa a. Soti nan setyèm vèsyon iOS, aplikasyon an dwe enstale atravè HTTPS. Nan wityèm vèsyon an, fòma manifest la chanje yon ti kras: blòk ak anviwònman pou ikon aplikasyon tankou
<images>
<image>...</image>
</images>
Kidonk, pou enstale aplikasyon an, yon senp paj HTML ak yon lyen tankou sa a ase:
Ki kote apiKey и apiIssuer gen valè jaden ki soti nan paj jenerasyon kle API a.
Apre sa, apre validasyon siksè, nou chaje aplikasyon an ak lòd la --upload-app ak paramèt yo menm.
Aplikasyon an pral teste pa Apple nan youn oswa de jou epi yo pral Lè sa a, vin disponib nan tèsteur ekstèn: yo pral voye lyen imèl pou enstalasyon yo.
Yon lòt fason pou telechaje yon aplikasyon atravè altool se sèvi ak Modpas Espesifik pou aplikasyon an.
Pou jwenn Modpas Espesifik aplikasyon an ou bezwen ale nan lyen epi jenere li nan seksyon sekirite a.
Apre sa, ou ta dwe kreye yon dosye sèvè bati nan Keychain ak modpas sa a. Soti nan vèsyon 11 nan Xcode sa a ka fè ak lòd la:
Kòm yon valè paramèt -p ou ka pran valè a $AppPswd nan fòm ki pa chifre (eksplis).
Sepandan, kòm deja mansyone, nan pwen de vi nan pèfòmans, li pi bon yo chwazi API Key pou otorizasyon altool, depi diferan vèsyon nan Xcode gen sèten pwoblèm ("pa wè" Keychain, erè otorizasyon pandan Upload, elatriye).
Sa a tout, aktyèlman. Mwen swete tout moun ki patisipe nan konstriksyon siksè ak degaje san pwoblèm nan App Store la.