Gnéithe a bhaineann le hiarratais iOS a thógáil agus a sheachadadh

San Airteagal seo, roinnimid an taithí ar fheidhmchláir iOS a chur le chéile agus a sheachadadh d’úsáideoirí, atá bailithe ag stiúideo Plarium Krasnodar i bpróiseas dífhabhtaithe CI/CD.

Gnéithe a bhaineann le hiarratais iOS a thógáil agus a sheachadadh

Oiliúint

Tá meas ag gach duine atá ar bhealach amháin nó ar bhealach eile i bhforbairt na n-iarratas ar fheistí Apple ar áisiúlacht chonspóideach an bhonneagair. Faightear deacrachtaí i ngach áit: ó roghchlár phróifíl an fhorbróra go dtí na huirlisí dífhabhtaithe agus tógála.

Tá go leor alt faoi na “bunghnéithe” ar an Idirlíon, mar sin déanfaimid iarracht aird a tharraingt ar an rud is mó. Seo a bhfuil uait chun d’iarratas a thógáil go rathúil:

  • cuntas forbróra;
  • feiste macOS-bhunaithe a fheidhmíonn mar fhreastalaí tógála;
  • ginte deimhniú forbróra, a úsáidfear tuilleadh chun an t-iarratas a shíniú;
  • iarratas cruthaithe le uathúil ID (ba chóir tábhacht an Aitheantóra Bundle a thabhairt faoi deara, toisc go bhfuil sé dodhéanta go leor feidhmeanna an iarratais a úsáid le húsáid ID saoróg, mar shampla: Fearainn Chomhlachaithe, Fógraí Brúigh, Sínigh Isteach Apple agus daoine eile);
  • próifíl sínithe iarratais.

Ní mór deimhniú forbróra a ghiniúint trí Keychain ar aon fheiste macOS. Tá an cineál deimhnithe an-tábhachtach. Ag brath ar an timpeallacht iarratais (Dev, QA, Staging, Production) beidh sé difriúil (Forbairt nó Dáileadh), mar a bheidh an cineál próifíl sínithe iarratais.

Príomhchineálacha próifílí:

  • Forbairt - atá beartaithe chun iarratas na foirne forbartha a shíniú, úsáidtear deimhniú Forbartha (cineál ainm Forbróir iPhone: XXXXX);
  • Ad Hoc - atá beartaithe chun iarratas tástála agus fíorú inmheánach a shíniú ag an roinn QA, úsáidtear deimhniú Dáileacháin an fhorbróra (cineál ainm Dáileadh iPhone: XXXX);
  • App Store - scaoileadh tógáil le haghaidh tástála seachtracha trí TestFlight agus uaslódáil chuig an App Store, úsáidtear deimhniú Dáileacháin an fhorbróra.

Agus próifílí Forbartha agus Ad Hoc á nginiúint, léirítear é freisin liosta gléas, ar ar féidir leat tógáil a shuiteáil, a ligeann duit rochtain a shrianadh a thuilleadh d'úsáideoirí. Níl aon liosta de na feistí sa phróifíl App Store, ós rud é go láimhseálann TestFlight rialú rochtana le linn tástála béite dúnta, a phléifear níos déanaí.

Ar mhaithe le soiléireacht, is féidir leat próifíl an fhorbróra a chur i láthair i bhfoirm tábla thíos. Mar sin is fusa a thuiscint cad iad na paraiméadair a theastaíonn uainn le haghaidh cóimeála agus cén áit ar féidir iad a fháil.

Gnéithe a bhaineann le hiarratais iOS a thógáil agus a sheachadadh

Tionól

Chun é a dhéanamh níos fusa tionóil a scaradh de réir tionscadail agus timpeallachta, úsáidimid ainmneacha próifíle mar ${ProjectName}_${Instance}, is é sin, ainm an tionscadail + shampla (ag brath ar thimpeallacht an iarratais: Dev, QA, GD, Staging, Live, agus mar sin de).

Nuair a allmhairítear chuig an bhfreastalaí tógála é, athraíonn an phróifíl a hainm go haitheantas uathúil agus bogtar chuig an bhfillteán é /Users/$Username/Library/MobileDevice/Provisioning Profiles (cá háit $Username fhreagraíonn d'ainm chuntais úsáideora an fhreastalaí tógála).

Tá dhá bhealach ann chun comhad *.ipa a thógáil - oidhreacht (PackageApplication) agus nua-aimseartha (trí chruthú agus onnmhairiú XcAchive). Meastar go bhfuil an chéad mhodh imithe i léig, ós rud é go bhfuil an modúl pacáistithe comhad app bainte as an dáileadh Xcode ó leagan 8.3. Chun é a úsáid, ní mór duit an modúl a chóipeáil ón sean-Xcode (leagan 8.2 agus níos luaithe) chuig an bhfillteán:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/

Agus ansin rith an t-ordú:

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

Ansin caithfidh tú comhad *.app an fheidhmchláir a bhailiú:

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

I gcás:

-workspace — cosán chuig comhad an tionscadail.

-scheme — an scéim a úsáideadh, a shonraítear sa tionscadal.

-derivedDataPath - cosán chun an feidhmchlár cóimeáilte (*.app) a íoslódáil.

CODE_SIGN_IDENTITY — ainm an chuntais forbróra, ar féidir a fhíorú in Keychain (iPhone Forbróir: XXXX XXXXXXX, gan TeamID idir lúibíní).

Gnéithe a bhaineann le hiarratais iOS a thógáil agus a sheachadadh

PROVISIONING_PROFILE — Aitheantas próifíle chun an t-iarratas a shíniú, is féidir a fháil leis an ordú:

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

Má úsáideann an feidhmchlár próifíl bhreise (mar shampla, le haghaidh Fógraí Brúigh), ansin ina ionad sin PROVISIONING_PROFILE cuir in iúl:

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

Ansin, ba chóir an comhad *.app mar thoradh air a phacáistiú isteach i *.ipa. Chun seo a dhéanamh, is féidir leat ordú mar:

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

Mar sin féin, meastar go bhfuil an modh seo imithe i léig ó thaobh Apple. Tá sé ábhartha *.ipa a fháil trí onnmhairiú ó chartlann na bhfeidhmchlár.

Ar dtús is gá duit an chartlann a bhailiú leis an ordú:

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

Tá na difríochtaí idir an modh tionóil agus na roghanna SYNCHRONOUS_SYMBOL_PROCESSING, a dhíchumasaíonn díluchtú siombailí ag am tógála.

Ansin ní mór dúinn comhad a ghiniúint le socruithe easpórtála:

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

I gcás:

$Method — modh seachadta a fhreagraíonn do chineál próifíl sínithe an fheidhmchláir, is é sin, le haghaidh Forbartha beidh an luach forbartha, le haghaidh Ad Hoc - ad-hoc, agus le haghaidh App Store - app-store.

$BundleID — Aitheantas an fheidhmchláir, atá sonraithe i socruithe an fheidhmchláir. Is féidir leat seiceáil leis an ordú:

defaults read $ProjectDir/Info CFBundleIdentifier

$DevAccName и $ProfileId — ainm an fhorbróra agus socruithe aitheantais próifíle sínithe a úsáideadh roimhe seo agus a chaithfidh a bheith ag teacht leis na luachanna sna socruithe easpórtála.

$TeamID — Aitheantas deich ndigit idir lúibíní i ndiaidh ainm an fhorbróra, mar shampla: Forbróir iPhone: …… (XXXXXXXXX); a sheiceáil i Keychain.

Ansin, ag baint úsáide as an ordú easpórtála, faighimid an comhad riachtanach * .ipa:

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

Seachadadh

Anois is gá an comhad a bailíodh a sheachadadh chuig an úsáideoir deiridh, is é sin, suiteáilte ar an bhfeiste.

Tá go leor seirbhísí ann chun foirgnimh Forbartha agus Ad Hoc a dháileadh, mar HockeyApp, AppBlade agus eile, ach san Airteagal seo labhróimid faoi fhreastalaí neamhspleách chun feidhmchláir a dháileadh.

Déantar an feidhmchlár do iOS a shuiteáil i 2 chéim:

  1. Léiriú suiteála an fheidhmchláir a fháil tríd an tSeirbhís Míreanna.
  2. Suiteáil an comhad *.ipa de réir na faisnéise atá sonraithe sa léiriú trí HTTPS.

Mar sin, ní mór dúinn ar dtús léiriú suiteála a ghiniúint (cineál comhaid *. plist) leis an ordú:

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

Mar a fheiceann tú, tá beagnach gach paraiméadair a bhaineann le tógáil an iarratais sa léiriú.

Leagan feidhmchláir ($AppVersion) a sheiceáil leis an ordú:

defaults read $ProjectDir/Info CFBundleVersion

Paraiméadar $ipaUrl tá nasc díreach ann chun an comhad *.ipa a íoslódáil. Ón seachtú leagan de iOS, ní mór an feidhmchlár a shuiteáil trí HTTPS. San ochtú leagan, tá athrú beag tagtha ar fhormáid an fhorléirithe: bloic le socruithe le haghaidh deilbhíní feidhmchláir cosúil le

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

Mar sin, chun an feidhmchlár a shuiteáil, is leor leathanach HTML simplí le nasc mar seo:

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

Maidir le riachtanais na ranna forbartha agus tástála, chruthaigh Plarium a bhfeidhmchlár suiteála tógála féin, a thugann dúinn:

  • neamhspleáchas agus neamhspleáchas,
  • lárú rialaithe rochtana agus suiteáil slán feidhmchlár trí naisc “sealadach” a chruthaítear go dinimiciúil,
  • feidhmiúlacht inmhéadaithe (is é sin, is féidir leis an bhfoireann forbartha, más gá, feidhmeanna atá in easnamh a chomhtháthú in iarratas atá ann cheana féin).

Tástáil

Anois beimid ag caint faoi thástáil réamh-scaoileadh an iarratais ag baint úsáide as TestFlight.

Is iad na coinníollacha riachtanacha le híoslódáil ná an cineál próifíl sínithe App Store agus láithreacht eochracha API ginte.

Tá go leor bealaí ann chun an feidhmchlár a íoslódáil:

  • trí Xcode (Eagraí),
  • via altool,
  • via Iarratas Loader le haghaidh leaganacha níos sine de Xcode (anois Transporter).

Le híoslódáil uathoibríoch, úsáidtear altool, a bhfuil dhá mhodh údaraithe aige freisin:

  • Pasfhocal a bhaineann go Sonrach le hAipe,
  • Eochair API.

Is fearr an feidhmchlár a íoslódáil leis an Eochair API.

Chun an Eochair API a fháil, téigh go dtí nasc agus eochair a ghiniúint. Chomh maith leis an eochair féin i bhformáid *.p8, beidh dhá pharaiméadar ag teastáil uainn: IssuerID agus KeyID.

Gnéithe a bhaineann le hiarratais iOS a thógáil agus a sheachadadh

Ansin, iompórtáil an eochair íoslódála chuig an bhfreastalaí tógála:

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

Sula ndéanann tú an t-iarratas a uaslódáil chuig TestFlight, ní mór duit an t-iarratas a bhailíochtú, déanaimid é seo leis an ordú:

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

Cá háit apiKey и apiIssuer tá luachanna réimse ón leathanach giniúna eochair API.

Ansin, ar bhailíochtú rathúil, déanaimid an t-iarratas a luchtú leis an ordú --upload-app leis na paraiméadair chéanna.

Déanfaidh Apple an feidhmchlár a thástáil laistigh de lá nó dhó agus beidh sé ar fáil ansin do thástálaithe seachtracha: cuirfear naisc chucu le ríomhphost lena suiteáil.

Bealach eile le feidhmchlár a íoslódáil trí altool is ea Pasfhocal a bhaineann le hAipe a úsáid.

Chun an Pasfhocal a bhaineann go Sonrach le hAipe a fháil ní mór duit dul go dtí nasc agus é a ghiniúint sa rannán Slándála.

Gnéithe a bhaineann le hiarratais iOS a thógáil agus a sheachadadh

Ansin, ba cheart duit taifead freastalaí tógála a chruthú in Keychain leis an bhfocal faire seo. Ó leagan 11 de Xcode is féidir é seo a dhéanamh leis an ordú:

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

I gcás:

$DeveloperName — ainm an chuntais forbróra iOS a úsáidtear chun logáil isteach ar sheirbhísí Apple.

$AppPswd — Pasfhocal App-Shonrach a ghintear.

Ansin, faigheann muid luach an pharaiméadar asc-soláthraí agus seiceáil an rath a bhí ar an allmhairiú pasfhocal leis an ordú:

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

Faighimid an t-aschur:

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

Mar a fheiceann tú, tá an luach Gearr Ainm (asc-soláthraí) riachtanach ag teacht leis an bparaiméadar $TeamID a d’úsáideamar agus an feidhmchlár á thógáil againn.

Chun an feidhmchlár a bhailíochtú agus a luchtú isteach i TestFlight, bain úsáid as an ordú:

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

Mar luach paraiméadar -p is féidir leat an luach a ghlacadh $AppPswd i bhfoirm neamhchriptithe (follasach).

Mar a luadh cheana, áfach, ó thaobh na feidhmíochta de, tá sé níos fearr Eochair API a roghnú le haghaidh údarú altool, ós rud é go bhfuil fadhbanna áirithe ag leaganacha éagsúla de Xcode (“ní fheiceann” Keychain, earráidí údaraithe le linn uaslódála, etc.).

Sin uile, i ndáiríre. Guím gach rath ar thógáil agus eisiúintí saor ó thrioblóid san App Store.

Foinse: will.com

Add a comment