ProHoster > Блог > Pagdumala > Mga bahin sa pagtukod ug paghatud sa mga aplikasyon sa iOS
Mga bahin sa pagtukod ug paghatud sa mga aplikasyon sa iOS
Niini nga artikulo, gipaambit namo ang kasinatian sa pag-assemble ug paghatud sa mga aplikasyon sa iOS ngadto sa mga tiggamit, nga natipon sa Plarium Krasnodar studio sa proseso sa pag-debug sa CI/CD.
Training
Ang matag tawo nga naa sa usa ka paagi o lain nga nahilambigit sa pag-uswag sa mga aplikasyon alang sa mga aparato sa Apple nakadayeg na sa kontrobersyal nga kasayon sa imprastraktura. Ang mga kalisud makit-an bisan diin: gikan sa menu sa profile sa developer hangtod sa mga himan sa pag-debug ug paghimo.
Adunay daghang mga artikulo bahin sa "mga sukaranan" sa Internet, mao nga sulayan namon nga ipasiugda ang panguna nga butang. Ania ang imong gikinahanglan aron malampuson nga matukod ang imong aplikasyon:
gibuhat nga aplikasyon nga adunay talagsaon ID (Ang importansya sa Bundle Identifier kinahanglan nga matikdan, tungod kay ang paggamit sa wildcard ID nagpaposible sa paggamit sa daghang mga function sa aplikasyon, pananglitan: Associated Domains, Push Notifications, Apple Sign In ug uban pa);
Ang sertipiko sa developer kinahanglan nga mamugna pinaagi sa Keychain sa bisan unsang macOS device. Ang tipo sa sertipiko hinungdanon kaayo. Depende sa palibot sa aplikasyon (Dev, QA, Staging, Production) magkalainlain kini (Development o Distribution), ingon usab ang tipo sa profile sa pirma sa aplikasyon.
Panguna nga tipo sa mga profile:
Development - gituyo alang sa pagpirma sa aplikasyon sa development team, usa ka Development certificate gigamit (type ngalan iPhone Developer: XXXXX);
Ad Hoc - gituyo alang sa pagpirma sa usa ka aplikasyon sa pagsulay ug internal nga pag-verify sa departamento sa QA, gigamit ang sertipiko sa Distribution sa developer (type nga ngalan sa Distribution sa iPhone: XXXXX);
App Store - buhian ang pagtukod alang sa gawas nga pagsulay pinaagi sa TestFlight ug pag-upload sa App Store, gigamit ang sertipiko sa Distribution sa developer.
Kung maghimo ug mga profile sa Development ug Ad Hoc, gipakita usab kini listahan sa device, diin mahimo nimong i-install ang usa ka pagtukod, nga nagtugot kanimo sa dugang nga pagpugong sa pag-access sa mga tiggamit. Wala’y lista sa mga aparato sa profile sa App Store, tungod kay ang kontrol sa pag-access sa panahon sa sirado nga pagsulay sa beta gidumala sa TestFlight, nga hisgutan sa ulahi.
Alang sa katin-awan, mahimo nimong ipresentar ang profile sa developer sa porma sa usa ka lamesa sa ubos. Gipasayon niini nga masabtan kung unsa nga mga parameter ang atong gikinahanglan alang sa asembliya ug asa kini makuha.
Assembly
Aron mas dali ang pagbulag sa mga asembliya pinaagi sa proyekto ug palibot, gigamit namon ang mga ngalan sa profile sama sa ${ProjectName}_${Instance}, kana mao, ngalan sa proyekto + pananglitan (depende sa palibot sa aplikasyon: Dev, QA, GD, Staging, Live, ug uban pa).
Kung gi-import sa build server, giusab sa profile ang ngalan niini sa usa ka talagsaon nga ID ug gibalhin sa folder /Users/$Username/Library/MobileDevice/Provisioning Profiles (Asa $Username katumbas sa ngalan sa user account sa build server).
Adunay duha ka paagi sa paghimo ug *.ipa file - kabilin (PackageApplication) ug moderno (pinaagi sa XcAchive nga paglalang ug pag-eksport). Ang unang pamaagi giisip nga dili na magamit, tungod kay sukad sa bersyon 8.3 ang app file packaging module gikuha gikan sa pag-apod-apod sa Xcode. Aron magamit kini, kinahanglan nimong kopyahon ang module gikan sa daan nga Xcode (bersyon 8.2 ug mas sayo pa) sa folder: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
-scheme — ang laraw nga gigamit, gipiho sa proyekto.
-derivedDataPath — dalan sa pag-download sa gitigom nga aplikasyon (*.app).
CODE_SIGN_IDENTITY — ang ngalan sa developer account, nga mahimong ma-verify sa Keychain (iPhone Developer: XXXX XXXXXXX, walay TeamID sa mga bracket).
PROVISIONING_PROFILE - Profile ID alang sa pagpirma sa aplikasyon, nga makuha sa mando:
cd "/Users/$Username/Library/MobileDevice/Provisioning Profiles/" && find *.mobileprovision -type f | xargs grep -li ">${ProjectName}_${Instance}<" | sed -e 's/.mobileprovision//'
Kung ang aplikasyon naggamit ug dugang nga profile (pananglitan, alang sa Push Notifications), unya imbes nga PROVISIONING_PROFILE ipahibalo:
Bisan pa, kini nga pamaagi giisip nga dili na magamit gikan sa punto sa pagtan-aw sa Apple. May kalabotan ang pagkuha sa *.ipa pinaagi sa pag-eksport gikan sa archive sa aplikasyon.
Una kinahanglan nimo nga kolektahon ang archive gamit ang mando:
Ang mga kalainan anaa sa pamaagi sa asembliya ug mga kapilian SYNCHRONOUS_SYMBOL_PROCESSING, nga nagpugong sa pagdiskarga sa simbolo sa oras sa pagtukod.
Sunod kinahanglan namon nga maghimo usa ka file nga adunay mga setting sa pag-eksport:
$Method — pamaagi sa pagpadala, katumbas sa tipo sa profile sa pirma sa aplikasyon, nga mao, alang sa Pag-uswag ang kantidad mahimong pag-uswag, alang sa Ad Hoc - ad-hoc, ug alang sa App Store - app-store.
$BundleID - Application ID, nga gipiho sa mga setting sa aplikasyon. Mahimo nimong susihon gamit ang mando:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName и $ProfileId — ngalan sa developer ug mga setting sa profile ID sa pirma nga gigamit kaniadto ug kinahanglan nga magkatugma sa mga kantidad sa mga setting sa pag-eksport.
$TeamID — napulo ka-digit nga ID sa mga bracket human sa ngalan sa developer, pananglitan: iPhone Developer: …… (XXXXXXXXXX); mahimong masusi sa Keychain.
Sunod, gamit ang export command, makuha namo ang gikinahanglan nga *.ipa file:
Karon ang nakolekta nga file kinahanglan nga ipadala sa katapusan nga tiggamit, nga mao, gi-install sa aparato.
Adunay daghang mga serbisyo alang sa pag-apod-apod sa Development ug Ad Hoc build, sama sa HockeyApp, AppBlade ug uban pa, apan sa kini nga artikulo maghisgot kami bahin sa usa ka standalone server alang sa pag-apod-apod sa mga aplikasyon.
Ang pag-instalar sa aplikasyon alang sa iOS mahitabo sa 2 nga mga yugto:
Pagdawat sa pagpakita sa pag-install sa aplikasyon pinaagi sa Serbisyo sa Mga Butang.
Pag-instalar sa *.ipa file sumala sa impormasyon nga gitakda sa manifest pinaagi sa HTTPS.
Sa ingon, kinahanglan una namon nga maghimo usa ka pagpakita sa pag-install (type sa file *.plist) nga adunay mando:
Sama sa imong makita, ang manifest naglangkob sa hapit tanan nga mga parameter nga nahilambigit sa pagtukod sa aplikasyon.
Bersyon sa aplikasyon ($AppVersion) mahimong masusi gamit ang sugo:
defaults read $ProjectDir/Info CFBundleVersion
Parameter $ipaUrl adunay direktang link aron ma-download ang *.ipa file. Gikan sa ikapitong bersyon sa iOS, ang aplikasyon kinahanglang ma-install pinaagi sa HTTPS. Sa ikawalo nga bersyon, ang pormat sa manifest medyo nausab: mga bloke nga adunay mga setting alang sa mga icon sa aplikasyon sama
<images>
<image>...</image>
</images>
Busa, aron ma-install ang aplikasyon, igo na ang usa ka yano nga panid sa HTML nga adunay usa ka link nga sama niini:
Alang sa mga panginahanglan sa mga departamento sa pag-uswag ug pagsulay, ang Plarium naghimo sa kaugalingon nga aplikasyon sa pag-install sa pagtukod, nga naghatag kanamo:
awtonomiya ug kagawasan,
sentralisasyon sa kontrol sa pag-access ug luwas nga pag-instalar sa mga aplikasyon pinaagi sa "temporaryo" nga dinamikong gibuhat nga mga link,
mapalapdan nga pagpaandar (nga mao, ang development team, kung gikinahanglan, mahimong i-integrate ang nawala nga mga function ngadto sa usa ka kasamtangan nga aplikasyon).
Pagsulay
Karon maghisgot kami bahin sa pre-release nga pagsulay sa aplikasyon nga gigamit TestFlight.
Ang gikinahanglan nga mga kondisyon alang sa pag-download mao ang tipo sa profile sa pirma sa App Store ug ang presensya sa namugna nga mga yawe sa API.
Adunay daghang mga paagi aron ma-download ang aplikasyon:
pinaagi sa Xcode (Organizer),
pinaagi sa altool,
pinaagi sa Application Loader alang sa mas daan nga mga bersyon sa Xcode (karon Transporter).
Alang sa awtomatik nga pag-download, gigamit ang altool, nga adunay duha usab nga pamaagi sa pagtugot:
Password nga Piho sa App,
API Key.
Mas maayo nga i-download ang aplikasyon gamit ang API Key.
Aron makuha ang API Key, adto sa link ug paghimo og yawe. Dugang pa sa yawe mismo sa *.p8 nga format, magkinahanglan kita og duha ka parametro: IssuerID ug KeyID.
Sunod, i-import ang na-download nga yawe sa build server:
Diin apiKey и apiIssuer adunay mga kantidad sa uma gikan sa panid sa paghimo sa yawe sa API.
Sunod, sa malampuson nga pag-validate, among gikarga ang aplikasyon gamit ang mando --upload-app nga adunay parehas nga mga parameter.
Ang aplikasyon pagasulayan sa Apple sa sulod sa usa o duha ka adlaw ug unya mahimong magamit sa mga eksternal nga tigsulay: sila i-email sa mga link alang sa pag-install.
Ang laing paagi sa pag-download sa usa ka aplikasyon pinaagi sa altool mao ang paggamit sa App-Specific Password.
Aron makuha ang App-Specific Password nga kinahanglan nimong adtoan link ug paghimo niini sa seksyon sa Seguridad.
Sunod, kinahanglan ka maghimo usa ka rekord sa pagtukod sa server sa Keychain nga adunay kini nga password. Gikan sa bersyon 11 sa Xcode mahimo kini gamit ang sugo:
Provider listing:
- Long Name - - Short Name -
XXXXXXX XXXXXXXXX
Sama sa imong makita, ang gikinahanglan nga Mubo nga Ngalan nga bili (asc-provider) motakdo sa $TeamID parameter nga among gigamit sa pagtukod sa aplikasyon.
Aron ma-validate ug ma-load ang aplikasyon sa TestFlight, gamita ang command:
Ingon usa ka bili sa parameter -p makuha nimo ang bili $AppPswd sa unencrypted (klaro) nga porma.
Bisan pa, sama sa nahisgutan na, gikan sa punto sa pagtan-aw sa pasundayag, mas maayo nga pilion ang API Key alang sa pagtugot sa altool, tungod kay ang lainlaing mga bersyon sa Xcode adunay piho nga mga problema ("wala makakita" Keychain, mga sayup sa pagtugot sa panahon sa pag-upload, ug uban pa).
Kana lang, sa tinuod. Nanghinaut ko nga ang tanan nga nalambigit malampuson nga pagtukod ug walay problema nga pagpagawas sa App Store.