د iOS غوښتنلیکونو جوړولو او وړاندې کولو ځانګړتیاوې

په دې مقاله کې، موږ کاروونکو ته د iOS غوښتنلیکونو د راټولولو او وړاندې کولو تجربه شریکوو، کوم چې د پلیریم کراسنودار سټوډیو د CI/CD ډیبګ کولو په پروسه کې راټول کړي.

د iOS غوښتنلیکونو جوړولو او وړاندې کولو ځانګړتیاوې

د چمتو کولو لپاره

هر هغه څوک چې په یو ډول یا بل ډول د آپیل وسیلو لپاره د غوښتنلیکونو په پراختیا کې دخیل وي دمخه د زیربنا متنازع اسانتیا ستاینه کړې. ستونزې هرچیرې موندل کیږي: د پراختیا کونکي پروفایل مینو څخه د ډیبګ او جوړونې وسیلو پورې.

په انټرنیټ کې د "بنسټیزو" په اړه ډیری مقالې شتون لري، نو موږ به هڅه وکړو چې اصلي شی روښانه کړو. دلته هغه څه دي چې تاسو اړتیا لرئ خپل غوښتنلیک په بریالیتوب سره جوړ کړئ:

  • د پراختیا کونکي حساب;
  • د macOS پر بنسټ وسیله د جوړونکي سرور په توګه کار کوي؛
  • تولید شوی د پراختیا کونکي سند، کوم چې به د غوښتنلیک لاسلیک کولو لپاره نور هم وکارول شي؛
  • د ځانګړي سره غوښتنلیک رامینځته شوی ID (د بنډل پیژندونکي اهمیت باید په پام کې ونیول شي، ځکه چې د وائلډ کارډ ID کارول د غوښتنلیک ډیری دندو کارول ناممکن کوي، د بیلګې په توګه: تړل شوي ډومینونه، پش خبرتیاوې، د ایپل لاسلیک او نور)؛
  • پروفایل د غوښتنلیک لاسلیکونه.

د پراختیا کونکي سند باید په هر میکوس وسیلې کې د کیچین له لارې رامینځته شي. د سند ډول خورا مهم دی. د غوښتنلیک چاپیریال پورې اړه لري (Dev، QA، سټیګینګ، تولید) دا به توپیر ولري (پراختیا یا توزیع)، لکه څنګه چې د غوښتنلیک د لاسلیک پروفایل ډول وي.

د پروفایل اصلي ډولونه:

  • پراختیا - د پراختیایی ټیم غوښتنلیک لاسلیک کولو لپاره د پراختیا سند کارول کیږي (د آی فون پراختیا کونکي ډول نوم: XXXXX)؛
  • Ad Hoc - د QA ډیپارټمنټ لخوا د ازموینې غوښتنلیک لاسلیک کولو او داخلي تایید لپاره هدف دی ، د پراختیا کونکي توزیع سند کارول کیږي (د آی فون توزیع ډول نوم: XXXXX)؛
  • د اپل سټور - د ټیسټ فلائٹ له لارې د بهرني ازموینې لپاره خوشې کول او اپل سټور ته اپلوډ کول ، د پراختیا کونکي توزیع سند کارول کیږي.

کله چې پراختیا او اډ هاک پروفایلونه رامینځته کوي ، دا هم اشاره کیږي د وسایلو لیست، په کوم کې چې تاسو کولی شئ یو تعمیر نصب کړئ ، کوم چې تاسو ته اجازه درکوي د کاروونکو لپاره لاسرسی نور محدود کړئ. د اپل سټور پروفایل کې د وسیلو لیست شتون نلري ، ځکه چې د تړل شوي بیټا ازموینې پرمهال د لاسرسي کنټرول د ټیسټ فلائٹ لخوا اداره کیږي ، کوم چې به وروسته بحث وشي.

د وضاحت لپاره، تاسو کولی شئ د پراختیا کونکي پروفایل د لاندې جدول په بڼه وړاندې کړئ. دا دا اسانه کوي چې پوه شي چې موږ د مجلس لپاره کوم پیرامیټرو ته اړتیا لرو او له کوم ځای څخه یې ترلاسه کوو.

د iOS غوښتنلیکونو جوړولو او وړاندې کولو ځانګړتیاوې

شورا

د پروژې او چاپیریال له مخې د غونډو جلا کول اسانه کولو لپاره، موږ د پروفایل نومونه کاروو لکه ${ProjectName}_${Instance}، دا دی، د پروژې نوم + مثال (د غوښتنلیک چاپیریال پورې اړه لري: دیو، QA، GD، سټینګ، ژوند، او داسې نور).

کله چې د جوړونکي سرور ته وارد شي، پروفایل خپل نوم یو ځانګړي ID ته بدلوي او فولډر ته لیږدول کیږي /Users/$Username/Library/MobileDevice/Provisioning Profiles (چیرته $Username د جوړ شوي سرور د کارونکي حساب نوم سره مطابقت لري).

د *.ipa فایل جوړولو لپاره دوه لارې شتون لري - میراث (پیکیج اپلیکیشن) او عصري (د XcAchive جوړولو او صادرولو له لارې). لومړی میتود متروک ګڼل کیږي ، ځکه چې د 8.3 نسخه راهیسې د ایپ فایل بسته کولو ماډل د ایکس کوډ توزیع څخه لرې شوی. د دې کارولو لپاره ، تاسو اړتیا لرئ ماډل د زاړه ایکس کوډ (نسخه 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 - د پراختیا کونکي حساب نوم، کوم چې په کیچین کې تایید کیدی شي (د آی فون پراختیا کونکي: XXXX XXXXXXX، پرته له ټیم ID په بریکٹ کې).

د iOS غوښتنلیکونو جوړولو او وړاندې کولو ځانګړتیاوې

PROVISIONING_PROFILE - د غوښتنلیک لاسلیک کولو لپاره د پروفایل ID، کوم چې د کمانډ سره ترلاسه کیدی شي:

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"

په هرصورت، دا طریقه د ایپل له نظره متروک ګڼل کیږي. دا اړینه ده چې د غوښتنلیک آرشیف څخه صادرولو سره *.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 - د تحویلي میتود ، د غوښتنلیک لاسلیک پروفایل ډول سره مطابقت لري ، دا د پراختیا لپاره ارزښت به پراختیا وي ، د اډ هاک - اډ-هاک لپاره ، او د اپل سټور - ایپ سټور لپاره.

$BundleID - د غوښتنلیک ID، کوم چې د غوښتنلیک په ترتیباتو کې مشخص شوی. تاسو کولی شئ د کمانډ سره وګورئ:

defaults read $ProjectDir/Info CFBundleIdentifier

$DevAccName и $ProfileId - د پراختیا کونکي نوم او د لاسلیک پروفایل ID تنظیمات چې دمخه کارول شوي او باید د صادراتو تنظیماتو کې ارزښتونو سره سمون ولري.

$TeamID - د پراختیا کونکي نوم وروسته په بریکٹونو کې لس عددي ID، د بیلګې په توګه: د آی فون پرمخ وړونکی: …… (XXXXXXXXXX)؛ په کیچین کې چیک کیدی شي.

بیا، د صادراتو کمانډ په کارولو سره، موږ اړین *.ipa فایل ترلاسه کوو:

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

د لېږد معلومات

اوس راټول شوي فایل باید پای کارونکي ته وسپارل شي ، دا په وسیله نصب شوی.

د پراختیا او اډ هاک جوړونو توزیع کولو لپاره ډیری خدمتونه شتون لري ، لکه هاکي ایپ ، ایپ بلیډ او نور ، مګر پدې مقاله کې به موږ د غوښتنلیکونو توزیع لپاره د سټایلون سرور په اړه وغږیږو.

د iOS لپاره غوښتنلیک نصب کول په 2 مرحلو کې ترسره کیږي:

  1. د توکو خدمت له لارې د غوښتنلیک نصبولو څرګندونه ترلاسه کول.
  2. د *.ipa فایل نصب کول د HTTPS له لارې په منشور کې مشخص شوي معلوماتو سره سم.

په دې توګه، موږ باید لومړی د کمانډ سره د نصب کولو منشور (د فایل ډول *.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>

په دې توګه، د غوښتنلیک نصبولو لپاره، یو ساده HTML پاڼه د دې په څیر لینک سره کافي ده:

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

د پراختیا او ازموینې څانګو اړتیاو لپاره ، پلیریم خپل د نصب کولو غوښتنلیک رامینځته کړی ، کوم چې موږ ته راکوي:

  • خپلواکي او خپلواکي
  • د لاسرسي کنټرول مرکزي کول او د "موقتي" متحرک ډول رامینځته شوي لینکونو له لارې د غوښتنلیکونو خوندي نصب کول ،
  • د پراخیدو وړ فعالیت (دا د پراختیا ټیم، که اړتیا وي، کولی شي ورک شوي دندې په موجوده غوښتنلیک کې مدغم کړي).

ازمايښت

اوس موږ به د غوښتنلیک کارولو دمخه د خوشې کیدو ازموینې په اړه وغږیږو TestFlight.

د ډاونلوډ کولو لپاره اړین شرایط د اپل سټور لاسلیک پروفایل ډول او د تولید شوي API کیلي شتون دي.

د غوښتنلیک ډاونلوډ کولو لپاره ډیری لارې شتون لري:

  • د ایکس کوډ (منظم کونکي) له لارې،
  • د altool له لارې،
  • د Xcode زړو نسخو لپاره د غوښتنلیک لوډر له لارې (اوس ټرانسپورټر).

د اتوماتیک ډاونلوډ کولو لپاره، altool کارول کیږي، کوم چې د جواز ورکولو دوه طریقې هم لري:

  • د اپلیکیشن ځانګړی پاسورډ،
  • د API کیلي.

دا غوره ده چې د API کیلي په کارولو سره غوښتنلیک ډاونلوډ کړئ.

د API کیلي ترلاسه کولو لپاره، لاړ شئ مخونه او کیلي پیدا کړئ. په *.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 د API کلیدي نسل پاڼې څخه د ساحې ارزښتونه لري.

بیا، د بریالي تایید وروسته، موږ غوښتنلیک د کمانډ سره پورته کوو --upload-app د ورته پیرامیټونو سره.

غوښتنلیک به په یوه یا دوه ورځو کې د ایپل لخوا ازمول شي او بیا به بهرني ازموینو ته شتون ولري: دوی ته به د نصب لپاره لینکونه بریښنالیک ورکړل شي.

د altool له لارې د غوښتنلیک ډاونلوډ کولو بله لاره د اپلیکیشن ځانګړي پاسورډ کارول دي.

د اپلیکیشن ځانګړي پاسورډ ترلاسه کولو لپاره تاسو اړتیا لرئ لاړشئ مخونه او په امنیت برخه کې یې پیدا کړئ.

د iOS غوښتنلیکونو جوړولو او وړاندې کولو ځانګړتیاوې

بیا، تاسو باید د دې پټنوم سره په کیچین کې د جوړونکي سرور ریکارډ جوړ کړئ. د ایکس کوډ 11 نسخه څخه دا د کمانډ سره ترسره کیدی شي:

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

چیرته چې:

$DeveloperName - د iOS پراختیا کونکي حساب نوم چې د ایپل خدماتو ته د ننوتلو لپاره کارول کیږي.

$AppPswd - د اپلیکیشن ځانګړي پاسورډ لخوا رامینځته شوی.

بیا ، موږ د asc-provider پیرامیټر ارزښت ترلاسه کوو او د کمانډ سره د پاسورډ واردولو بریا چیک کوو:

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 په غیر کوډ شوي (ښکاره) بڼه کې.

په هرصورت، لکه څنګه چې مخکې یادونه وشوه، د فعالیت له نظره، دا غوره ده چې د altool اختیار لپاره د API کیلي غوره کړئ، ځکه چې د ایکس کوډ مختلف نسخې ځینې ستونزې لري (کیچین "نه ګوري"، د اپلوډ په وخت کې د اجازې غلطی، او نور).

دا ټول دي، په حقیقت کې. زه هیله لرم چې هرڅوک په اپل سټور کې بریالي جوړونه او له ستونزو څخه پاک ریلیزونه پکې ښکیل وي.

سرچینه: www.habr.com

Add a comment