የ iOS መተግበሪያዎችን የመሰብሰብ እና የማድረስ ባህሪዎች

በዚህ ጽሑፍ ውስጥ ፕላሪየም ክራስኖዶር CI / ሲዲ በማረም ሂደት ያገኘውን የ iOS መተግበሪያዎችን የመገንባት እና የማድረስ ልምድን እናካፍላለን።

የ iOS መተግበሪያዎችን የመሰብሰብ እና የማድረስ ባህሪዎች

ዝግጅት

እያንዳንዱ ሰው ፣ አንድ መንገድ ወይም ሌላ ከመተግበሪያዎች ልማት ጋር የተገናኘ የ Apple መሳሪያዎች ፣ አስቀድሞ የመሠረተ ልማት አወዛጋቢውን ምቾት ማድነቅ ችሏል። ውስብስብ ነገሮች በሁሉም ቦታ አሉ, ከገንቢ መገለጫ ምናሌ እስከ ማረም እና የግንባታ መሳሪያዎች.

በኔትወርኩ ላይ ስለ "መሰረታዊ" ብዙ ጽሑፎች አሉ, ስለዚህ ዋናውን ነገር ለማጉላት እንሞክራለን. መተግበሪያውን በተሳካ ሁኔታ ለመገንባት የሚያስፈልግዎ ነገር ይኸውና፡

  • የገንቢ መለያ;
  • እንደ የግንባታ አገልጋይ ሆኖ የሚሰራ macOS ላይ የተመሠረተ መሣሪያ;
  • የተፈጠረ የገንቢ የምስክር ወረቀትማመልከቻውን ለመፈረም የበለጠ ጥቅም ላይ የሚውል;
  • ልዩ በሆነ መተግበሪያ የተፈጠረ ID (የቅርቅብ መለያው አስፈላጊነት መታወቅ አለበት, ምክንያቱም የዱር ካርድ መታወቂያ መጠቀም ብዙ የመተግበሪያውን ተግባራት ለመጠቀም የማይቻል ያደርገዋል, ለምሳሌ: Associated Domains, Push Notifications, Apple Sign In እና ሌሎች);
  • መገለጫ የመተግበሪያ ፊርማ.

የገንቢ ሰርተፊኬት በማንኛውም የማክሮስ መሳሪያ በ Keychain በኩል መፈጠር አለበት። የምስክር ወረቀት አይነት በጣም አስፈላጊ ነው. እንደ የመተግበሪያው አካባቢ (Dev፣ QA፣ Staging፣ Production) ይለያያል (ልማት ወይም ስርጭት) እንዲሁም የመተግበሪያ ፊርማ መገለጫ አይነት።

ዋናዎቹ የመገለጫ ዓይነቶች፡-

  • ልማት - የልማት ቡድን አተገባበርን ለመፈረም የተነደፈ, የልማት የምስክር ወረቀት ጥቅም ላይ ይውላል (አይነት iPhone ገንቢ: XXXXX);
  • Ad Hoc - የገንቢውን የስርጭት ሰርተፍኬት (አይነት የ iPhone ስርጭት: XXXXX) በመጠቀም የሙከራ መተግበሪያን እና ውስጣዊ ማረጋገጫን በ QA ክፍል ለመፈረም የታሰበ;
  • አፕ ስቶር የገንቢ ስርጭት ሰርተፍኬትን በመጠቀም በTestFlight በኩል ለውጫዊ ሙከራ እና ወደ App Store የሚሰቀል የመልቀቅ ግንባታ ነው።

የልማት እና አድሆክ መገለጫዎችን ሲያመነጭም ይጠቁማል የመሳሪያ ዝርዝር, በእሱ ላይ ግንባታውን መጫን ይችላሉ, ይህም የተጠቃሚዎችን መዳረሻ የበለጠ እንዲገድቡ ያስችልዎታል. በኋላ ላይ የሚብራራው TestFlight በዝግ የቅድመ-ይሁንታ ሙከራ ጊዜ የመዳረሻ ቁጥጥር ኃላፊነት ስለሆነ በApp Store መገለጫ ውስጥ ምንም የመሳሪያዎች ዝርዝር የለም።

ግልፅ ለማድረግ የገንቢውን መገለጫ ከዚህ በታች ባለው ሠንጠረዥ መልክ ማቅረብ ይችላሉ። ይህ ለስብሰባው ምን አይነት መለኪያዎች እንደሚያስፈልጉን እና ከየት እንደምናገኝ ለመረዳት ቀላል ያደርገዋል.

የ iOS መተግበሪያዎችን የመሰብሰብ እና የማድረስ ባህሪዎች

መሰብሰብ

ስብሰባዎችን በፕሮጀክት እና በአካባቢ ለመለየት ቀላል ለማድረግ, የቅጹን መገለጫዎች ስም እንጠቀማለን ${ProjectName}_${Instance}, ማለትም የፕሮጀክቱ ስም + ምሳሌ (በመተግበሪያው አካባቢ ላይ በመመስረት: Dev, QA, GD, Staging, Live እና የመሳሰሉት).

ወደ ግንብ አገልጋዩ ሲመጡ መገለጫው ስሙን ወደ ልዩ መታወቂያ ይለውጥና ወደ አቃፊው ይንቀሳቀሳል። /Users/$Username/Library/MobileDevice/Provisioning Profiles (የት $Username ከግንባታ አገልጋዩ የተጠቃሚ መለያ ስም ጋር ይዛመዳል)።

የ *.ipa ፋይልን - ጊዜው ያለፈበት (PackageApplication) እና ዘመናዊ (በ XcAchive ፈጠራ እና ወደ ውጭ በመላክ) ለመሰብሰብ ሁለት መንገዶች አሉ። የመተግበሪያ ፋይል ማሸጊያ ሞጁል ከስሪት 8.3 ጀምሮ ከ Xcode ስርጭት ስለተወገደ የመጀመሪያው ዘዴ ጊዜ ያለፈበት እንደሆነ ይቆጠራል። እሱን ለመጠቀም ሞጁሉን ከድሮው Xcode (ስሪት 8.2 እና ከዚያ ቀደም) ወደ አቃፊው መቅዳት ያስፈልግዎታል።
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/

እና ከዚያ ትዕዛዙን ያሂዱ-

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

በመቀጠል የመተግበሪያውን * .app ፋይል መገንባት ያስፈልግዎታል፡-

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

የት

-workspace - ወደ ፕሮጀክቱ ፋይል የሚወስደው መንገድ.

-scheme - በፕሮጀክቱ ውስጥ የተገለጸ ጥቅም ላይ የዋለ እቅድ.

-derivedDataPath - የተሰበሰበውን መተግበሪያ (* .app) ለማራገፍ መንገድ።

CODE_SIGN_IDENTITY — የገንቢ መለያ ስም፣ በ Keychain ውስጥ ሊረጋገጥ ይችላል (የiPhone ገንቢ፡ XXXX XXXXXXX፣ ምንም ቅንፍ ውስጥ የቡድን መታወቂያ የለም)።

የ iOS መተግበሪያዎችን የመሰብሰብ እና የማድረስ ባህሪዎች

PROVISIONING_PROFILE - ማመልከቻውን ለመፈረም የመገለጫ መታወቂያ በትእዛዙ ሊገኝ ይችላል-

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

አፕሊኬሽኑ ተጨማሪ መገለጫ (ለምሳሌ ለግፋ ማስታወቂያዎች) ከተጠቀመ በምትኩ PROVISIONING_PROFILE አመልክት፡

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

በመቀጠል፣ የተገኘው * .app ፋይል ወደ * .ipa. መጠቅለል አለበት። ይህንን ለማድረግ የሚከተለውን ትዕዛዝ መጠቀም ይችላሉ-

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

ይሁን እንጂ ይህ ዘዴ ከ Apple አንጻር ሲታይ ጊዜ ያለፈበት እንደሆነ ይቆጠራል. ተዛማጅነት ያለው ከመተግበሪያው ማህደር ወደ ውጭ በመላክ *.ipaን እያገኘ ነው።

በመጀመሪያ መዝገብ ቤቱን በትእዛዙ መገንባት ያስፈልግዎታል-

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

ልዩነቶቹ የመሰብሰቢያ ዘዴ እና አማራጮች ናቸው SYNCHRONOUS_SYMBOL_PROCESSINGበግንባታ ጊዜ የምልክት ማራገፊያን ያሰናክላል።

በመቀጠል፣ ወደ ውጪ መላኪያ ቅንጅቶች ፋይል መፍጠር አለብን፡-

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

የት

$Method - የመላኪያ ዘዴ, ከመተግበሪያው ፊርማ የመገለጫ አይነት ጋር ይዛመዳል, ማለትም ለልማት, እሴቱ ልማት ይሆናል, ለ Ad Hoc - ad-hoc, እና ለ App Store - app-store.

$BundleID - የመተግበሪያ መታወቂያ, በመተግበሪያው ቅንብሮች ውስጥ የተገለፀው. በትእዛዙ ማረጋገጥ ይችላሉ-

defaults read $ProjectDir/Info CFBundleIdentifier

$DevAccName и $ProfileId - ከዚህ ቀደም ጥቅም ላይ የዋሉ የገንቢ ስም እና ፊርማ መገለጫ መታወቂያ ቅንብሮች እና ወደ ውጭ መላኪያ ቅንብሮች ውስጥ ካሉት እሴቶች ጋር መዛመድ አለባቸው።

$TeamID - ከገንቢው ስም በኋላ በቅንፍ ውስጥ ባለ አስር ​​አሃዝ መታወቂያ፣ ለምሳሌ: iPhone ገንቢ: ...... (XXXXXXXXX); በ Keychain ውስጥ ማረጋገጥ ይቻላል.

በመቀጠል፣ ወደ ውጪ መላኪያ ትዕዛዙን በመጠቀም አስፈላጊውን * .ipa ፋይል ​​እናገኛለን፡-

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

የመላኪያ መረጃ

አሁን የተሰበሰበው ፋይል ለዋና ተጠቃሚ ማለትም በመሳሪያው ላይ መጫን አለበት።

እንደ HockeyApp፣ AppBlade እና ሌሎች የመሳሰሉ የዴቨሎፕመንት እና አድሆክ ግንባታዎችን ለማሰራጨት ብዙ አገልግሎቶች አሉ ነገርግን በዚህ ጽሁፍ ውስጥ መተግበሪያዎችን ለማሰራጨት ራሱን የቻለ አገልጋይ ላይ እናተኩራለን።

የ iOS መተግበሪያን መጫን በ 2 ደረጃዎች ይከናወናል-

  1. በዕቃዎች አገልግሎት በኩል የመተግበሪያውን ጭነት አንጸባራቂ ማግኘት።
  2. በ HTTPS በኩል በአንጸባራቂው ውስጥ በተጠቀሰው መረጃ መሠረት *.ipa ፋይልን መጫን።

ስለዚህ በመጀመሪያ የመጫኛ አንጸባራቂ (የፋይል ዓይነት *.plist) ከትእዛዝ ጋር መፍጠር አለብን።

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

እንደሚመለከቱት, አንጸባራቂው ሁሉንም ማለት ይቻላል አፕሊኬሽኑን በመገንባት ላይ ያሉትን መለኪያዎች ይዟል.

የመተግበሪያ ስሪት ($AppVersion) በትእዛዙ ማረጋገጥ ይቻላል፡-

defaults read $ProjectDir/Info CFBundleVersion

መለኪያ $ipaUrl *.ipa ፋይልን ለማውረድ ቀጥተኛ ማገናኛ ይዟል። ከሰባተኛው የ iOS ስሪት፣ አፕሊኬሽኑ በ HTTPS መጫን አለበት። በስምንተኛው እትም ፣ የአንጸባራቂው ቅርጸት በትንሹ ተቀይሯል-ለእይታ የመተግበሪያ አዶዎች ቅንጅቶች ያላቸው ብሎኮች ተወግደዋል።

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

ስለዚህ አፕሊኬሽኑን ለመጫን እንደዚህ አይነት አገናኝ ያለው ቀላል የኤችቲኤምኤል ገጽ በቂ ነው።

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

ለልማት እና ለሙከራ ክፍሎች ፍላጎቶች ፕላሪየም የራሱን የግንባታ መጫኛ መተግበሪያ ፈጥሯል ፣ ይህም ይሰጠናል-

  • ራስን መቻል እና ነፃነት ፣
  • የመዳረሻ ቁጥጥርን ማእከላዊ ማድረግ እና የመተግበሪያዎች አስተማማኝ ጭነት በ "ጊዜያዊ" ፣ በተለዋዋጭ በተፈጠሩ አገናኞች ፣
  • ሊገለጽ የሚችል ተግባር (ይህም የእድገት ቡድኑ አስፈላጊ ከሆነ የጎደሉትን ተግባራት አሁን ባለው መተግበሪያ ውስጥ ማዋሃድ ይችላል)።

ሙከራ

አሁን ስለ ትግበራ ቅድመ-መለቀቅ ሙከራ እንነጋገራለን TestFlight.

ለማውረድ የሚያስፈልጉ ቅድመ ሁኔታዎች የመተግበሪያ መደብር መፈረሚያ መገለጫ እና የመነጩ የኤፒአይ ቁልፎች መኖር ናቸው።

መተግበሪያውን ለማውረድ ብዙ መንገዶች አሉ።

  • በ Xcode (አደራጅ) በኩል፣
  • በአልቶል በኩል ፣
  • በመተግበሪያ ጫኚ በኩል ለቆዩ የXcode ስሪቶች (አሁን ማጓጓዣ)።

ለራስ-ሰር ማውረድ ፣ altool ጥቅም ላይ ይውላል ፣ እሱም እንዲሁም ሁለት የፍቃድ ዘዴዎች አሉት።

  • የመተግበሪያ የተወሰነ የይለፍ ቃል፣
  • የኤፒአይ ቁልፍ።

ኤፒአይ ቁልፍን ተጠቅመው አፕሊኬሽኑን ማውረድ ይመረጣል።

የኤፒአይ ቁልፍን ለማግኘት ወደ ይሂዱ ማያያዣ እና ቁልፍ ማመንጨት. በ * .p8 ቅርጸት ካለው ቁልፍ በተጨማሪ ሁለት መለኪያዎች ያስፈልጉናል፡ IssuerID እና KeyID.

የ iOS መተግበሪያዎችን የመሰብሰብ እና የማድረስ ባህሪዎች

በመቀጠል የወረደውን ቁልፍ ወደ ግንባታ አገልጋዩ ያስመጡ፡-

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

አፕሊኬሽኑን ወደ TestFlight ከመጫንዎ በፊት፣ አፕሊኬሽኑን ማረጋገጥ አለብዎት፣ ይህን የምናደርገው በትእዛዙ ነው፡-

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

የት apiKey и apiIssuer ከኤፒአይ ቁልፍ ማመንጨት ገጽ የመስክ እሴቶች አሏቸው።

በተጨማሪም ፣ በተሳካ ሁኔታ ከተረጋገጠ ፣ መተግበሪያውን በትእዛዙ እንጭነዋለን --upload-app ከተመሳሳይ መመዘኛዎች ጋር.

ማመልከቻው በአንድ ወይም በሁለት ቀናት ውስጥ በአፕል ይሞከራል እና ከዚያ በኋላ ለዉጭ ሞካሪዎች የሚገኝ ይሆናል፡ ለመጫን አገናኞች በፖስታ ይላካሉ።

አፕሊኬሽኑን በ altool ለማውረድ ሌላው መንገድ መተግበሪያ-ተኮር የይለፍ ቃልን መጠቀም ነው።

መተግበሪያ-ተኮር የይለፍ ቃል ለማግኘት ወደ መሄድ ያስፈልግዎታል ማያያዣ እና በደህንነት ክፍል ውስጥ ያመነጩት.

የ iOS መተግበሪያዎችን የመሰብሰብ እና የማድረስ ባህሪዎች

በመቀጠል በዚህ የይለፍ ቃል በ Keychain ውስጥ የግንባታ አገልጋይ ግቤት ይፍጠሩ። ከ Xcode ስሪት 11፣ ይህ በትእዛዝ ሊከናወን ይችላል፡-

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

የት

$DeveloperName - ወደ አፕል አገልግሎቶች ለመግባት የ iOS ገንቢ መለያ ስም።

$AppPswd - የመነጨ መተግበሪያ-ተኮር የይለፍ ቃል።

በመቀጠል የ asc-አቅራቢውን መለኪያ ዋጋ እናገኛለን እና የይለፍ ቃል ማስመጣቱን በትእዛዙ ስኬት እንፈትሻለን-

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

ውጤቱን እናገኛለን:

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

እንደሚመለከቱት፣ የሚፈለገው የአጭር ስም (asc-provider) እሴት አፕሊኬሽኑን ስንገነባ ከተጠቀምነው የ$TeamID መለኪያ ጋር ይዛመዳል።

መተግበሪያውን በTestFlight ውስጥ ለማረጋገጥ እና ለመጫን፣ ትዕዛዙን ይጠቀሙ፡-

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

እንደ መለኪያ እሴት -p ዋጋውን መውሰድ ይችላሉ $AppPswd ባልተመሰጠረ (ግልጽ) ቅጽ።

ነገር ግን፣ ቀደም ሲል እንደተገለፀው፣ ከአፈጻጸም እይታ አንጻር፣ የተለያዩ የ Xcode ስሪቶች የተወሰኑ ችግሮች ስላሏቸው (የ Keychainን “አይታይም” ፣ በሚሰቀልበት ጊዜ የፈቃድ ስህተቶች ፣ ወዘተ) ስለሆነ ለአልቶል ፈቃድ የኤፒአይ ቁልፍን መምረጥ የተሻለ ነው። ).

እንደ እውነቱ ከሆነ ያ ብቻ ነው። በApp Store ውስጥ ስኬታማ ግንባታዎችን እና ከችግር ነጻ የሆኑ ልቀቶችን ሁሉም እንዲሳተፍ እመኛለሁ።

ምንጭ: hab.com

አስተያየት ያክሉ