เปเบเบเบปเบเบเบงเบฒเบกเบเบตเป, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบเบฑเบเบเบฐเบชเบปเบเบเบฒเบเบเบญเบเบเบฒเบเบเบฐเบเบญเบเปเบฅเบฐเบชเบปเปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ iOS เปเบซเปเบเบฑเบเบเบนเปเปเบเป, เบเบตเปเบชเบฐเบเบนเบเบดเปเบญ Plarium Krasnodar เปเบเปเบชเบฐเบชเบปเบกเปเบเบเบฐเบเบงเบเบเบฒเบ debugging CI / CD.
เบเบฒเบโเบเบถเบโเบญเบปเบโเบฎเบปเบก
เบเบธเบเปเบเบปเบเบเบตเปเบขเบนเปเปเบเบงเบดเบเบตเบเบฒเบเบซเบเบถเปเบเบซเบผเบทเบญเบทเปเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบเบญเบธเบเบฐเบเบญเบ Apple เปเบเปเบเบปเบเบเปเบญเบเปเบเบดเบเบเบงเบฒเบกเบชเบฐเบเบงเบเบชเบฐเบเบฒเบเบเบตเปเบเบฑเบเปเบเปเบเบเบญเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบ. เบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเปเบกเปเบเบเบปเบเปเบซเบฑเบเบขเบนเปเบเบปเปเบงเบเบธเบเปเบซเปเบ: เบเบฒเบเปเบกเบเบนเปเบเบฃเปเบเบฅเปเบเบนเปเบเบฑเบเบเบฐเบเบฒเปเบเบชเบนเปเบเบฒเบเบเบตเบเบฑเบเปเบฅเบฐเปเบเบทเปเบญเบเบกเบทเบชเปเบฒเบ.
เบกเบตเบซเบผเบฒเบเบเบปเบเบเบงเบฒเบกเบเปเบฝเบงเบเบฑเบ "เบเบทเปเบเบเบฒเบ" เปเบเบญเบดเบเปเบเบตเปเบเบฑเบ, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฐเบเบฒเบเบฒเบกเปเบเบฑเปเบเปเบชเปเบชเบดเปเบเบเบตเปเบเบปเปเบเบเป. เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบเบทเปเบญเบชเปเบฒเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบญเบเบเปเบฒเบเปเบซเปเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ:
เบเบฑเบเบเบตเบเบนเปเบเบฑเบเบเบฐเบเบฒ ;- เบญเบธเบเบฐเบเบญเบเบเบตเปเปเบเป macOS เปเบฎเบฑเบเปเปเบฒเบเบตเปเปเบเบฑเบเปเบเบตเบเปเบงเบตเบชเปเบฒเบ;
- เบชเปเบฒเบเบเบถเปเบ
เปเบโเบขเบฑเปเบโเบขเบทเบโเบเบฒเบโเบเบฑเบโเบเบฐโเบเบฒโ , เบเบถเปเบเบเบฐเบเบทเบเบเปเบฒเปเบเปเบเบทเปเบกเบญเบตเบเปเบเบทเปเบญเปเบเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ; - เบเบฒเบโเบชเปเบฒเบโเบเบฑเปเบโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเบเบตเปโเบกเบตโเปเบญโเบเบฐโเบฅเบฑเบโ
ID (เบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบเบญเบ Bundle Identifier เบเบงเบเบชเบฑเบเปเบเบ, เปเบเบฒเบฐเบงเปเบฒเบเบฒเบเปเบเป wildcard ID เปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเปเบชเบฒเบกเบฒเบเปเบเปเบซเบผเบฒเบเบซเบเปเบฒเบเบตเปเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ, เบเบปเบงเบขเปเบฒเบ: Associated Domains, Push Notifications, Apple Sign In เปเบฅเบฐเบญเบทเปเบเป); เบเปเปเบกเบนเบ เบฅเบฒเบเปเบเบฑเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ.
เปเบเบขเบฑเปเบเบขเบทเบเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบฐเบเปเบญเบเบเบทเบเบชเปเบฒเบเบเปเบฒเบ Keychain เปเบเบญเบธเบเบฐเบเบญเบ macOS เปเบเปเบเปเบเบฒเบก. เบเบฐเปเบเบเบเบญเบเปเบเบขเบฑเปเบเบขเบทเบเปเบกเปเบเบกเบตเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบซเบผเบฒเบ. เบเบถเปเบเบเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ (Dev, QA, Staging, Production) เบกเบฑเบเบเบฐเปเบเบเบเปเบฒเบเบเบฑเบ (เบเบฒเบเบเบฑเบเบเบฐเบเบฒ เบซเบผเบทเบเบฒเบเปเบเบเบขเบฒเบ), เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฐเปเบเบเบเบญเบเปเบเบฃเปเบเบฅเปเบฅเบฒเบเปเบเบฑเบเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ.
เบเบฐโเปเบเบโเบเบปเปเบโเบเปโเบเบญเบ profileโ:
- เบเบฒเบโเบเบฑเบโเบเบฐโเบเบฒ - เบเบธเบโเบเบฐโเบชเบปเบโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบฅเบปเบโเบเบฒเบกโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเบเบญเบโเบเบตเบกโเบเบฑเบโเบเบฐโเบเบฒโ, เปเบโเบขเบฑเปเบโเบขเบทเบโเบเบฒเบโเบเบฑเบโเบเบฐโเบเบฒโเปเบเปโเบเบทเบโเบเปเบฒโเปเบเป (เบเบฐโเปเบเบโเบเบทเป iPhone เบเบนเปโเบเบฑเบโเบเบฐโเบเบฒโ: XXXXXโ)โ;
- Ad Hoc - เบกเบตเบเบธเบเบเบฐเบชเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฅเบปเบเบเบฒเบกเปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเบฐเบเบฒเบเบเบงเบเบชเบญเบเบเบฒเบเปเบเปเบเบเบเบฐเปเบเบ QA, เปเบเบขเบฑเปเบเบขเบทเบเบเบฒเบเปเบเบเบขเบฒเบเบเบญเบเบเบนเปเบเบฑเบเบเบฐเบเบฒเบเบทเบเบเปเบฒเปเบเป (เบเบทเปเบเบฒเบเปเบเบเบขเบฒเบ iPhone: XXXXX);
- App Store - เบเปเบญเบเบเบปเบงเบชเปเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเบเบญเบเบเปเบฒเบ TestFlight เปเบฅเบฐเบเบฒเบเบญเบฑเบเปเบซเบฅเบเปเบเบเบฑเบ App Store, เปเบเบขเบฑเปเบเบขเบทเบเบเบฒเบเปเบเบเบขเบฒเบเบเบญเบเบเบนเปเบเบฑเบเบเบฐเบเบฒเบเบทเบเบเปเบฒเปเบเป.
เปเบกเบทเปเบญเบชเปเบฒเบเปเบเบฃเปเบเบฅเบเบฒเบเบเบฑเบเบเบฐเบเบฒเปเบฅเบฐ Ad Hoc, เบกเบฑเบเบเบฑเบเบเบทเบเบเบตเปเบเบญเบ
เปเบเบทเปเบญเบเบงเบฒเบกเบเบฑเบเปเบเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบชเบฐเปเบซเบเบตเปเบเบฃเปเบเบฅเปเบเบญเบเบเบนเปเบเบฑเบเบเบฐเบเบฒเปเบเบฎเบนเบเปเบเบเบเบฒเบเบฐเบฅเบฒเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป. เบเบตเปเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเบฒเบเบเบถเปเบเบเบตเปเบเบฐเปเบเบปเปเบฒเปเบเบชเบดเปเบเบเบตเปเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบเบญเบเปเบฅเบฐเบเปเบญเบเบเบตเปเบเบฐเปเบญเบปเบฒเบเบงเบเบกเบฑเบเบกเบฒเบเบฒเบ.
Assembly
เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเบฒเบเบเบถเปเบเปเบเบเบฒเบเปเบเบเบเบฒเบเบเบฐเบเบญเบเบเบฒเบกเปเบเบเบเบฒเบ เปเบฅเบฐเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบทเปเปเบเบฃเปเบเบฅเปเปเบเบฑเปเบ ${ProjectName}_${Instance}
, เบเบฑเปเบเปเบกเปเบ, เบเบทเปเปเบเบเบเบฒเบ + เบเบปเบงเบขเปเบฒเบ (เบเบถเปเบเบเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ: Dev, QA, GD, Staging, Live, เปเบฅเบฐเบญเบทเปเบเป).
เปเบกเบทเปเบญเบเปเบฒเปเบเบปเปเบฒเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเบเบฒเบเบเปเปเบชเปเบฒเบ, เปเบเบฃเปเบเบฅเปเบเบฐเบเปเบฝเบเบเบทเปเบเบญเบเบเบปเบเปเบเบฑเบ ID เบเบตเปเปเบเบฑเบเปเบญเบเบฐเบฅเบฑเบเปเบฅเบฐเบเบทเบเบเปเบฒเบเปเบเปเบเบเปเบเบต /Users/$Username/Library/MobileDevice/Provisioning Profiles
(เบเปเบญเบเปเบ $Username
เบเบปเบเบเบฑเบเบเบทเปเบเบฑเบเบเบตเบเบนเปเปเบเปเบเบญเบเปเบเบตเบเปเบงเบตเบชเปเบฒเบ).
เบกเบตเบชเบญเบเบงเบดเบเบตเบเบตเปเบเบฐเบชเปเบฒเบเปเบเบฅเป *.ipa - legacy (PackageApplication) เปเบฅเบฐเบเบตเปเบเบฑเบเบชเบฐเปเบซเบก (เบเปเบฒเบเบเบฒเบเบชเปเบฒเบเปเบฅเบฐเบชเบปเปเบเบญเบญเบ XcAchive). เบงเบดเบเบตเบเบฒเบเบเปเบฒเบญเบดเบเปเบกเปเบเบเบทเบงเปเบฒเบฅเปเบฒเบชเบฐเปเบซเบก, เบเบฑเบเบเบฑเปเบเปเบเปเบฎเบธเปเบ 8.3, เปเบกเบเบนเบเบเบฒเบเบซเบธเปเบกเบซเปเปเปเบเบฅเป app เปเบเปเบเบทเบเบฅเบถเบเบญเบญเบเบเบฒเบเบเบฒเบเปเบเบเบขเบฒเบ 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โ, เปเบเบโเบเปเปโเบกเบต TeamID เปเบโเบงเบปเบโเปเบฅเบฑเบโ)โ.
PROVISIONING_PROFILE
- ID เปเบโเบฃโเปเบโเบฅเปโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบฅเบปเบโเบเบฒเบกโเปเบโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโ, เบเบตเปโเบชเบฒโเบกเบฒเบโเปเบเปโเบฎเบฑเบโเบเปเบงเบโเบเปเบฒโเบชเบฑเปเบโ:
cd "/Users/$Username/Library/MobileDevice/Provisioning Profiles/" && find *.mobileprovision -type f | xargs grep -li ">${ProjectName}_${Instance}<" | sed -e 's/.mobileprovision//'
เบเปเบฒเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบเปเปเบเบฃเปเบเบฅเปเปเบเบตเปเบกเปเบเบตเบก (เบเบปเบงเบขเปเบฒเบ, เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเปเบเปเบเบทเบญเบ Push), เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบเบเบตเปเบเบฐ 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
โ ID เปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ, เปเบเบดเปเบเบฅเบฐเบเบธเปเบงเปเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบงเบเบชเบญเบเบเปเบงเบเบเปเบฒเบชเบฑเปเบ:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName ะธ $ProfileId
โ เบเบทเปโเบเบนเปโเบเบฑเบโเบเบฐโเบเบฒโเปเบฅเบฐโเบเบฒเบโเบเบฑเปเบโเบเปเบฒ ID เบเปเปโเบกเบนเบโเบฅเบฒเบโเปเบเบฑเบโเบเบตเปโเปเบเปโเบเบทเบโเบเปเบฒโเปเบเปโเปเบโเปเบกเบทเปเบญโเบเปเบญเบโเปเบฅเบฐโเบเปเบญเบโเบเบปเบโเบเบฑเบโเบเปเบฒโเปเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโเบเบฒเบโเบชเบปเปเบโเบญเบญเบโ.
$TeamID
โ ID เบชเบดเบโเบเบปเบงโเปเบฅเบโเปเบโเบงเบปเบโเปเบฅเบฑเบโเบซเบผเบฑเบโเบเบฒเบโเบเบทเปโเบเบนเปโเบเบฑเบโเบเบฐโเบเบฒโ, เบเบปเบงโเบขเปเบฒเบโ: iPhone เบเบนเปโเบเบฑเบโเบเบฐโเบเบฒโ: โฆโฆ (XXXXXXXXXXโ); เบชเบฒเบกเบฒเบเบเบงเบเบชเบญเบเปเบเปเปเบ Keychain.
เบเปเปเปเบ, เบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเบชเบฑเปเบเบชเบปเปเบเบญเบญเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเปเบเบฅเป *.ipa เบเบตเปเบเปเบฒเปเบเบฑเบ:
xcodebuild
-exportArchive
-archivePath $ProjectDir/build/$ProjectName.xcarchive
-exportPath $ProjectDir
-exportOptionsPlist $ExportSettings
เบเปเปเบกเบนเบเบเบฒเบเบเบปเบเบชเบปเปเบ
เปเบเบเบฑเบเบเบธเบเบฑเบเปเบเบฅเปเบเบตเปเปเบเบฑเบเบเปเบฒเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบชเบปเปเบเบเบฑเบเบเบนเปเปเบเปเบชเบธเบเบเปเบฒเบ, เบเบฑเปเบเปเบกเปเบ, เบเบดเบเบเบฑเปเบเบขเบนเปเปเบเบญเบธเบเบฐเบเบญเบ.
เบกเบตเบซเบผเบฒเบเบเปเบฅเบดเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบเบขเบฒเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเปเบฅเบฐเบเบฒเบเบเปเปเบชเปเบฒเบ Ad Hoc, เปเบเบฑเปเบ: HockeyApp, AppBlade เปเบฅเบฐเบญเบทเปเบเป, เปเบเปเปเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเบขเบทเบเบขเบนเปเบเบปเบเบเบฝเบงเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบเบขเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ.
เบเบฒเบโเบเบดเบโเบเบฑเปเบโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเบชเปเบฒโเบฅเบฑเบ iOS เปเบเปโเปเบงโเบฅเบฒโเบชเบฐโเบเบฒเบโเบเบตเปโเปเบ 2 เบเบฑเปเบโเบเบญเบโ:
- เปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเปเบเบเบเบฒเบเบเบดเบเบเบฑเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเปเบฒเบเบฅเบฒเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ.
- เบเบฒเบเบเบดเบเบเบฑเปเบเปเบเบฅเป *.ipa เบเบฒเบกเบเปเปเบกเบนเบเบเบตเปเบฅเบฐเบเบธเปเบงเปเปเบ manifest เบเปเบฒเบ HTTPS.
เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบญเบดเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบ manifest เบเบฒเบเบเบดเบเบเบฑเปเบ (เบเบฐเปเบเบเปเบเบฅเป *.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
เบเบฑเปเบเบเบตเปเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเป, manifest เบกเบตเปเบเบทเบญเบเบเบธเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบเปเปเบชเปเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ.
เปเบงเบตเบเบฑเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ ($AppVersion
) เบชเบฒเบกเบฒเบเบเบงเบเบชเบญเบเปเบเปเบเปเบงเบเบเปเบฒเบชเบฑเปเบ:
defaults read $ProjectDir/Info CFBundleVersion
Parameter $ipaUrl
เบกเบตเบฅเบดเปเบเปเบเบเบเบปเบเปเบเบทเปเบญเบเบฒเบงเปเบซเบฅเบเปเบเบฅเป *.ipa. เบเบฒเบ iOS เบฎเบธเปเบเบเบต XNUMX, เปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเปเบญเบเบเบทเบเบเบดเบเบเบฑเปเบเบเปเบฒเบ HTTPS. เปเบเบฎเบธเปเบเบเบตเปเบเบ, เบฎเบนเบเปเบเบเบเบญเบ manifest เปเบเปเบเปเบฝเบเปเบเบเปเบฅเบฑเบเบเปเบญเบ: เบเบฅเบฑเบญเบเบเบตเปเบกเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเบชเปเบฒเบฅเบฑเบเปเบญเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบเบฑเปเบ:
<images>
<image>...</image>
</images>
เบเบฑเปเบเบเบฑเปเบ, เปเบเบทเปเบญเบเบดเบเบเบฑเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ, เบซเบเปเบฒ HTML เบเบตเปเบเปเบฒเบเบเบฒเบเบเบตเปเบกเบตเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเบฑเปเบเบเบตเปเปเบกเปเบเบเบฝเบเบเป:
itms-services://?action=download-manifest&url=https://$ServerUrl/$ProjectName/$Instance/iOS/$AppVersion/manifest.plist
เบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบญเบเบเบฐเปเบเบเบเบฑเบเบเบฐเบเบฒเปเบฅเบฐเบเบฒเบเบเบปเบเบชเบญเบ, Plarium เปเบเปเบชเปเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฒเบเบเบดเบเบเบฑเปเบเบเบฒเบเบเปเปเบชเปเบฒเบเบเบญเบเบเบปเบเปเบญเบ, เปเบเบดเปเบเปเบซเปเบเบงเบเปเบฎเบปเบฒ:
- เปเบญเบโเบเบฐโเบฅเบฒเบโเปเบฅเบฐโเปเบญโเบเบฐโเบฅเบฒเบโ,
- เบเบฒเบโเบเบงเบโเบเบธเบกโเบเบฒเบโเปเบเบปเปเบฒโเปเบเบดเบโเบชเบนเบโเบเบฒเบโเปเบฅเบฐโเบเบฒเบโเบเบดเบโเบเบฑเปเบโเบเบงเบฒเบกโเบเบญเบโเปเบโเบเบญเบโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเปเบเบโเบเปเบฒเบ "เบเบฒเบโเบเบปเปเบงโเบเบฒเบงโ" เบเบฒเบโเปเบเบทเปเบญเบกโเบเปเปโเบเบตเปโเบชเปเบฒเบโเบเบฑเปเบโเบเบทเปเบโเปเบเบโเปเบเบทเปเบญเบโเปเบซเบงโ,
- เบเบฒเบเบเปเบฒเบเบฒเบเบเบตเปเบชเบฒเบกเบฒเบเบเบฐเบซเบเบฒเบเปเบเป (เบเบฑเปเบเปเบกเปเบ, เบเบตเบกเบเบฒเบเบเบฑเบเบเบฐเบเบฒ, เบเปเบฒเบเปเบฒเปเบเบฑเบ, เบชเบฒเบกเบฒเบเบฅเบงเบกเปเบญเบปเบฒเบซเบเปเบฒเบเบตเปเบเบฒเบเบซเบฒเบเปเบเปเบเบปเปเบฒเปเบเปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบง).
เบเบฒเบเบเบปเบเบชเบญเบ
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบชเบปเบเบเบฐเบเบฒเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเบชเปเบงเบเบซเบเปเบฒเบเบญเบเบเบฒเบเบเปเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฒเบเบเปเบฒเปเบเป
เปเบเบทเปเบญเบเปเบเบเบตเปเบเปเบญเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฒเบงเปเบซเบผเบเปเบกเปเบเบเบฐเปเบเบเบเบญเบเปเบเบฃเปเบเบฅเปเบฅเบฒเบเปเบเบฑเบ App Store เปเบฅเบฐเบกเบตเบฅเบฐเบซเบฑเบ API เบเบตเปเบชเปเบฒเบเบเบถเปเบ.
เบกเบตเบซเบผเบฒเบเบงเบดเบเบตเบเบตเปเบเบฐเบเบฒเบงเปเบซเบฅเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ:
- เบเปเบฒเบ Xcode (Organizer),
- เบเปเบฒเบ altoolโ,
- เบเปเบฒเบ Application Loader เบชเปเบฒเบฅเบฑเบ Xcode เบฅเบธเปเบเปเบเบปเปเบฒ (เปเบเบเบฑเบเบเบธเบเบฑเบ Transporter).
เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฒเบงเปเบซเบผเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ, altool เบเบทเบเบเปเบฒเปเบเป, เปเบเบดเปเบเบเบฑเบเบกเบตเบชเบญเบเบงเบดเบเบตเบเบฒเบเบญเบฐเบเบธเบเบฒเบ:
- เบฅเบฐเบซเบฑเบเบเปเบฒเบเบชเบฐเปเบเบฒเบฐเปเบญเบฑเบ,
- API Key.
เบกเบฑเบเบกเบฑเบเบเบตเปเบเบฐเบเบฒเบงเปเบซเบฅเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบเบเปเบเป API Key.
เปเบเบทเปเบญเปเบญเบปเบฒ API Key, เปเบซเปเปเบเบเบตเป
เบเปเปเปเบ, เบเปเบฒเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบเบตเปเบเบฒเบงเปเบซเบฅเบเบกเบฒเปเบชเปเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบชเปเบฒเบ:
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
เบเปเบงเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบฝเบงเบเบฑเบ.
เปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบฐเบเบทเบเบเบปเบเบชเบญเบเปเบเบ Apple เบเบฒเบเปเบเบซเบเบถเปเบเบซเบผเบทเบชเบญเบเบกเบทเปเปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฐเบกเบตเปเบซเปเบเบนเปเบเบปเบเบชเบญเบเบเบฒเบเบเบญเบ: เบเบงเบเปเบเบปเบฒเบเบฐเบเบทเบเบชเบปเปเบเบญเบตเปเบกเบงเปเบเบทเปเบญเบกเบเปเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบดเบเบเบฑเปเบ.
เบญเบตเบเบงเบดเบเบตเปเบถเปเบเปเบเบทเปเบญเบเบฒเบงเปเบซเบฅเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเปเบฒเบ altool เปเบกเปเบเบเบฒเบเปเบเปเบฅเบฐเบซเบฑเบเบเปเบฒเบเบชเบฐเปเบเบฒเบฐเบเบญเบเปเบญเบฑเบเบฏ.
เปเบเบทเปเบญเปเบญเบปเบฒเบฅเบฐเบซเบฑเบเบเปเบฒเบเบชเบฐเปเบเบฒเบฐเปเบญเบฑเบ, เบเปเบฒเบเบเปเบญเบเปเบเบเบตเป
เบเปเปเปเบ, เบเปเบฒเบเบเบงเบเบชเปเบฒเบเบเบฑเบเบเบถเบเปเบเบตเบเปเบงเบตเบชเปเบฒเบเปเบ Keychain เบเปเบงเบเบฅเบฐเบซเบฑเบเบเปเบฒเบเบเบตเป. เบเบฒเบเบฎเบธเปเบ 11 เบเบญเบ Xcode เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเบเปเบงเบเบเปเบฒเบชเบฑเปเบ:
xcrun altool --store-password-in-keychain-item "Altool" -u "$DeveloperName" -p $AppPswd
เบเปเบญเบเบเบตเป:
$DeveloperName
โ เบเบทเปโเบเบญเบโเบเบฑเบโเบเบตโเบเบนเปโเบเบฑเบโเบเบฐโเบเบฒ iOS เบเบตเปโเปเบเปโเปเบเบทเปเบญโเปเบเบปเปเบฒโเบชเบนเปโเบฅเบฐโเบเบปเบโเบเบฒเบโเบเปโเบฅเบดโเบเบฒเบ Appleโ.
$AppPswd
โ เบชเปเบฒเบโเบฅเบฐโเบซเบฑเบโเบเปเบฒเบโเบชเบฐโเปเบเบฒเบฐ Appโ.
เบเปเปเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเปเบฒเบเบญเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบ 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
เปเบเบฎเบนเบเปเบเบเบเบตเปเบเปเปเปเบเปเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบ (เบขเปเบฒเบเบเบฐเปเบเปเบ).
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบฑเปเบเบเบตเปเปเบเปเบเปเบฒเบงเบกเบฒเปเบฅเปเบง, เบเบฒเบเบเบฑเบเบชเบฐเบเบฐเบเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ, เบกเบฑเบเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเปเบฅเบทเบญเบ API Key เบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเบฐเบเบธเบเบฒเบเบเบญเบ altool, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ Xcode เบฎเบธเปเบเบเปเบฒเบเปเบกเบตเบเบฑเบเบซเบฒเบเบฒเบเบขเปเบฒเบ ("เบเปเปเปเบซเบฑเบ" Keychain, เบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบฒเบเบญเบฐเบเบธเบเบฒเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบญเบฑเบเปเบซเบฅเบ, เปเบฅเบฐเบญเบทเปเบเป).
เบเบฑเปเบเปเบกเปเบเบเบฑเบเบซเบกเบปเบ, เบเบปเบงเบเบดเบเปเบฅเปเบง. เบเปเบญเบเบเปเบญเบงเบเบเบญเบเปเบซเปเบเบธเบเบเบปเบเบกเบตเบชเปเบงเบเบฎเปเบงเบกเปเบเบเบฒเบเบเปเปเบชเปเบฒเบเบเบตเปเบเบฐเบชเบปเบเบเบปเบเบชเบณเปเบฅเบฑเบ เปเบฅเบฐเบเบฒเบเบเปเบญเบเบเบปเบงเบเบตเปเบเปเปเบกเบตเบเบฑเบเบซเบฒเปเบ App Store.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com