Endri-javatra amin'ny fananganana sy fanaterana rindranasa iOS

Ato amin'ity lahatsoratra ity, mizara ny traikefa amin'ny fanangonana sy fanaterana rindranasa iOS ho an'ny mpampiasa izahay, izay nangonin'ny studio Plarium Krasnodar tamin'ny dingan'ny debugging CI/CD.

Endri-javatra amin'ny fananganana sy fanaterana rindranasa iOS

Fiomanana

Ny olona rehetra izay amin'ny fomba iray na hafa tafiditra amin'ny fampivoarana ny rindranasa ho an'ny fitaovana Apple dia efa nankasitraka ny tsy fahampian'ny fotodrafitrasa mampiady hevitra. Ny fahasahiranana dia hita eny rehetra eny: manomboka amin'ny menio mombamomba ny mpamorona mankany amin'ny fitaovana debug sy fananganana.

Betsaka ny lahatsoratra momba ny "fototra" ao amin'ny Internet, noho izany dia hiezaka izahay hanasongadina ny zava-dehibe indrindra. Ity ny zavatra ilainao hanamboarana ny fampiharanao am-pahombiazana:

  • kaonty developer;
  • fitaovana miorina amin'ny macOS miasa ho mpizara fananganana;
  • niteraka taratasy fanamarinana developer, izay mbola hampiasaina hanasoniavana ny fangatahana;
  • noforonina fampiharana miaraka amin'ny tokana ID (Tokony ho marihina ny maha-zava-dehibe ny Bundle Identifier, satria ny fampiasana ny ID wildcard dia mahatonga ny fampiasana ny fiasa maro amin'ny fampiharana, ohatra: Domains mifandray, Push Notifications, Apple Sign In sy ny hafa);
  • piraofilina sonia fampiharana.

Tsy maintsy amboarina amin'ny alalan'ny Keychain amin'ny fitaovana macOS rehetra ny taratasy fanamarinana mpamorona. Tena zava-dehibe ny karazana taratasy fanamarinana. Miankina amin'ny tontolon'ny fampiharana (Dev, QA, Staging, Production) dia tsy mitovy izany (Fampandrosoana na fizarana), ary koa ny karazana mombamomba ny sonia fampiharana.

Karazana profil lehibe:

  • Fampandrosoana - natao hanasoniavana ny fangatahan'ny ekipan'ny fampandrosoana, ny taratasy fanamarinana Fampandrosoana no ampiasaina (karazana anarana iPhone Developer: XXXXX);
  • Ad Hoc - natao hanaovana sonia fangatahana fitsapana sy fanamarinana anatiny ataon'ny departemantan'ny QA, ny taratasy fanamarinana Distribution an'ny developer dia ampiasaina (karazana anarana iPhone Distribution: XXXXX);
  • App Store - famoahana fananganana ho an'ny fitsapana ivelany amin'ny alΓ lan'ny TestFlight ary ampidiro ao amin'ny App Store, ny mari-pankasitrahana Distribution an'ny developer no ampiasaina.

Rehefa mamorona mombamomba ny Fampandrosoana sy Ad Hoc dia aseho ihany koa izany lisitry ny fitaovana, izay ahafahanao mametraka fananganana, izay ahafahanao mametra bebe kokoa ny fidirana ho an'ny mpampiasa. Tsy misy lisitry ny fitaovana ao amin'ny mombamomba ny App Store, satria ny fanaraha-maso ny fidirana mandritra ny fitsapana beta mihidy dia ataon'ny TestFlight, izay horesahina any aoriana.

Mba hanazavana dia azonao atao ny manolotra ny mombamomba ny mpamorona amin'ny endrika tabilao etsy ambany. Izany dia manamora ny fahafantarana ny masontsivana ilaintsika amin'ny fivoriambe sy ny toerana hahazoana azy ireo.

Endri-javatra amin'ny fananganana sy fanaterana rindranasa iOS

fiangonana

Mba hanamora ny fanavahana ny fivoriambe araka ny tetikasa sy ny tontolo iainana, dia mampiasa ny anaran'ny mombamomba azy izahay ${ProjectName}_${Instance}, izany hoe, anaran'ny tetikasa + ohatra (miankina amin'ny tontolon'ny fampiharana: Dev, QA, GD, Staging, Live, sy ny sisa).

Rehefa nafarana tao amin'ny server build, dia manova ny anarany ho ID tokana ny mombamomba azy ary afindra any amin'ny lahatahiry /Users/$Username/Library/MobileDevice/Provisioning Profiles (aiza $Username mifanitsy amin'ny anaran'ny kaontin'ny mpizara build).

Misy fomba roa hanamboarana rakitra *.ipa - lova (PackageApplication) sy maoderina (amin'ny famoronana sy fanondranana XcAchive). Ny fomba voalohany dia heverina ho lany andro, satria nanomboka tamin'ny version 8.3 dia nesorina tamin'ny fizarana Xcode ny maodely fonosana rakitra app. Mba hampiasana azy dia mila mandika ny maody avy amin'ny Xcode taloha (version 8.2 sy taloha) mankany amin'ny lahatahiry:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/

Ary araho ny baiko:

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

Avy eo dia mila manangona ny rakitra *.app an'ny fampiharana ianao:

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

izay:

-workspace - lalana mankany amin'ny rakitra tetikasa.

-scheme - ny tetika ampiasaina, voalaza ao amin'ny tetikasa.

-derivedDataPath β€” lalana hisintonana ny rindranasa mivory (*.app).

CODE_SIGN_IDENTITY β€” ny anaran'ny kaonty mpamorona, izay azo hamarinina amin'ny Keychain (iPhone Developer: XXXX XXXXXXX, tsy misy TeamID ao anaty fononteny).

Endri-javatra amin'ny fananganana sy fanaterana rindranasa iOS

PROVISIONING_PROFILE - ID mombamomba ny sonia ny fampiharana, izay azo alaina amin'ny baiko:

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

Raha mampiasa mombamomba fanampiny (ohatra, ho an'ny Push Notifications) ny fampiharana, dia ho solon'ny PROVISIONING_PROFILE manondro:

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

Avy eo, ny rakitra *.app vokarina dia tokony ho ao anaty *.ipa. Mba hanaovana izany dia azonao atao ny mampiasa baiko toy ny:

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

Na izany aza, io fomba io dia heverina ho lany andro amin'ny fomba fijerin'i Apple. Tena ilaina ny mahazo *.ipa amin'ny fanondranana avy amin'ny arisiva fampiharana.

Voalohany dia mila manangona ny arisiva ianao miaraka amin'ny baiko:

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

Ny fahasamihafana dia eo amin'ny fomba fivoriambe sy ny safidy SYNCHRONOUS_SYMBOL_PROCESSING, izay manakana ny fandefasana marika amin'ny fotoana fananganana.

Avy eo dia mila mamorona rakitra miaraka amin'ny fanovana fanondranana isika:

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

izay:

$Method - fomba fanaterana, mifanandrify amin'ny karazana mombamomba ny sonia fampiharana, izany hoe, ho an'ny Fampandrosoana ny sanda dia ho fampandrosoana, ho an'ny Ad Hoc - ad-hoc, ary ho an'ny App Store - fivarotana app.

$BundleID - ID fampiharana, izay voatondro ao amin'ny firafitry ny fampiharana. Azonao atao ny manamarina amin'ny baiko:

defaults read $ProjectDir/Info CFBundleIdentifier

$DevAccName ΠΈ $ProfileId - ny anaran'ny mpamorona sy ny firafitry ny mombamomba ny sonia izay nampiasaina teo aloha ary tsy maintsy mifanandrify amin'ny sanda ao amin'ny toe-javatra fanondranana.

$TeamID β€” ID isa folo ao anaty fononteny aorian'ny anaran'ny mpamorona, ohatra: iPhone Developer: …… (XXXXXXXXXX); azo jerena ao amin'ny Keychain.

Avy eo, amin'ny fampiasana ny baiko fanondranana, mahazo ny rakitra *.ipa ilaina:

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

Fandefasana vaovao

Ankehitriny ny rakitra voaangona dia mila aterina amin'ny mpampiasa farany, izany hoe, napetraka amin'ny fitaovana.

Misy tolotra maro ho an'ny fizarana ny Fampandrosoana sy ny fananganana Ad Hoc, toy ny HockeyApp, AppBlade sy ny hafa, fa ato amin'ity lahatsoratra ity isika dia hiresaka momba ny mpizara tokana ho an'ny fizarana fampiharana.

Ny fametrahana ny fampiharana ho an'ny iOS dia atao amin'ny dingana 2:

  1. Mandray ny fanehoana fametrahana fampiharana amin'ny alΓ lan'ny Service Items.
  2. Fametrahana ny rakitra *.ipa araka ny fampahalalana voalaza ao amin'ny manifest amin'ny HTTPS.

Noho izany, mila mamorona fanehoana fametrahana (karazana rakitra *.plist) aloha isika miaraka amin'ny baiko:

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

Araka ny hitanao, ny manifest dia ahitana saika ny masontsivana rehetra tafiditra amin'ny fananganana ny fampiharana.

Version fampiharana ($AppVersion) azo jerena amin'ny baiko:

defaults read $ProjectDir/Info CFBundleVersion

fikirana $ipaUrl misy rohy mivantana hisintonana ny rakitra *.ipa. Avy amin'ny dikan-teny fahafito an'ny iOS, ny fampiharana dia tsy maintsy apetraka amin'ny HTTPS. Ao amin'ny dikan-teny fahavalo, niova kely ny endriky ny fanehoana: sakana misy fikandrana ho an'ny kisary fampiharana toy ny

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

Noho izany, mba hametrahana ilay rindranasa dia ampy ny pejy HTML tsotra misy rohy toy izao:

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

Ho an'ny filan'ny sampan-draharaham-pampandrosoana sy fitsapana, Plarium dia namorona ny fampiharana fametrahana azy manokana, izay manome antsika:

  • fahaleovantena sy fahaleovantena,
  • afovoany ny fanaraha-maso ny fidirana sy ny fametrahana azo antoka ny rindranasa amin'ny alalan'ny rohy " vonjimaika" noforonina mavitrika,
  • fampiasa azo itarina (izany hoe, ny ekipan'ny fampandrosoana, raha ilaina, dia afaka mampiditra ireo asa tsy hita ao anaty fampiharana efa misy).

fitiliana

Ankehitriny dia hiresaka momba ny fitsapana mialoha ny famoahana ny fampiharana mampiasa fitsapana sidina.

Ny fepetra takiana amin'ny fampidinana dia ny karazana mombamomba ny sonia App Store sy ny fisian'ny fanalahidin'ny API.

Misy fomba maromaro hisintonana ny fampiharana:

  • amin'ny Xcode (Mpikarakara),
  • via altool,
  • amin'ny alΓ lan'ny Application Loader ho an'ny dikan-teny Xcode taloha (Transferer ankehitriny).

Ho an'ny fampidinana mandeha ho azy dia ampiasaina ny altool, izay manana fomba fanomezan-dΓ lana roa ihany koa:

  • Tenimiafina manokana amin'ny fampiharana,
  • API Key.

Aleo misintona ny rindranasa mampiasa ny API Key.

Mba hahazoana ny API Key, mandehana any rohy ary mamorona fanalahidy. Ho fanampin'ny fanalahidy ao amin'ny endrika *.p8 dia mila masontsivana roa isika: IssuerID sy KeyID.

Endri-javatra amin'ny fananganana sy fanaterana rindranasa iOS

Manaraka, ampidiro any amin'ny server build ny fanalahidy alaina:

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

Alohan'ny handefasana ny fampiharana amin'ny TestFlight dia mila manamarina ny fampiharana ianao, manao izany miaraka amin'ny baiko izahay:

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

izay apiKey ΠΈ apiIssuer manana soatoavina an-tsaha avy amin'ny pejy famokarana fanalahidy API.

Manaraka, rehefa vita ny fanamarinana, dia apetrakay ny fampiharana miaraka amin'ny baiko --upload-app miaraka amin'ny masontsivana mitovy.

Ny fampiharana dia hozahan'i Apple ao anatin'ny iray na roa andro ary ho azon'ny mpitsikilo ivelany avy eo: handefasana rohy amin'ny mailaka ho an'ny fametrahana azy ireo.

Fomba iray hafa hisintonana rindranasa amin'ny altool dia ny fampiasana ny tenimiafina manokana amin'ny App.

Mba hahazoana ny tenimiafina App-specific mila mandeha any rohy ary mamorona izany ao amin'ny fizarana Security.

Endri-javatra amin'ny fananganana sy fanaterana rindranasa iOS

Manaraka izany dia tokony hamorona rakitra mpizara fananganana ao amin'ny Keychain miaraka amin'ity tenimiafina ity ianao. Avy amin'ny version 11 an'ny Xcode dia azo atao amin'ny baiko izany:

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

izay:

$DeveloperName - ny anaran'ny kaonty mpamorona iOS nampiasaina hidirana amin'ny serivisy Apple.

$AppPswd - Namorona tenimiafina App-specific.

Manaraka, mahazo ny sandan'ny asc-provider parameter isika ary jereo ny fahombiazan'ny fanafarana tenimiafina miaraka amin'ny baiko:

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

Mahazo ny vokatra izahay:

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

Araka ny hitanao, ny sandan'ny anarana fohy ilaina (asc-provider) dia mifanandrify amin'ny mari-pamantarana $TeamID izay nampiasainay tamin'ny fananganana ny fampiharana.

Mba hanamarinana sy hampidirana ny fampiharana ao amin'ny TestFlight, ampiasao ny baiko:

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

Amin'ny maha sanda parameter -p azonao raisina ny sandany $AppPswd amin'ny endrika tsy voafehy (miharihary).

Na izany aza, araka ny efa voalaza, avy amin'ny fomba fijery ny fampisehoana, dia tsara kokoa ny mifidy ny API Key ho an'ny altool fanomezan-dΓ lana, satria ny dikan-teny Xcode samy hafa dia manana olana sasany ("tsy mahita" Keychain, fahadisoana fahazoan-dΓ lana mandritra ny fampidinana, sns.).

Izay ihany, raha ny marina. Maniry ny rehetra handray anjara amin'ny fananganana mahomby sy famoahana tsy misy olana ao amin'ny App Store aho.

Source: www.habr.com

Add a comment