iOS ايپليڪيشنن جي تعمير ۽ پهچائڻ جون خاصيتون

هن آرٽيڪل ۾، اسان صارفين کي iOS ايپليڪيشنن کي گڏ ڪرڻ ۽ پهچائڻ جو تجربو حصيداري ڪندا آهيون، جيڪو Plarium Krasnodar اسٽوڊيو CI/CD کي ڊيبگ ڪرڻ جي عمل ۾ گڏ ڪيو آهي.

iOS ايپليڪيشنن جي تعمير ۽ پهچائڻ جون خاصيتون

جي تياري

هر ماڻهو جيڪو هڪ طريقو آهي يا ٻيو ايپل ڊوائيسز لاء ايپليڪيشنن جي ترقي ۾ ملوث آهي، اڳ ۾ ئي انفراسٹرڪچر جي متنازع سهولت کي ساراهيو آهي. مشڪلاتون هر جڳهه مليون آهن: ڊولپر پروفائل مينيو کان ڊيبگ ۽ بلڊ ٽولز تائين.

انٽرنيٽ تي "بنياديات" بابت ڪافي مضمون موجود آهن، تنهنڪري اسان ڪوشش ڪنداسين ته اصلي شيء کي اجاگر ڪرڻ جي. ھتي آھي توھان کي پنھنجي ايپليڪيشن کي ڪاميابيءَ سان ٺاھڻ جي ضرورت آھي:

  • ڊولپر اڪائونٽ;
  • هڪ macOS تي ٻڌل ڊيوائس جيڪو بلڊ سرور طور ڪم ڪري رهيو آهي؛
  • پيدا ٿيل ڊولپر سرٽيفڪيٽ, جيڪو وڌيڪ استعمال ڪيو ويندو درخواست تي دستخط ڪرڻ لاء؛
  • منفرد ايپليڪيشن ٺاهي ID (بنڊل سڃاڻپ ڪندڙ جي اهميت کي نوٽ ڪيو وڃي، ڇاڪاڻ ته وائلڊ ڪارڊ ID جو استعمال ناممڪن بڻائي ٿو ايپليڪيشن جي ڪيترن ئي ڪمن کي استعمال ڪرڻ، مثال طور: لاڳاپيل ڊومينز، پش نوٽيفڪيشن، ايپل سائن ان ۽ ٻيا)؛
  • پروفائل درخواست جي دستخط.

ڪنهن به macOS ڊوائيس تي Keychain ذريعي هڪ ڊولپر سرٽيفڪيٽ ٺاهيو وڃي. سرٽيفڪيٽ جو قسم تمام ضروري آهي. ايپليڪيشن ماحول تي منحصر ڪري ٿو (ديو، QA، اسٽيجنگ، پيداوار) اهو مختلف ٿيندو (ترقي يا تقسيم)، جيئن ته ايپليڪيشن جي دستخط جي پروفائل جو قسم.

پروفائل جا مکيه قسم:

  • ڊولپمينٽ - ڊولپمينٽ ٽيم جي ايپليڪيشن تي دستخط ڪرڻ جو مقصد، هڪ ڊولپمينٽ سرٽيفڪيٽ استعمال ڪيو ويندو آهي (قسم جو نالو آئي فون ڊولپر: XXXXX)؛
  • Ad Hoc - هڪ ٽيسٽ ايپليڪيشن تي دستخط ڪرڻ ۽ QA ڊپارٽمينٽ پاران اندروني تصديق ڪرڻ جو ارادو ڪيو ويو آهي، ڊولپر جي تقسيم سرٽيفڪيٽ استعمال ڪيو ويندو آهي (قسم جو نالو آئي فون ڊسٽريبيوشن: XXXXX)؛
  • ايپ اسٽور - ٽيسٽ فلائيٽ ذريعي خارجي جاچ لاءِ رليز بلڊ ۽ ايپ اسٽور تي اپلوڊ ڪرڻ، ڊولپر جي تقسيم سرٽيفڪيٽ استعمال ڪئي ويندي آهي.

جڏهن ٺاهيندي ترقي ۽ ايڊهاڪ پروفائلز، اهو پڻ اشارو ڪيو ويو آهي ڊوائيس جي فهرست، جنهن تي توهان هڪ بلڊ انسٽال ڪري سگهو ٿا، جيڪا توهان کي اجازت ڏئي ٿي ته صارفين جي رسائي کي وڌيڪ محدود ڪري. ايپ اسٽور جي پروفائيل ۾ ڊوائيسز جي ڪا به فهرست نه آهي، ڇاڪاڻ ته بند ٿيل بيٽا ٽيسٽ دوران رسائي ڪنٽرول ٽيسٽ فلائيٽ پاران سنڀاليو ويندو آهي، جنهن تي بعد ۾ بحث ڪيو ويندو.

وضاحت لاءِ، توھان ھيٺ ڏنل جدول جي صورت ۾ ڊولپر جي پروفائيل کي پيش ڪري سگھو ٿا. اهو اهو سمجهڻ آسان بڻائي ٿو ته اسان کي اسيمبليءَ لاءِ ڪهڙا پيرا ميٽر گهرجن ۽ انهن کي ڪٿان حاصل ڪجي.

iOS ايپليڪيشنن جي تعمير ۽ پهچائڻ جون خاصيتون

اسيمبلي

پراجيڪٽ ۽ ماحول جي لحاظ کان اسيمبلين کي الڳ ڪرڻ آسان بڻائڻ لاءِ، اسان پروفائل جا نالا استعمال ڪندا آهيون جهڙوڪ ${ProjectName}_${Instance}، اهو آهي، پروجيڪٽ جو نالو + مثال (انحصار ڪري ٿو ايپليڪيشن ماحول تي: ديو، QA، GD، اسٽيجنگ، لائيو، وغيره).

جڏهن بلڊ سرور ڏانهن درآمد ڪيو ويو، پروفائل ان جو نالو هڪ منفرد ID ۾ تبديل ڪري ٿو ۽ فولڊر ڏانهن منتقل ڪيو ويو آهي /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 - ڊولپر اڪائونٽ جو نالو، جيڪو ڪيچين ۾ تصديق ڪري سگھجي ٿو (iPhone ڊولپر: 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

Доставка

هاڻي گڏ ڪيل فائل کي آخري صارف تائين پهچائڻ جي ضرورت آهي، اهو آهي، ڊوائيس تي نصب ڪيل.

ڊولپمينٽ ۽ ايڊهاڪ بلڊز کي ورهائڻ لاءِ ڪيتريون ئي خدمتون آهن، جهڙوڪ HockeyApp، AppBlade ۽ ٻيا، پر هن آرٽيڪل ۾ اسين ايپليڪيشنن کي ورهائڻ لاءِ اسٽينڊ اڪيلو سرور بابت ڳالهائينداسين.

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 چاٻين جي موجودگي.

اپليڪيشن ڊائون لوڊ ڪرڻ جا ڪيترائي طريقا آهن:

  • Xcode ذريعي (آرگنائيزر)،
  • altool ذريعي،
  • ايڪس ڪوڊ جي پراڻن ورزن لاءِ ايپليڪيشن لوڊر ذريعي (هاڻي ٽرانسپورٽر).

خودڪار ڊائون لوڊ ڪرڻ لاء، altool استعمال ڪيو ويندو آهي، جنهن ۾ پڻ ٻه اختيار جا طريقا آهن:

  • ايپ مخصوص پاسورڊ،
  • API ڪي.

اهو بهتر آهي ته اي پي ڪي استعمال ڪندي ايپليڪيشن کي ڊائونلوڊ ڪريو.

API Key حاصل ڪرڻ لاءِ، ڏانھن وڃو لنڪ ۽ هڪ چاٻي ٺاهي. *.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 ايپليڪيشنن جي تعمير ۽ پهچائڻ جون خاصيتون

اڳيون، توهان کي هن پاسورڊ سان ڪيچين ۾ هڪ تعمير سرور رڪارڊ ٺاهڻ گهرجي. Xcode جي نسخي 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 اختيار ڪرڻ لاء، ڇو ته Xcode جي مختلف نسخن ۾ ڪجهه مسئلا آهن ("ڏس نه ٿو" ڪيچين، اپلوڊ دوران اختيار جي غلطي، وغيره).

اهو سڀ ڪجهه آهي، اصل ۾. مان چاهيان ٿو ته هرڪو شامل هجي ڪامياب تعميرات ۽ مصيبت کان آزاد رليز ايپ اسٽور ۾.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو