Dina artikel ieu kami babagi pangalaman assembling sarta nganteurkeun aplikasi ios ka pamaké, nu studio Plarium Krasnodar geus akumulasi dina prosés debugging CI / CD.
palatihan
Saban jalma anu dina hiji cara atanapi anu sanés kalibet dina pamekaran aplikasi pikeun alat Apple parantos ngaapresiasi genah kontroversial tina infrastruktur. Kasesahan kapanggih dimana-mana: ti menu profil pamekar ka alat debug sareng ngawangun.
Aya seueur tulisan ngeunaan "dasar" dina Internét, janten kami bakal nyobian nyorot hal utama. Ieu naon anu anjeun peryogikeun pikeun ngawangun aplikasi anjeun suksés:
alat basis macOS anu bertindak salaku server ngawangun;
dihasilkeun sertipikat pamekar, nu bakal salajengna dipaké pikeun asup aplikasi;
aplikasi dijieun kalawan unik ID (pentingna Identifier kebat kudu dicatet, sabab pamakéan wildcard ID ngajadikeun eta teu mungkin migunakeun loba fungsi tina aplikasi nu, contona: pakait domain, Push Bewara, Apple Sign In jeung sajabana);
Sertipikat pamekar kedah didamel ngalangkungan Keychain dina alat macOS mana waé. Jinis sertipikat penting pisan. Gumantung kana lingkungan aplikasi (Dev, QA, Pementasan, Produksi) eta bakal béda (Pamekaran atawa Distribusi), sakumaha bakal tipe profil signature aplikasi.
Jenis utama profil:
Pangwangunan - dimaksudkeun pikeun nandatanganan aplikasi tim pamekaran, sertipikat Pangembangan dianggo (jenis nami iPhone Developer: XXXXX);
Ad Hoc - dimaksudkeun pikeun nandatanganan aplikasi uji sareng verifikasi internal ku departemen QA, sertipikat Distribusi pamekar dianggo (jenis nami Distribusi iPhone: XXXXX);
App Store - ngaleupaskeun ngawangun pikeun nguji éksternal via TestFlight sarta unggah ka App Store, sertipikat Distribusi pamekar dipaké.
Nalika ngahasilkeun propil Pangwangunan sareng Ad Hoc, éta ogé dituduhkeun daptar alat, dimana anjeun tiasa install wangunan, nu ngidinan Anjeun pikeun salajengna ngawatesan aksés pikeun pamaké. Henteu aya daptar alat dina profil App Store, sabab kontrol aksés nalika tés béta katutup diurus ku TestFlight, anu bakal dibahas engké.
Pikeun kajelasan, anjeun tiasa nampilkeun profil pamekar dina bentuk tabel di handap. Ieu ngagampangkeun ngartos parameter naon anu urang peryogikeun pikeun ngarakit sareng dimana kéngingkeunana.
Majelis
Sangkan leuwih gampang pikeun misahkeun rakitan ku proyék jeung lingkungan, kami nganggo ngaran profil kawas ${ProjectName}_${Instance}, nyaeta, ngaran proyék + conto (gumantung kana lingkungan aplikasi: Dev, QA, GD, Pementasan, Live, jeung saterusna).
Nalika diimpor ka server ngawangun, profilna robih namina janten ID unik sareng dipindahkeun kana polder /Users/$Username/Library/MobileDevice/Provisioning Profiles (Dimana $Username pakait jeung ngaran akun pamaké tina ngawangun server).
Aya dua cara pikeun ngawangun file * .ipa - warisan (PackageApplication) jeung modern (via XcAchive kreasi sarta ékspor). Metodeu kahiji dianggap luntur, sabab saprak versi 8.3 modul bungkusan file aplikasi parantos dipiceun tina distribusi Xcode. Pikeun ngagunakeun éta, anjeun kedah nyalin modul tina Xcode lami (versi 8.2 sareng sateuacana) kana polder: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
$Method - Metoda pangiriman, pakait jeung tipe profil signature aplikasi, nyaeta, keur Development nilai bakal ngembangkeun, pikeun Ad Hoc - ad-hoc, sarta App Store - app-store.
$BundleID - ID Aplikasi, anu ditunjuk dina setélan aplikasi. Anjeun tiasa pariksa ku paréntah:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName и $ProfileId - Setélan ngaran pamekar sareng tanda tangan ID profil anu dianggo sateuacana sareng kedah cocog sareng nilai dina setélan ékspor.
$TeamID — sapuluh-angka ID dina kurung sanggeus ngaran pamekar urang, conto: iPhone Pamekar: …… (XXXXXXXXXX); bisa dipariksa di Keychain.
Teras, nganggo paréntah ékspor, urang kéngingkeun file *.ipa anu diperyogikeun:
Ayeuna file anu dikumpulkeun kedah dikirimkeun ka pangguna akhir, nyaéta, dipasang dina alat.
Aya seueur jasa pikeun ngadistribusikaeun Pangwangunan sareng Ad Hoc ngawangun, sapertos HockeyApp, AppBlade sareng anu sanésna, tapi dina tulisan ieu kami bakal ngobrol ngeunaan server mandiri pikeun nyebarkeun aplikasi.
Masang aplikasi pikeun ios lumangsung dina 2 tahap:
Narima manifest instalasi aplikasi ngaliwatan Service Item.
Pamasangan file * .ipa nurutkeun informasi dieusian dina manifest via HTTPS.
Ku kituna, urang mimitina kudu ngahasilkeun manifest instalasi (tipe file *.plist) jeung paréntah:
Sakumaha anjeun tiasa tingali, manifes ngandung ampir sadaya parameter anu aya dina ngawangun aplikasi.
Vérsi aplikasi ($AppVersion) tiasa dipariksa ku paréntah:
defaults read $ProjectDir/Info CFBundleVersion
parameter $ipaUrl ngandung tumbu langsung pikeun ngundeur file * .ipa. Ti versi katujuh ios, aplikasi kudu dipasang via HTTPS. Dina versi kadalapan, format tina manifest geus rada robah: blok jeung setelan pikeun ikon aplikasi kawas
<images>
<image>...</image>
</images>
Janten, pikeun masang aplikasi, halaman HTML saderhana sareng tautan sapertos kieu cekap:
Pikeun kaperluan departemén pamekaran sareng uji, Plarium parantos nyiptakeun aplikasi pamasangan ngawangun sorangan, anu masihan kami:
otonomi jeung kamerdikaan,
sentralisasi kontrol aksés sareng pamasangan aplikasi anu aman ngalangkungan tautan "samentara" anu diciptakeun sacara dinamis,
fungsionalitas anu tiasa dilegakeun (nyaéta, tim pamekar, upami diperyogikeun, tiasa ngahijikeun fungsi anu leungit kana aplikasi anu tos aya).
Tés
Ayeuna urang bakal ngobrol ngeunaan uji pre-release tina aplikasi anu nganggo Lampir.
Kaayaan anu dibutuhkeun pikeun diunduh nyaéta jinis profil tandatangan App Store sareng ayana konci API anu dihasilkeun.
Aya sababaraha cara pikeun ngundeur aplikasi:
ngaliwatan Xcode (Organizer),
via altool,
via Aplikasi Loader pikeun versi heubeul tina Xcode (ayeuna Transporter).
Pikeun unduh otomatis, altool dianggo, anu ogé ngagaduhan dua metode otorisasi:
Sandi Khusus Aplikasi,
Konci API.
Hadé pisan mun éta ngundeur aplikasi maké API Key.
Pikeun kéngingkeun konci API, angkat ka link sarta ngahasilkeun konci. Salian konci sorangan dina * .p8 format, urang bakal butuh dua parameter: IssuerID na KeyID.
Teras, impor konci anu diunduh kana server ngawangun:
di mana apiKey и apiIssuer gaduh nilai widang tina kaca generasi konci API.
Salajengna, saatos validasi anu suksés, kami ngamuat aplikasi nganggo paréntah --upload-app kalawan parameter sarua.
Aplikasina bakal diuji ku Apple dina hiji atanapi dua dinten teras bakal sayogi pikeun panguji éksternal: aranjeunna bakal dikirimkeun tautan email pikeun pamasangan.
Cara séjén pikeun ngundeur aplikasi ngaliwatan altool nyaéta ngagunakeun Sandi Khusus Aplikasi.
Pikeun kéngingkeun Sandi Khusus Aplikasi anjeun kedah angkat ka link sarta ngahasilkeun eta dina bagian Kaamanan.
Salajengna, anjeun kedah nyiptakeun catetan server ngawangun dina Keychain nganggo kecap akses ieu. Tina vérsi 11 Xcode ieu tiasa dilakukeun ku paréntah:
Provider listing:
- Long Name - - Short Name -
XXXXXXX XXXXXXXXX
Sakumaha anjeun tiasa tingali, nilai Ngaran pondok diperlukeun (asc-panyadia) coincides jeung $ TeamID parameter nu kami dipaké nalika ngawangun aplikasi.
Pikeun mastikeun sareng ngamuat aplikasi kana TestFlight, paké paréntah:
Salaku nilai parameter -p anjeun tiasa nyandak nilai $AppPswd dina wangun unencrypted (eksplisit).
Sanajan kitu, sakumaha geus disebutkeun, ti sudut pandang kinerja, éta hadé pikeun milih API Key pikeun otorisasina altool, saprak versi béda tina Xcode boga masalah tangtu ("teu ningali" Keychain, kasalahan otorisasina salila unggah, jsb).
Éta sadayana, sabenerna. Abdi ngarepkeun sadayana anu aub dina ngawangun suksés sareng rilis anu teu aya masalah dina App Store.