Fasalolin gini da isar da aikace-aikacen iOS

A cikin wannan labarin, muna raba gwaninta na haɗawa da isar da aikace-aikacen iOS ga masu amfani, waɗanda ɗakin studio na Plarium Krasnodar ya tara a cikin aiwatar da lalata CI / CD.

Fasalolin gini da isar da aikace-aikacen iOS

Horo

Duk mutumin da ke cikin wata hanya ko wata da ke da hannu a cikin haɓaka aikace-aikacen na'urorin Apple ya riga ya yaba da sauƙin rigima na abubuwan more rayuwa. Ana samun wahalhalu a ko'ina: daga menu na masu haɓakawa zuwa ga gyarawa da gina kayan aikin.

Akwai labarai da yawa game da "tushen" akan Intanet, don haka za mu yi ƙoƙari mu haskaka babban abu. Ga abin da kuke buƙata don gina aikace-aikacenku cikin nasara:

  • asusun mai haɓakawa;
  • na'urar tushen macOS da ke aiki azaman uwar garken ginin;
  • halitta takardar shaidar haɓakawa, wanda za a kara amfani da shi don sanya hannu kan aikace-aikacen;
  • ƙirƙirar aikace-aikacen tare da na musamman ID (Ya kamata a lura da mahimmancin Bundle Identifier, saboda yin amfani da ID na kati ya sa ba zai yiwu a yi amfani da ayyuka da yawa na aikace-aikacen ba, misali: Associated Domains, Push Notifications, Apple Sign In da sauransu);
  • bayanin martaba sa hannun aikace-aikacen.

Dole ne a samar da takardar shaidar haɓaka ta hanyar Keychain akan kowace na'urar macOS. Nau'in takardar shaidar yana da mahimmanci. Dangane da yanayin aikace-aikacen (Dev, QA, Staging, Production) zai bambanta (Ci gaba ko Rarraba), kamar yadda nau'in bayanan sa hannun aikace-aikacen zai bambanta.

Manyan nau'ikan bayanan martaba:

  • Ci gaba - an yi niyya don sanya hannu kan aikace-aikacen ƙungiyar haɓaka, ana amfani da takardar shaidar haɓaka (nau'in sunan mai haɓaka iPhone: XXXX);
  • Ad Hoc - an yi niyya don sanya hannu kan aikace-aikacen gwaji da tabbatarwa na ciki ta sashen QA, ana amfani da takardar shaidar Rarraba mai haɓakawa (nau'in sunan Rarraba iPhone: XXXXX);
  • App Store - gina ginin don gwaji na waje ta hanyar TestFlight da lodawa zuwa Store Store, ana amfani da takardar shaidar Rarraba mai haɓakawa.

Lokacin samar da ci gaba da bayanan martaba na Ad Hoc, ana kuma nuna shi jerin na'urori, wanda za ku iya shigar da ginin, wanda zai ba ku damar ƙara ƙuntata damar masu amfani. Babu jerin na'urori a cikin bayanan App Store, tunda ana sarrafa ikon shiga yayin gwajin beta ta TestFlight, wanda za'a tattauna daga baya.

Don bayyanawa, zaku iya gabatar da bayanan mai haɓakawa a cikin hanyar tebur da ke ƙasa. Wannan yana sauƙaƙa fahimtar menene sigogin da muke buƙata don taro da kuma inda zamu samo su.

Fasalolin gini da isar da aikace-aikacen iOS

Majalisar

Don sauƙaƙa raba majalisa ta hanyar aiki da muhalli, muna amfani da sunayen bayanan martaba kamar ${ProjectName}_${Instance}, wato, sunan aikin + misali (ya danganta da yanayin aikace-aikacen: Dev, QA, GD, Staging, Live, da sauransu).

Lokacin da aka shigo da shi zuwa uwar garken ginin, bayanin martaba yana canza sunansa zuwa ID na musamman kuma an matsa shi zuwa babban fayil /Users/$Username/Library/MobileDevice/Provisioning Profiles (ku $Username yayi daidai da sunan asusun mai amfani na uwar garken ginin).

Akwai hanyoyi guda biyu don gina fayil * .ipa - gado (PackageApplication) da na zamani (ta hanyar ƙirƙirar XcAchive da fitarwa). Ana ɗaukar hanya ta farko wacce ba ta daɗe, tun daga sigar 8.3 an cire tsarin marufi na fayil ɗin app daga rarraba Xcode. Don amfani da shi, kuna buƙatar kwafin ƙirar daga tsohuwar Xcode (sigar 8.2 da baya) zuwa babban fayil:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/

Sannan gudanar da umarni:

chmod +x /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/*

Na gaba kuna buƙatar tattara fayil ɗin * .app na aikace-aikacen:

xcodebuild 
-workspace $ProjectDir/$ProjectName.xcworkspace 
-scheme $SchemeName 
-sdk iphoneos 
build 
-configuration Release 
-derivedDataPath build 
CODE_SIGN_IDENTITY=”$DevAccName”
PROVISIONING_PROFILE=”$ProfileId”
DEPLOYMENT_POSTPROCESSING=YES 
SKIP_INSTALL=YES 
ENABLE_BITCODE=NO

Inda:

-workspace - hanyar zuwa fayil ɗin aikin.

-scheme - tsarin da aka yi amfani da shi, wanda aka ƙayyade a cikin aikin.

-derivedDataPath - hanya don saukar da aikace-aikacen da aka haɗa (* .app).

CODE_SIGN_IDENTITY - sunan asusun mai haɓakawa, wanda za'a iya tabbatarwa a cikin Keychain (Mai Haɓaka iPhone: XXXX XXXXXXX, ba tare da TeamID a cikin brackets ba).

Fasalolin gini da isar da aikace-aikacen iOS

PROVISIONING_PROFILE - ID na bayanin martaba don sanya hannu kan aikace-aikacen, wanda za'a iya samu tare da umarnin:

cd "/Users/$Username/Library/MobileDevice/Provisioning Profiles/" && find *.mobileprovision -type f | xargs grep -li ">${ProjectName}_${Instance}<" | sed -e 's/.mobileprovision//'

Idan aikace-aikacen yana amfani da ƙarin bayanin martaba (misali, don Faɗakarwar Tura), to maimakon PROVISIONING_PROFILE nuna:

APP_PROFILE=”$AppProfile” 
EXTENSION_PROFILE=”$ExtProfile” 

Na gaba, sakamakon * .app fayil ya kamata a kunshe cikin * .ipa. Don yin wannan, zaku iya amfani da umarni kamar:

/usr/bin/xcrun --sdk iphoneos PackageApplication 
-v $(find "$ProjectDir/build/Build/Products/Release-iphoneos" -name "*.app") 
-o "$ProjectDir/$ProjectName_$Instance.ipa"

Duk da haka, ana ɗaukar wannan hanya mara amfani daga ra'ayi na Apple. Yana da dacewa don samun * .ipa ta hanyar fitarwa daga rumbun aikace-aikacen.

Da farko kuna buƙatar tattara tarihin tare da umarnin:

xcodebuild 
-workspace $ProjectDir/$ProjectName.xcworkspace 
-scheme $SchemeName 
-sdk iphoneos 
-configuration Release 
archive 
-archivePath $ProjectDir/build/$ProjectName.xcarchive 
CODE_SIGN_IDENTITY=”$DevAccName” 
PROVISIONING_PROFILE=”$ProfileId”
ENABLE_BITCODE=NO 
SYNCHRONOUS_SYMBOL_PROCESSING=FALSE

Bambance-bambancen suna cikin hanyar haɗuwa da zaɓuɓɓuka SYNCHRONOUS_SYMBOL_PROCESSING, wanda ke hana saukewar alamar a lokacin ginawa.

Na gaba muna buƙatar samar da fayil tare da saitunan fitarwa:

ExportSettings="$ProjectDir/exportOptions.plist"

cat << EOF > $ExportSettings
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<false/>
<key>uploadBitcode</key>
<false/>
<key>uploadSymbols</key>
<false/>
<key>method</key>
<string>$Method</string>
<key>provisioningProfiles</key>
<dict>
<key>$BundleID</key>
<string>$ProfileId</string>
</dict>
<key>signingCertificate</key>
<string>$DevAccName</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>$TeamID</string>
<key>thinning</key>
<string><none></string>
</dict>
</plist>
EOF

Inda:

$Method - Hanyar isarwa, yayi daidai da nau'in bayanan sa hannu na aikace-aikacen, wato, don haɓaka ƙimar za ta kasance ci gaba, don Ad Hoc - ad-hoc, da kuma Store Store - kantin kayan masarufi.

$BundleID - ID na aikace-aikacen, wanda aka ƙayyade a cikin saitunan aikace-aikacen. Kuna iya bincika tare da umarnin:

defaults read $ProjectDir/Info CFBundleIdentifier

$DevAccName и $ProfileId - Sunan mai haɓakawa da saitunan bayanan martaba na sa hannu waɗanda aka yi amfani da su a baya kuma dole ne su dace da ƙimar da ke cikin saitunan fitarwa.

$TeamID - ID mai lamba goma a cikin baka bayan sunan mai haɓakawa, misali: Mai Haɓakawa iPhone: …… (XXXXXXXXXX); za a iya duba a Keychain.

Na gaba, ta amfani da umarnin fitarwa, muna samun mahimman * .ipa fayil:

xcodebuild 
-exportArchive 
-archivePath $ProjectDir/build/$ProjectName.xcarchive 
-exportPath $ProjectDir 
-exportOptionsPlist $ExportSettings

Bayar da kaya

Yanzu fayil ɗin da aka tattara yana buƙatar isar da shi ga mai amfani na ƙarshe, wato, shigar akan na'urar.

Akwai ayyuka da yawa don rarraba Ci gaba da Gina Ad Hoc, irin su HockeyApp, AppBlade da sauransu, amma a cikin wannan labarin za mu yi magana game da uwar garken da ke tsaye don rarraba aikace-aikace.

Shigar da aikace-aikacen don iOS yana faruwa a matakai 2:

  1. Karɓar shigarwar aikace-aikacen bayyanannen ta Sabis ɗin Abubuwan.
  2. Shigar da fayil ɗin * .ipa bisa ga bayanin da aka ƙayyade a cikin bayyanuwa ta HTTPS.

Don haka, da farko muna buƙatar samar da bayyanar shigarwa (nau'in fayil * .plist) tare da umarnin:

cat << EOF > $manifest
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>$ipaUrl</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>$BundleID</string>
<key>bundle-version</key>
<string>$AppVersion</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>$ProjectName_$Instance</string>
<key>subtitle</key>
<string>$Instance</string>
</dict>
</dict>
</array>
</dict>
</plist>
EOF

Kamar yadda kake gani, bayyanuwa ta ƙunshi kusan duk sigogin da ke cikin ginin aikace-aikacen.

Sigar aikace-aikacen ($AppVersion) za a iya duba tare da umurnin:

defaults read $ProjectDir/Info CFBundleVersion

Alamar $ipaUrl ya ƙunshi hanyar haɗin kai tsaye don sauke fayil ɗin * .ipa. Daga sigar iOS ta bakwai, dole ne a shigar da aikace-aikacen ta hanyar HTTPS. A cikin sigar ta takwas, tsarin bayyanar ya ɗan canza kaɗan: tubalan tare da saituna don gumakan aikace-aikacen kamar

<images>
   <image>...</image>
</images>

Don haka, don shigar da aikace-aikacen, shafin HTML mai sauƙi tare da hanyar haɗi kamar wannan ya isa:

itms-services://?action=download-manifest&url=https://$ServerUrl/$ProjectName/$Instance/iOS/$AppVersion/manifest.plist

Don buƙatun sassan haɓakawa da gwaji, Plarium ya ƙirƙiri nasa aikace-aikacen shigarwa na ginin, wanda ke ba mu:

  • 'yancin kai da 'yancin kai,
  • Ƙaddamar da ikon samun damar shiga da amintaccen shigar da aikace-aikacen ta hanyar hanyoyin haɗin gwiwar da aka ƙirƙira na ɗan lokaci,
  • ayyuka masu faɗaɗawa (wato ƙungiyar haɓakawa, idan ya cancanta, na iya haɗa ayyukan da suka ɓace cikin aikace-aikacen data kasance).

Gwaji

Yanzu za mu yi magana game da gwajin farko na aikace-aikacen ta amfani da Haske.

Sharuɗɗan da ake buƙata don saukewa sune nau'in bayanin martabar sa hannun App Store da kasancewar maɓallan API da aka samar.

Akwai hanyoyi da yawa don saukar da aikace-aikacen:

  • ta hanyar Xcode (Organizer),
  • via altool,
  • ta hanyar Loader Application don tsofaffin nau'ikan Xcode (yanzu Transport).

Don saukewa ta atomatik, ana amfani da altool, wanda kuma yana da hanyoyin izini guda biyu:

  • Takamaiman Kalmar wucewa ta App,
  • Maɓallin API.

Yana da kyau a sauke aikace-aikacen ta amfani da Maɓallin API.

Don samun Maɓallin API, je zuwa mahada kuma samar da maɓalli. Baya ga maɓallin kanta a tsarin *.p8, za mu buƙaci sigogi biyu: IssuerID da KeyID.

Fasalolin gini da isar da aikace-aikacen iOS

Na gaba, shigo da maɓallin da aka zazzage zuwa uwar garken ginin:

mkdir -p ~/.appstoreconnect/private_keys
mv ~/Downloads/AuthKey_${KeyID}.p8 ~/.appstoreconnect/private_keys/

Kafin loda aikace-aikacen zuwa TestFlight, kuna buƙatar inganta aikace-aikacen, muna yin wannan tare da umarnin:

xcrun altool 
--validate-app 
-t ios 
-f $(find "$ProjectDir" -name "*.ipa") 
--apiKey “$KeyID” 
--apiIssuer “$IssuerID” 

Inda apiKey и apiIssuer suna da ƙimar filin daga shafin tsara maɓalli na API.

Na gaba, bayan ingantaccen inganci, muna loda aikace-aikacen tare da umarni --upload-app tare da sigogi iri ɗaya.

Apple zai gwada aikace-aikacen a cikin kwana ɗaya ko biyu sannan zai zama samuwa ga masu gwajin waje: za a aika musu da hanyoyin haɗin yanar gizo don shigarwa.

Wata hanya don saukar da aikace-aikacen ta hanyar altool ita ce amfani da takamaiman kalmar wucewa ta App-Specific.

Don samun Takamaiman Kalmar wucewa ta App kana buƙatar zuwa mahada da kuma samar da shi a cikin sashin Tsaro.

Fasalolin gini da isar da aikace-aikacen iOS

Na gaba, yakamata ku ƙirƙiri rikodin ginin sabar a cikin Keychain tare da wannan kalmar sirri. Daga sigar 11 na Xcode ana iya yin wannan tare da umarnin:

xcrun altool --store-password-in-keychain-item "Altool" -u "$DeveloperName" -p $AppPswd

Inda:

$DeveloperName - sunan asusun mai haɓaka iOS da ake amfani da shi don shiga ayyukan Apple.

$AppPswd - Ƙaddamar da takamaiman Kalmar wucewa ta App.

Na gaba, muna samun ƙimar sigar mai ba da asc kuma duba nasarar shigo da kalmar wucewa tare da umarnin:

xcrun altool --list-providers -u "$DeveloperName" -p "@keychain:Altool"

Muna samun fitarwa:

Provider listing:
- Long Name - - Short Name -
XXXXXXX        XXXXXXXXX

Kamar yadda kuke gani, ƙimar Gajerun Sunan da ake buƙata (asc-provider) yayi daidai da sigar $TeamID da muka yi amfani da ita lokacin gina aikace-aikacen.

Don ingantawa da loda aikace-aikacen cikin TestFlight, yi amfani da umarnin:

xcrun altool 
--(validate|upload)-app   
-f $(find "$ProjectDir" -name "*.ipa") 
-u "$DeveloperName" 
-p "@keychain:Altool" 

A matsayin ƙimar siga -p za ku iya ɗaukar darajar $AppPswd a cikin sigar da ba a ɓoye (bayyanannu).

Duk da haka, kamar yadda aka riga aka ambata, daga ra'ayi na aikin, yana da kyau a zabi API Key don izinin altool, tun da nau'o'in Xcode daban-daban suna da wasu matsaloli ("ba ya gani" Keychain, kurakurai izini yayin loda, da dai sauransu).

Wannan ke nan, a zahiri. Ina fatan duk wanda ya shiga cikin nasara na ginawa da sakin matsala a cikin App Store.

source: www.habr.com

Add a comment