Karakteristikat e ndërtimit dhe shpërndarjes së aplikacioneve iOS
Në këtë artikull, ne ndajmë përvojën e montimit dhe dërgimit të aplikacioneve iOS për përdoruesit, të cilat studio Plarium Krasnodar ka grumbulluar në procesin e korrigjimit të CI/CD.
Trajnimi
Çdo person që në një mënyrë ose në një tjetër është i përfshirë në zhvillimin e aplikacioneve për pajisjet Apple e ka vlerësuar tashmë komoditetin e diskutueshëm të infrastrukturës. Vështirësitë gjenden kudo: nga menyja e profilit të zhvilluesit deri te mjetet e korrigjimit dhe ndërtimit.
Ka shumë artikuj në lidhje me "bazat" në internet, kështu që ne do të përpiqemi të nxjerrim në pah gjënë kryesore. Ja çfarë ju nevojitet për të ndërtuar me sukses aplikacionin tuaj:
aplikacion i krijuar me unik ID (Rëndësia e Identifikuesit të Paketës duhet të theksohet, sepse përdorimi i ID-së së karakterit wild e bën të pamundur përdorimin e shumë funksioneve të aplikacionit, për shembull: Domenet e lidhura, Njoftimet Push, Hyrja në Apple dhe të tjera);
Një certifikatë zhvilluesi duhet të gjenerohet nëpërmjet Keychain në çdo pajisje macOS. Lloji i certifikatës është shumë i rëndësishëm. Në varësi të mjedisit të aplikacionit (Dev, QA, Skenari, Prodhimi) do të ndryshojë (Zhvillimi ose Shpërndarja), si dhe lloji i profilit të nënshkrimit të aplikacionit.
Llojet kryesore të profileve:
Zhvillimi - i destinuar për nënshkrimin e aplikacionit të ekipit të zhvillimit, përdoret një certifikatë Zhvillimi (emri i llojit iPhone Developer: XXXXX);
Ad Hoc - i destinuar për nënshkrimin e një aplikacioni testimi dhe verifikimin e brendshëm nga departamenti i QA, përdoret certifikata e shpërndarjes së zhvilluesit (emri i tipit iPhone Distribution: XXXXX);
App Store - versioni i lëshimit për testim të jashtëm nëpërmjet TestFlight dhe ngarkimi në App Store, përdoret certifikata e shpërndarjes së zhvilluesit.
Gjatë gjenerimit të profileve të Zhvillimit dhe Ad Hoc, tregohet gjithashtu listën e pajisjeve, mbi të cilin mund të instaloni një ndërtim, i cili ju lejon të kufizoni më tej aksesin për përdoruesit. Nuk ka asnjë listë të pajisjeve në profilin e App Store, pasi kontrolli i aksesit gjatë testimit të mbyllur beta trajtohet nga TestFlight, i cili do të diskutohet më vonë.
Për qartësi, mund të paraqisni profilin e zhvilluesit në formën e një tabele më poshtë. Kjo e bën më të lehtë të kuptojmë se cilat parametra na duhen për montim dhe nga t'i marrim ato.
asamble
Për ta bërë më të lehtë ndarjen e asambleve sipas projektit dhe mjedisit, ne përdorim emrat e profileve si p.sh ${ProjectName}_${Instance}, domethënë emri i projektit + shembulli (varet nga mjedisi i aplikacionit: Dev, QA, GD, Staging, Live, e kështu me radhë).
Kur importohet në serverin e ndërtimit, profili ndryshon emrin e tij në një ID unike dhe zhvendoset në dosje /Users/$Username/Library/MobileDevice/Provisioning Profiles (ku $Username korrespondon me emrin e llogarisë së përdoruesit të serverit të ndërtimit).
Ka dy mënyra për të ndërtuar një skedar *.ipa - trashëgimi (PackageApplication) dhe moderne (përmes krijimit dhe eksportit të XcAchive). Metoda e parë konsiderohet e vjetëruar, pasi që nga versioni 8.3, moduli i paketimit të skedarëve të aplikacionit është hequr nga shpërndarja Xcode. Për ta përdorur atë, duhet të kopjoni modulin nga Xcode i vjetër (versioni 8.2 dhe më i hershëm) në dosje: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
Megjithatë, kjo metodë konsiderohet e vjetëruar nga këndvështrimi i Apple. Është e rëndësishme të merrni *.ipa duke eksportuar nga arkivi i aplikacionit.
$Method — mënyra e dorëzimit, korrespondon me llojin e profilit të nënshkrimit të aplikacionit, domethënë, për Zhvillim vlera do të jetë zhvillimi, për Ad Hoc - ad-hoc, dhe për App Store - App-store.
$BundleID — ID-ja e aplikacionit, e cila specifikohet në cilësimet e aplikacionit. Mund të kontrolloni me komandën:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName и $ProfileId — Cilësimet e ID-së të emrit të zhvilluesit dhe të profilit të nënshkrimit që janë përdorur më parë dhe duhet të përputhen me vlerat në cilësimet e eksportit.
$TeamID — ID dhjetëshifrore në kllapa pas emrit të zhvilluesit, shembull: Zhvilluesi i iPhone: …… (XXXXXXXXXX); mund të kontrollohet në Keychain.
Më pas, duke përdorur komandën e eksportit, marrim skedarin e nevojshëm *.ipa:
Tani skedari i mbledhur duhet t'i dorëzohet përdoruesit fundor, domethënë të instalohet në pajisje.
Ka shumë shërbime për shpërndarjen e ndërtimeve të Zhvillimit dhe Ad Hoc, si HockeyApp, AppBlade dhe të tjera, por në këtë artikull do të flasim për një server të pavarur për shpërndarjen e aplikacioneve.
Instalimi i aplikacionit për iOS bëhet në 2 faza:
Marrja e manifestit të instalimit të aplikacionit përmes Shërbimit të Artikujve.
Instalimi i skedarit *.ipa sipas informacionit të specifikuar në manifest përmes HTTPS.
Kështu, së pari duhet të gjenerojmë një manifest instalimi (lloji i skedarit *.plist) me komandën:
Siç mund ta shihni, manifesti përmban pothuajse të gjithë parametrat e përfshirë në ndërtimin e aplikacionit.
Versioni i aplikacionit ($AppVersion) mund të kontrollohet me komandën:
defaults read $ProjectDir/Info CFBundleVersion
Parametër $ipaUrl përmban një lidhje të drejtpërdrejtë për të shkarkuar skedarin *.ipa. Nga versioni i shtatë i iOS, aplikacioni duhet të instalohet nëpërmjet HTTPS. Në versionin e tetë, formati i manifestit ka ndryshuar pak: blloqe me cilësime për ikonat e aplikacioneve si
<images>
<image>...</image>
</images>
Kështu, për të instaluar aplikacionin, mjafton një faqe e thjeshtë HTML me një lidhje si kjo:
Për nevojat e departamenteve të zhvillimit dhe testimit, Plarium ka krijuar aplikacionin e vet të instalimit të ndërtimit, i cili na jep:
autonominë dhe pavarësinë,
centralizimi i kontrollit të aksesit dhe instalimi i sigurt i aplikacioneve përmes lidhjeve "të përkohshme" të krijuara në mënyrë dinamike,
funksionalitet i zgjerueshëm (d.m.th., ekipi i zhvillimit, nëse është e nevojshme, mund të integrojë funksionet që mungojnë në një aplikacion ekzistues).
Testimi
Tani do të flasim për testimin para publikimit të aplikacionit duke përdorur TestFlight.
Kushtet e kërkuara për shkarkim janë lloji i profilit të nënshkrimit të App Store dhe prania e çelësave të gjeneruar API.
Ka disa mënyra për të shkarkuar aplikacionin:
nëpërmjet Xcode (Organizator),
me anë të mjetit,
nëpërmjet Application Loader për versionet më të vjetra të Xcode (tani Transporter).
Për shkarkimin automatik, përdoret altool, i cili gjithashtu ka dy metoda autorizimi:
Fjalëkalimi specifik për aplikacionin,
Çelësi API.
Preferohet të shkarkoni aplikacionin duke përdorur çelësin API.
Për të marrë çelësin API, shkoni te lidhje dhe gjeneroni një çelës. Përveç vetë çelësit në formatin *.p8, do të na duhen dy parametra: IssuerID dhe KeyID.
Tjetra, importoni çelësin e shkarkuar në serverin e ndërtimit:
ku apiKey и apiIssuer keni vlerat e fushës nga faqja e gjenerimit të çelësave API.
Më pas, pas vërtetimit të suksesshëm, ne ngarkojmë aplikacionin me komandën --upload-app me të njëjtat parametra.
Aplikacioni do të testohet nga Apple brenda një ose dy ditësh dhe më pas do të bëhet i disponueshëm për testuesit e jashtëm: atyre do t'u dërgohen lidhje me email për instalim.
Një mënyrë tjetër për të shkarkuar një aplikacion përmes altool është përdorimi i Fjalëkalimit specifik të aplikacionit.
Për të marrë fjalëkalimin specifik të aplikacionit, duhet të shkoni te lidhje dhe gjeneroni atë në seksionin e Sigurisë.
Më pas, duhet të krijoni një rekord të serverit të ndërtuar në Keychain me këtë fjalëkalim. Nga versioni 11 i Xcode kjo mund të bëhet me komandën:
Si vlerë parametri -p ju mund të merrni vlerën $AppPswd në formë të pakriptuar (të qartë).
Sidoqoftë, siç u përmend tashmë, nga pikëpamja e performancës, është më mirë të zgjidhni çelësin API për autorizimin altool, pasi versione të ndryshme të Xcode kanë probleme të caktuara ("nuk e sheh" Keychain, gabime autorizimi gjatë ngarkimit, etj.).
Kjo është e gjitha, në fakt. I uroj të gjithëve të përfshirë në ndërtime të suksesshme dhe lëshime pa probleme në App Store.