Ing artikel iki, kita nuduhake pengalaman ngrakit lan ngirim aplikasi iOS menyang pangguna, sing studio Plarium Krasnodar wis diklumpukake ing proses debugging CI / CD.
Latihan
Saben wong sing melu pangembangan aplikasi kanggo piranti Apple kanthi cara siji utawa liyane, wis ngormati kenyamanan infrastruktur sing kontroversial. Kesulitan ditemokake ing endi wae: saka menu profil pangembang nganti alat debug lan mbangun.
Ana akeh artikel babagan "dasar" ing Internet, mula kita bakal nyoba nyorot perkara utama. Mangkene sing dibutuhake kanggo nggawe aplikasi kanthi sukses:
digawe aplikasi karo unik ID (Pentinge Identifier Bundle kudu dicathet, amarga panggunaan wildcard ID ndadekake ora bisa nggunakake akeh fungsi aplikasi kasebut, contone: Domain Gegandhengan, Notifikasi Push, Apple Sign In lan liya-liyane);
Sertifikat pangembang kudu digawe liwat Keychain ing piranti macOS apa wae. Jinis sertifikat penting banget. Gumantung ing lingkungan aplikasi (Dev, QA, Staging, Produksi) bakal beda-beda (Pengembangan utawa Distribusi), uga jinis profil teken aplikasi.
Jenis profil utama:
Pangembangan - dimaksudake kanggo mlebu aplikasi tim pangembangan, sertifikat Pembangunan digunakake (jinis jeneng Pangembang iPhone: XXXXX);
Ad Hoc - dimaksudaké kanggo mlebu aplikasi tes lan verifikasi internal dening departemen QA, sertifikat Distribusi pangembang digunakake (jinis jeneng Distribusi iPhone: XXXXX);
App Store - release mbangun kanggo testing external liwat TestFlight lan ngunggah menyang App Store, certificate Distribusi pangembang digunakake.
Nalika ngasilake Profil Development lan Ad Hoc, uga dituduhake dhaptar piranti, ing ngendi sampeyan bisa nginstal bangunan, sing ngidini sampeyan mbatesi akses luwih akeh kanggo pangguna. Ora ana dhaptar piranti ing profil App Store, amarga kontrol akses sajrone tes beta tertutup ditangani dening TestFlight, sing bakal dibahas mengko.
Kanggo gamblang, sampeyan bisa nampilake profil pangembang ing wangun tabel ing ngisor iki. Iki nggawe luwih gampang kanggo ngerti paramèter apa sing dibutuhake kanggo perakitan lan saka ngendi.
Majelis
Kanggo nggawe luwih gampang kanggo misahake rakitan dening project lan lingkungan, kita nggunakake jeneng profil kaya ${ProjectName}_${Instance}, yaiku, jeneng proyek + conto (gumantung ing lingkungan aplikasi: Dev, QA, GD, Staging, Live, lan liya-liyane).
Nalika diimpor menyang server mbangun, profil ngganti jeneng dadi ID unik lan dipindhah menyang folder /Users/$Username/Library/MobileDevice/Provisioning Profiles (Endi $Username cocog karo jeneng akun pangguna server mbangun).
Ana rong cara kanggo mbangun file * .ipa - warisan (PackageApplication) lan modern (liwat XcAchive nggawe lan ekspor). Cara pisanan dianggep lungse, amarga wiwit versi 8.3 modul paket file app wis dibusak saka distribusi Xcode. Kanggo nggunakake, sampeyan kudu nyalin modul saka Xcode lawas (versi 8.2 lan sadurungé) menyang folder: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
$Method - cara pangiriman, cocog karo jinis profil teken aplikasi, yaiku, kanggo Pangembangan nilai bakal dadi pangembangan, kanggo Ad Hoc - ad-hoc, lan kanggo App Store - app-store.
$BundleID - ID Aplikasi, sing ditemtokake ing setelan aplikasi. Sampeyan bisa mriksa kanthi printah:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName и $ProfileId - jeneng pangembang lan setelan ID profil teken sing digunakake sadurunge lan kudu cocog karo nilai ing setelan ekspor.
$TeamID — ID sepuluh digit ing kurung sawise jeneng pangembang, contone: Pangembang iPhone: …… (XXXXXXXXXX); bisa dicenthang ing Keychain.
Sabanjure, nggunakake printah ekspor, kita entuk file *.ipa sing dibutuhake:
Saiki file sing diklumpukake kudu dikirim menyang pangguna pungkasan, yaiku, diinstal ing piranti kasebut.
Ana akeh layanan kanggo nyebarake Development lan Ad Hoc mbangun, kayata HockeyApp, AppBlade lan liya-liyane, nanging ing artikel iki kita bakal ngomong babagan server mandiri kanggo nyebarake aplikasi.
Nginstal aplikasi kanggo iOS njupuk Panggonan ing 2 orane tumrap sekolah:
Nampa manifest instalasi aplikasi liwat Layanan Item.
Instalasi file *.ipa miturut informasi kasebut ing manifest liwat HTTPS.
Dadi, kita kudu nggawe manifest instalasi (jinis file *.plist) kanthi prentah:
Kaya sing sampeyan ngerteni, manifes ngemot meh kabeh paramèter sing ana ing mbangun aplikasi kasebut.
Versi aplikasi ($AppVersion) bisa dipriksa nganggo printah:
defaults read $ProjectDir/Info CFBundleVersion
Parameter $ipaUrl ngandhut link langsung kanggo ngundhuh * .ipa file. Saka iOS versi kapitu, aplikasi kasebut kudu diinstal liwat HTTPS. Ing versi kaping wolu, format manifes wis rada owah: pamblokiran kanthi setelan kanggo lambang aplikasi kaya
<images>
<image>...</image>
</images>
Mangkono, kanggo nginstal aplikasi, kaca HTML prasaja kanthi pranala kaya iki cukup:
Kanggo kabutuhan departemen pangembangan lan tes, Plarium wis nggawe aplikasi instalasi mbangun dhewe, sing menehi kita:
otonomi lan kamardikan,
sentralisasi kontrol akses lan instalasi aplikasi sing aman liwat tautan sing digawe kanthi dinamis "sementara",
fungsi sing bisa ditambahi (yaiku, tim pangembang, yen perlu, bisa nggabungake fungsi sing ilang menyang aplikasi sing wis ana).
Tes
Saiki kita bakal ngomong babagan tes pra-rilis aplikasi sing digunakake TestFlight.
Kahanan sing dibutuhake kanggo ndownload yaiku jinis profil tandha App Store lan anane kunci API sing digawe.
Ana sawetara cara kanggo ndownload aplikasi:
liwat Xcode (Organizer),
liwat altool,
liwat Application Loader kanggo versi lawas saka Xcode (saiki Transporter).
Kanggo ngundhuh otomatis, altool digunakake, sing uga nduweni rong cara wewenang:
Sandi Khusus Aplikasi,
Kunci API.
Luwih becik ndownload aplikasi kasebut nggunakake Kunci API.
Kanggo entuk Kunci API, pindhah menyang link lan ngasilake kunci. Saliyane tombol dhewe ing * .p8 format, kita kudu loro paramèter: IssuerID lan KeyID.
Sabanjure, ngimpor kunci sing diunduh menyang server mbangun:
Ngendi apiKey и apiIssuer duwe nilai lapangan saka kaca generasi kunci API.
Sabanjure, sawise validasi sukses, kita mbukak aplikasi kanthi printah --upload-app kanthi paramèter sing padha.
Aplikasi kasebut bakal dites dening Apple sajrone siji utawa rong dina lan bakal kasedhiya kanggo panguji eksternal: bakal dikirimi email link kanggo instalasi.
Cara liya kanggo ndownload aplikasi liwat altool yaiku nggunakake Sandi Khusus Aplikasi.
Kanggo njaluk Sandi Khusus App sampeyan kudu pindhah menyang link lan generate ing bagean Keamanan.
Sabanjure, sampeyan kudu nggawe rekaman server mbangun ing Keychain nganggo sandhi iki. Saka versi 11 Xcode iki bisa ditindakake kanthi prentah:
Provider listing:
- Long Name - - Short Name -
XXXXXXX XXXXXXXXX
Kaya sing sampeyan ngerteni, nilai Jeneng Singkat sing dibutuhake (panyedhiya asc) cocog karo parameter $ TeamID sing digunakake nalika mbangun aplikasi kasebut.
Kanggo validasi lan mbukak aplikasi menyang TestFlight, gunakake printah:
Minangka nilai parameter -p sampeyan bisa njupuk nilai $AppPswd ing wangun unencrypted (eksplisit).
Nanging, kaya sing wis kasebut, saka sudut pandang kinerja, luwih becik milih API Key kanggo wewenang altool, amarga versi Xcode sing beda-beda duwe masalah tartamtu ("ora weruh" Keychain, kesalahan wewenang nalika upload, lsp.).
Sing kabeh, bener. Muga-muga kabeh wong sing melu mbangun sukses lan rilis tanpa masalah ing App Store.