Dalam artikel ini, kami berkongsi pengalaman memasang dan menghantar aplikasi iOS kepada pengguna, yang telah dikumpulkan oleh studio Plarium Krasnodar dalam proses penyahpepijatan CI/CD.
Latihan
Setiap orang yang terlibat dalam satu atau lain cara dalam pembangunan aplikasi untuk peranti Apple telah menghargai kemudahan kontroversi infrastruktur. Kesukaran ditemui di mana-mana: daripada menu profil pembangun kepada alat nyahpepijat dan binaan.
Terdapat banyak artikel mengenai "asas" di Internet, jadi kami akan cuba menyerlahkan perkara utama. Inilah yang anda perlukan untuk membina aplikasi anda dengan jayanya:
peranti berasaskan macOS yang bertindak sebagai pelayan binaan;
dihasilkan sijil pemaju, yang akan digunakan selanjutnya untuk menandatangani permohonan;
aplikasi yang dicipta dengan unik ID (kepentingan Pengecam Bundle perlu diberi perhatian, kerana penggunaan ID kad bebas menjadikannya mustahil untuk menggunakan banyak fungsi aplikasi, contohnya: Domain Berkaitan, Pemberitahuan Tolak, Log Masuk Apple dan lain-lain);
Sijil pembangun mesti dijana melalui Rantai Kunci pada mana-mana peranti macOS. Jenis sijil sangat penting. Bergantung pada persekitaran aplikasi (Dev, QA, Staging, Production) ia akan berbeza (Pembangunan atau Pengedaran), begitu juga dengan jenis profil tandatangan aplikasi.
Jenis profil utama:
Pembangunan - bertujuan untuk menandatangani permohonan pasukan pembangunan, sijil Pembangunan digunakan (nama jenis Pembangun iPhone: XXXXX);
Ad Hoc - bertujuan untuk menandatangani permohonan ujian dan pengesahan dalaman oleh jabatan QA, sijil Pengedaran pembangun digunakan (nama jenis Pengedaran iPhone: XXXXX);
App Store - keluarkan binaan untuk ujian luaran melalui TestFlight dan muat naik ke App Store, sijil Pengedaran pembangun digunakan.
Apabila menjana profil Pembangunan dan Ad Hoc, ia juga ditunjukkan senarai peranti, di mana anda boleh memasang binaan, yang membolehkan anda menyekat lagi akses untuk pengguna. Tiada senarai peranti dalam profil App Store, kerana kawalan akses semasa ujian beta tertutup dikendalikan oleh TestFlight, yang akan dibincangkan kemudian.
Untuk kejelasan, anda boleh membentangkan profil pembangun dalam bentuk jadual di bawah. Ini menjadikannya lebih mudah untuk memahami parameter yang kami perlukan untuk pemasangan dan dari mana untuk mendapatkannya.
Perhimpunan
Untuk memudahkan pengasingan perhimpunan mengikut projek dan persekitaran, kami menggunakan nama profil seperti ${ProjectName}_${Instance}, iaitu nama projek + contoh (bergantung pada persekitaran aplikasi: Dev, QA, GD, Staging, Live dan sebagainya).
Apabila diimport ke pelayan binaan, profil menukar namanya kepada ID unik dan dialihkan ke folder /Users/$Username/Library/MobileDevice/Provisioning Profiles (di mana $Username sepadan dengan nama akaun pengguna pelayan binaan).
Terdapat dua cara untuk membina fail *.ipa - warisan (PackageApplication) dan moden (melalui penciptaan dan eksport XcAchive). Kaedah pertama dianggap usang, kerana sejak versi 8.3 modul pembungkusan fail aplikasi telah dialih keluar daripada pengedaran Xcode. Untuk menggunakannya, anda perlu menyalin modul dari Xcode lama (versi 8.2 dan lebih awal) ke folder: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
Walau bagaimanapun, kaedah ini dianggap usang dari sudut pandangan Apple. Adalah relevan untuk mendapatkan *.ipa dengan mengeksport daripada arkib aplikasi.
Mula-mula anda perlu mengumpul arkib dengan arahan:
$Method — kaedah penghantaran, sepadan dengan jenis profil tandatangan aplikasi, iaitu, untuk Pembangunan, nilainya ialah pembangunan, untuk Ad Hoc - ad-hoc, dan untuk App Store - kedai aplikasi.
$BundleID — ID Aplikasi, yang dinyatakan dalam tetapan aplikasi. Anda boleh menyemak dengan arahan:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName и $ProfileId — nama pembangun dan tetapan ID profil tandatangan yang digunakan sebelum ini dan mesti sepadan dengan nilai dalam tetapan eksport.
$TeamID — ID sepuluh digit dalam kurungan selepas nama pembangun, contoh: Pembangun iPhone: …… (XXXXXXXXXX); boleh check in Keychain.
Seterusnya, menggunakan arahan eksport, kami memperoleh fail *.ipa yang diperlukan:
Sekarang fail yang dikumpul perlu dihantar kepada pengguna akhir, iaitu, dipasang pada peranti.
Terdapat banyak perkhidmatan untuk mengedarkan binaan Pembangunan dan Ad Hoc, seperti HockeyApp, AppBlade dan lain-lain, tetapi dalam artikel ini kita akan bercakap tentang pelayan kendiri untuk mengedarkan aplikasi.
Memasang aplikasi untuk iOS berlaku dalam 2 peringkat:
Menerima manifes pemasangan aplikasi melalui Perkhidmatan Item.
Pemasangan fail *.ipa mengikut maklumat yang dinyatakan dalam manifes melalui HTTPS.
Oleh itu, kita perlu menjana manifes pemasangan (jenis fail *.plist) terlebih dahulu dengan arahan:
Seperti yang anda lihat, manifes mengandungi hampir semua parameter yang terlibat dalam membina aplikasi.
Versi aplikasi ($AppVersion) boleh disemak dengan arahan:
defaults read $ProjectDir/Info CFBundleVersion
Parameter $ipaUrl mengandungi pautan terus untuk memuat turun fail *.ipa. Daripada versi ketujuh iOS, aplikasi mesti dipasang melalui HTTPS. Dalam versi kelapan, format manifes telah berubah sedikit: blok dengan tetapan untuk ikon aplikasi seperti
<images>
<image>...</image>
</images>
Oleh itu, untuk memasang aplikasi, halaman HTML mudah dengan pautan seperti ini sudah cukup:
Untuk keperluan jabatan pembangunan dan ujian, Plarium telah mencipta aplikasi pemasangan binaannya sendiri, yang memberikan kami:
autonomi dan kemerdekaan,
pemusatan kawalan akses dan pemasangan aplikasi yang selamat melalui pautan yang dicipta secara dinamik "sementara",
kefungsian boleh dikembangkan (iaitu, pasukan pembangunan, jika perlu, boleh menyepadukan fungsi yang hilang ke dalam aplikasi sedia ada).
Ujian
Sekarang kita akan bercakap tentang ujian pra-keluaran aplikasi menggunakan ujian Penerbangan.
Syarat yang diperlukan untuk memuat turun ialah jenis profil tandatangan App Store dan kehadiran kunci API yang dijana.
Terdapat beberapa cara untuk memuat turun aplikasi:
melalui Xcode (Penganjur),
melalui altool,
melalui Application Loader untuk versi lama Xcode (kini Transporter).
Untuk muat turun automatik, altool digunakan, yang juga mempunyai dua kaedah kebenaran:
Kata Laluan Khusus Apl,
Kunci API.
Adalah lebih baik untuk memuat turun aplikasi menggunakan Kunci API.
Untuk mendapatkan Kunci API, pergi ke pautan dan menjana kunci. Sebagai tambahan kepada kunci itu sendiri dalam format *.p8, kami memerlukan dua parameter: IssuerID dan KeyID.
Seterusnya, import kunci yang dimuat turun ke pelayan binaan:
Где apiKey и apiIssuer mempunyai nilai medan daripada halaman penjanaan kunci API.
Seterusnya, setelah pengesahan berjaya, kami memuatkan aplikasi dengan arahan --upload-app dengan parameter yang sama.
Aplikasi ini akan diuji oleh Apple dalam masa satu atau dua hari dan kemudian akan tersedia kepada penguji luaran: mereka akan dihantar melalui e-mel pautan untuk pemasangan.
Cara lain untuk memuat turun aplikasi melalui altool ialah menggunakan Kata Laluan Khusus Apl.
Untuk mendapatkan Kata Laluan Khusus Apl yang anda perlu pergi ke pautan dan jananya dalam bahagian Keselamatan.
Seterusnya, anda harus mencipta rekod pelayan binaan dalam Rantai Kunci dengan kata laluan ini. Dari versi 11 Xcode ini boleh dilakukan dengan arahan:
Provider listing:
- Long Name - - Short Name -
XXXXXXX XXXXXXXXX
Seperti yang anda lihat, nilai Nama Pendek yang diperlukan (penyedia asc) bertepatan dengan parameter $TeamID yang kami gunakan semasa membina aplikasi.
Untuk mengesahkan dan memuatkan aplikasi ke dalam TestFlight, gunakan arahan:
Sebagai nilai parameter -p anda boleh mengambil nilai $AppPswd dalam bentuk yang tidak disulitkan (eksplisit).
Walau bagaimanapun, seperti yang telah disebutkan, dari sudut prestasi, adalah lebih baik untuk memilih Kunci API untuk kebenaran altool, kerana versi Xcode yang berbeza mempunyai masalah tertentu ("tidak melihat" Rantai Kunci, ralat kebenaran semasa muat naik, dsb.).
Itu sahaja, sebenarnya. Saya berharap semua orang yang terlibat berjaya membina dan keluaran bebas masalah di App Store.