เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ, CI/CD เดกเตเดฌเดเตเดเดฟเดเดเต เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดฟเตฝ เดชเตเดฒเดพเดฐเดฟเดฏเด เดเตเดฐเดพเดธเตเดจเตเดกเตผ เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดถเตเดเดฐเดฟเดเตเด iOS เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพเดเตเดเต เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เด เดจเตเดญเดตเด เดเดเตเดเตพ เดชเดเตเดเดฟเดเตเดจเตเดจเต.
เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเตฝ
เดเดชเตเดชเดฟเตพ เดเดชเดเดฐเดฃเดเตเดเตพเดเตเดเดพเดฏเตเดณเตเดณ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเตเดเต เดตเดฟเดเดธเดจเดคเตเดคเดฟเตฝ เดเดฐเต เดคเดฐเดคเตเดคเดฟเตฝ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฎเดฑเตเดฑเตเดจเตเดจเดฟเตฝ เดเตผเดชเตเดชเตเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดตเตเดฏเดเตเดคเดฟเดฏเตเด เดเตปเดซเตเดฐเดพเดธเตเดเตเดฐเดเตเดเดฑเดฟเดจเตเดฑเต เดตเดฟเดตเดพเดฆเดชเดฐเดฎเดพเดฏ เดธเตเดเดฐเตเดฏเดคเตเดคเต เดเดคเดฟเดจเดเด เดตเดฟเดฒเดฎเดคเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเต. เดเดฒเตเดฒเดพเดฏเดฟเดเดคเตเดคเตเด เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดเตพ เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต: เดกเตเดตเดฒเดชเตเดชเตผ เดชเตเดฐเตเดซเตเตฝ เดฎเตเดจเต เดฎเตเดคเตฝ เดกเตเดฌเดเต, เดฌเดฟเตฝเดกเต เดเตเดณเตเดเตพ เดตเดฐเต.
เดเตปเดฑเตผเดจเตเดฑเตเดฑเดฟเตฝ "เด เดเดฟเดธเตเดฅเดพเดจเดเตเดเดณเต" เดเตเดฑเดฟเดเตเดเต เดงเดพเดฐเดพเดณเด เดฒเตเดเดจเดเตเดเตพ เดเดฃเตเดเต, เด เดคเดฟเดจเดพเตฝ เดเดเตเดเตพ เดชเตเดฐเดงเดพเดจ เดเดพเดฐเตเดฏเด เดนเตเดฒเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเด. เดจเดฟเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเตพเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณเดคเต เดเดคเดพ:
เดกเตเดตเดฒเดชเตเดชเตผ เด เดเตเดเตเดฃเตเดเต ;- เดเดฐเต เดฌเดฟเตฝเดกเต เดธเตเตผเดตเดฑเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดเดฐเต macOS เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟเดฏเตเดณเตเดณ เดเดชเดเดฐเดฃเด;
- เดธเตเดทเตเดเดฟเดเตเดเดคเต
เดกเตเดตเดฒเดชเตเดชเตผ เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต , เด เดคเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเดฟเตฝ เดเดชเตเดชเดฟเดเดพเตป เดเตเดเตเดคเตฝ เดเดชเดฏเตเดเดฟเดเตเดเตเด; - เด
เดคเตเดฒเตเดฏเดฎเดพเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดธเตเดทเตเดเดฟเดเตเดเต
ID (เดฌเดฃเตเดเดฟเตฝ เดเดกเดจเตเดฑเดฟเดซเดฏเดฑเดฟเดจเตเดฑเต เดชเตเดฐเดพเดงเดพเดจเตเดฏเด เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต, เดเดพเดฐเดฃเด เดตเตเตฝเดกเตเดเดพเตผเดกเต เดเดกเดฟเดฏเตเดเต เดเดชเดฏเตเดเด เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดฑเต เดชเดฒ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เด เดธเดพเดงเตเดฏเดฎเดพเดเตเดเตเดจเตเดจเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต: เด เดจเตเดฌเดจเตเดง เดกเตเดฎเตเดฏเตโเดจเตเดเตพ, เดชเตเดทเต เด เดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ, เดเดชเตเดชเดฟเตพ เดธเตเตป เดเตป เดเดจเตเดจเดฟเดตเดฏเตเด เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฏเตเด); เดชเตเดฐเตเดซเตเตฝ เด เดชเตเดเตเดท เดเดชเตเดชเตเดเตพ.
เดเดคเตเดเตเดเดฟเดฒเตเด macOS เดเดชเดเดฐเดฃเดคเตเดคเดฟเตฝ เดเตเดเตเดฏเดฟเตป เดตเดดเดฟ เดเดฐเต เดกเตเดตเดฒเดชเตเดชเตผ เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เดเดจเดฑเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดฃเด. เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเดฟเดจเตเดฑเต เดคเดฐเด เดตเดณเดฐเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต. เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเต เด เดจเตเดธเดฐเดฟเดเตเดเต (เดกเตเดตเดฒเดชเตเดชเตเดฎเตเดจเตเดฑเต, เดเตเดฏเตเด, เดธเตเดฑเตเดฑเตเดเดฟเดเดเต, เดชเตเดฐเตเดกเดเตเดทเตป) เด เดคเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด (เดตเดฟเดเดธเดจเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดตเดฟเดคเดฐเดฃเด), เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดธเดฟเดเตเดจเตเดเตเดเตผ เดชเตเดฐเตเดซเตเดฒเดฟเดจเตเดฑเต เดคเดฐเด เดชเตเดฒเต.
เดชเตเดฐเตเดซเตเดฒเตเดเดณเตเดเต เดชเตเดฐเดงเดพเดจ เดคเดฐเดเตเดเตพ:
- เดตเดฟเดเดธเดจเด - เดกเตเดตเดฒเดชเตโเดฎเตเดจเตเดฑเต เดเตเดฎเดฟเดจเตเดฑเต เด เดชเตเดเตเดทเดฏเดฟเตฝ เดเดชเตเดชเดฟเดเดพเตป เดเดฆเตเดฆเตเดถเดฟเดเตเดเตเดณเตเดณเดคเดพเดฃเต, เดเดฐเต เดกเตเดตเดฒเดชเตโเดฎเตเดจเตเดฑเต เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต (เดเดซเตเตบ เดกเตเดตเดฒเดชเตเดชเดฑเดฟเดจเตเดฑเต เดคเดฐเด เดชเตเดฐเต: XXXX);
- เด เดกเตโเดนเตเดเตเดเต - QA เดกเดฟเดชเตเดชเดพเตผเดเตเดเตโเดฎเตเดจเตเดฑเต เดเดฐเต เดเตเดธเตเดฑเตเดฑเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเด เดเดจเตเดฑเตเดฃเตฝ เดตเตเดฐเดฟเดซเดฟเดเตเดเตเดทเดจเตเด เดเดชเตเดชเดฟเดเดพเตป เดเดฆเตเดฆเตเดถเดฟเดเตเดเตเดณเตเดณเดคเดพเดฃเต, เดกเตเดตเดฒเดชเตเดชเดฑเตเดเต เดตเดฟเดคเดฐเดฃ เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต (เดคเดฐเด เดชเตเดฐเต iPhone Distribution: XXXX);
- เดเดชเตเดชเต เดธเตเดฑเตเดฑเตเตผ - เดเตเดธเตโเดฑเตเดฑเตโเดซเตเดฒเตเดฑเตเดฑเต เดตเดดเดฟเดฏเตเดณเตเดณ เดฌเดพเดนเตเดฏ เดชเดฐเดฟเดถเตเดงเดจเดฏเตโเดเตเดเดพเดฏเดฟ เดฌเดฟเตฝเดกเต เดฑเดฟเดฒเตเดธเต เดเตเดฏเตโเดคเต เดเดชเตเดชเต เดธเตเดฑเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เด เดชเตโเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต, เดกเตเดตเดฒเดชเตเดชเดฑเตเดเต เดตเดฟเดคเดฐเดฃ เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต.
เดกเตเดตเดฒเดชเตโเดฎเตเดจเตเดฑเต, เด
เดกเตโเดนเตเดเตเดเต เดชเตเดฐเตเดซเตเดฒเตเดเตพ เดธเตเดทเตโเดเดฟเดเตเดเตเดฎเตเดชเตเตพ, เด
เดคเตเด เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
เดตเตเดฏเดเตเดคเดคเดฏเตเดเตเดเดพเดฏเดฟ, เดจเดฟเดเตเดเตพเดเตเดเต เดกเตเดตเดฒเดชเตเดชเดฑเตเดเต เดชเตเดฐเตเดซเตเตฝ เดเตเดตเดเตเดฏเตเดณเตเดณ เดชเดเตเดเดฟเดเดฏเตเดเต เดฐเตเดชเดคเตเดคเดฟเตฝ เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเดพเดจเดพเดเตเด. เด เดธเดเดฌเตเดฒเดฟเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเดจเตเดคเตเดเตเดเตเดฏเดพเดฃเตเดจเตเดจเตเด เด เดต เดเดตเดฟเดเต เดจเดฟเดจเตเดจเต เดฒเดญเดฟเดเตเดเตเดฎเตเดจเตเดจเตเด เดฎเดจเดธเดฟเดฒเดพเดเตเดเดพเตป เดเดคเต เดเดณเตเดชเตเดชเดฎเดพเดเตเดเตเดจเตเดจเต.
เดจเดฟเดฏเดฎเดธเดญ
เดชเตเดฐเตเดเดเตเดฑเตเดฑเตเด เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเดฏเตเด เด
เดจเตเดธเดฐเดฟเดเตเดเต เด
เดธเดเดฌเตเดฒเดฟเดเตพ เดตเตเตผเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดเดณเตเดชเตเดชเดฎเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดเตเดเตพ เดชเตเดฐเตเดซเตเตฝ เดชเตเดฐเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต ${ProjectName}_${Instance}
, เด
เดคเดพเดฏเดคเต, เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดจเดพเดฎเด + เดเดฆเดพเดนเดฐเดฃเด (เด
เดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเต เดเดถเตเดฐเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต: Dev, QA, GD, Staging, Live, เดคเตเดเดเตเดเดฟเดฏเดต).
เดฌเดฟเตฝเดกเต เดธเตเตผเดตเดฑเดฟเดฒเตเดเตเดเต เดเดฎเตเดชเตเตผเดเตเดเตเดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ, เดชเตเดฐเตเดซเตเตฝ เด
เดคเดฟเดจเตเดฑเต เดชเตเดฐเต เดเดฐเต เด
เดฆเตเดตเดฟเดคเตเดฏ เดเดกเดฟเดฏเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเตเดเดฏเตเด เดซเตเตพเดกเดฑเดฟเดฒเตเดเตเดเต เดจเตเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต /Users/$Username/Library/MobileDevice/Provisioning Profiles
(เดเดตเดฟเดเต $Username
เดฌเดฟเตฝเดกเต เดธเตเตผเดตเดฑเดฟเดจเตเดฑเต เดเดชเดฏเตเดเตเดคเต เด
เดเตเดเตเดฃเตเดเต เดจเดพเดฎเดตเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจเต).
*.ipa เดซเดฏเตฝ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฐเดฃเตเดเต เดตเดดเดฟเดเดณเตเดฃเตเดเต - เดฒเตเดเดธเดฟ (เดชเดพเดเตเดเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป), เดเดงเตเดจเดฟเดเด (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
- เดเตเดเตเดฏเดฟเดจเดฟเตฝ เดธเตเดฅเดฟเดฐเตเดเดฐเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดกเตเดตเดฒเดชเตเดชเตผ เด
เดเตเดเตเดฃเตเดเดฟเดจเตเดฑเต เดชเตเดฐเต (เดเดซเตเตบ เดกเตเดตเดฒเดชเตเดชเตผ: XXXX XXXXXXX, เดฌเตเดฐเดพเดเตเดเดฑเตเดฑเดฟเตฝ TeamID เดเดฒเตเดฒเดพเดคเต).
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"
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดชเตเดชเดฟเดณเดฟเดจเตเดฑเต เดตเตเดเตเดทเดฃเดเตเดฃเดฟเตฝ เดจเดฟเดจเตเดจเต เด เดฐเตเดคเดฟ เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเตเดเดคเดพเดฏเดฟ เดเดฃเดเตเดเดพเดเตเดเดชเตเดชเตเดเตเดจเตเดจเต. เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเตผเดเตเดเตเดตเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฏเดฑเตเดฑเตเดฎเดคเดฟ เดเตเดฏเตเดคเตเดเตเดฃเตเดเต *.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
- เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเดณเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏเดฟเดเตเดเตเดณเตเดณ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดกเดฟ. เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName ะธ $ProfileId
- เดฎเตเดฎเตเดชเต เดเดชเดฏเตเดเดฟเดเตเด เดกเตเดตเดฒเดชเตเดชเดฑเตเดเต เดชเตเดฐเตเด เดเดชเตเดชเต เดชเตเดฐเตเดซเตเตฝ เดเดกเดฟ เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเดณเตเด เดเดฏเดฑเตเดฑเตเดฎเดคเดฟ เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเดณเดฟเดฒเต เดฎเตเดฒเตเดฏเดเตเดเดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเดฃเด.
$TeamID
โ เดกเตเดตเดฒเดชเตเดชเดฑเตเดเต เดชเตเดฐเดฟเดจเต เดถเตเดทเด เดฌเตเดฐเดพเดเตเดเดฑเตเดฑเดฟเดฒเตเดณเตเดณ เดชเดคเตเดคเดเตเด เดเดกเดฟ, เดเดฆเดพเดนเดฐเดฃเด: iPhone เดกเตเดตเดฒเดชเตเดชเตผ: โฆโฆ (XXXXXXXXXX); เดเตเดเตเดฏเดฟเดจเดฟเตฝ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด.
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดเดฏเดฑเตเดฑเตเดฎเดคเดฟ เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต, เดเดตเดถเตเดฏเดฎเดพเดฏ *.ipa เดซเดฏเตฝ เดจเดฎเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเด:
xcodebuild
-exportArchive
-archivePath $ProjectDir/build/$ProjectName.xcarchive
-exportPath $ProjectDir
-exportOptionsPlist $ExportSettings
เดทเดฟเดชเตเดชเดฟเดเดเต เดตเดฟเดตเดฐเด
เดเดชเตเดชเตเตพ เดถเตเดเดฐเดฟเดเตเด เดซเดฏเตฝ เด เดจเตเดคเดฟเดฎ เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดเตเดฎเดพเดฑเตเดฃเตเดเดคเตเดฃเตเดเต, เด เดคเดพเดฏเดคเต, เดเดชเดเดฐเดฃเดคเตเดคเดฟเตฝ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดคเต.
HockeyApp, AppBlade เดเดจเตเดจเดฟเดตเดฏเตเด เดฎเดฑเตเดฑเตเด เดชเตเดฒเตเดณเตเดณ เดกเตเดตเดฒเดชเตโเดฎเตเดจเตเดฑเตเด เด เดกเตโเดนเตเดเตเดเต เดฌเดฟเตฝเดกเตเดเดณเตเด เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดจเดฟเดฐเดตเดงเดฟ เดธเตเดตเดจเดเตเดเดณเตเดฃเตเดเต, เดเดจเตเดจเดพเตฝ เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเดฑเตเดฑเดชเตเดชเตเดเตเด เดธเตเตผเดตเดฑเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดธเดเดธเดพเดฐเดฟเดเตเดเตเด.
IOS-เดจเดพเดฏเดฟ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต 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>
เด เดคเดฟเดจเดพเตฝ, เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเตป, เดเดคเตเดชเตเดฒเตเดณเตเดณ เดเดฐเต เดฒเดฟเดเตเดเตเดณเตเดณ เดเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ HTML เดชเตเดเต เดฎเดคเดฟ:
itms-services://?action=download-manifest&url=https://$ServerUrl/$ProjectName/$Instance/iOS/$AppVersion/manifest.plist
เดตเดฟเดเดธเดจ, เดเตเดธเตเดฑเตเดฑเดฟเดเดเต เดตเดเตเดชเตเดชเตเดเดณเตเดเต เดเดตเดถเตเดฏเดเตเดเตพเดเตเดเดพเดฏเดฟ, เดชเตเดฒเดพเดฐเดฟเดฏเด เด เดคเดฟเดจเตเดฑเตเดคเดพเดฏ เดฌเดฟเตฝเดกเต เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดทเตป เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดธเตเดทเตเดเดฟเดเตเดเต, เด เดคเต เดเดเตเดเตพเดเตเดเต เดจเตฝเดเตเดจเตเดจเต:
- เดธเตเดตเดฏเดเดญเดฐเดฃเดตเตเด เดธเตเดตเดพเดคเดจเตเดคเตเดฐเตเดฏเดตเตเด,
- "เดคเดพเตฝเดเตเดเดพเดฒเดฟเด" เดเดฒเดจเดพเดคเตเดฎเดเดฎเดพเดฏเดฟ เดธเตเดทเตเดเดฟเดเตเด เดฒเดฟเดเตเดเตเดเดณเดฟเดฒเตเดเต เดเดเตเดธเดธเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต เดเตเดจเตเดฆเตเดฐเตเดเดฐเดฃเดตเตเด เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเตเดเต เดธเตเดฐเดเตเดทเดฟเดคเดฎเดพเดฏ เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดทเดจเตเด,
- เดตเดฟเดชเตเดฒเตเดเดฐเดฟเดเตเดเดพเดตเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดค (เด เดคเดพเดฏเดคเต, เดตเดฟเดเดธเดจ เดเตเดฎเดฟเดจเต, เดเดตเดถเตเดฏเดฎเตเดเตเดเดฟเตฝ, เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเดฟเดฒเตเดเตเดเต เดจเดทเตโเดเดฎเดพเดฏ เดซเดเดเตโเดทเดจเตเดเตพ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด).
เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต
เดเดชเตเดชเตเตพ เดจเดฎเตเดฎเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดฑเต เดชเตเดฐเต-เดฑเดฟเดฒเตเดธเต เดเตเดธเตเดฑเตเดฑเดฟเดเดเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดธเดเดธเดพเดฐเดฟเดเตเดเตเด
เดเดชเตเดชเต เดธเตเดฑเตเดฑเตเตผ เดธเดฟเดเตเดจเตเดเตเดเตผ เดชเตเดฐเตเดซเตเดฒเดฟเดจเตเดฑเต เดคเดฐเดตเตเด เดเดจเดฑเตเดฑเตเดฑเต เดเตเดฏเตเดค API เดเตเดเดณเตเดเต เดธเดพเดจเตเดจเดฟเดงเตเดฏเดตเตเดฎเดพเดฃเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดตเตเดฏเดตเดธเตเดฅเดเตพ.
เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเตป เดจเดฟเดฐเดตเดงเดฟ เดฎเดพเตผเดเดเตเดเดณเตเดฃเตเดเต:
- Xcode เดตเดดเดฟ (เดเตผเดเดจเตเดธเตผ),
- Altool เดตเดดเดฟ,
- Xcode-เดจเตเดฑเต (เดเดชเตเดชเตเตพ เดเตเดฐเดพเตปเดธเตเดชเตเตผเดเตเดเตผ) เดชเดดเดฏ เดชเดคเดฟเดชเตเดชเตเดเตพเดเตเดเดพเดฏเดฟ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดฒเตเดกเตผ เดตเดดเดฟ
เดธเตเดตเดฏเดฎเตเดต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ, altool เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เดเดคเดฟเดจเต เดฐเดฃเตเดเต เด เดเดเตเดเดพเดฐ เดฐเตเดคเดฟเดเดณเตเด เดเดฃเตเดเต:
- เดเดชเตเดชเต-เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดชเดพเดธเตโเดตเตเดกเต,
- API เดเต.
API เดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต.
API เดเต เดฒเดญเดฟเดเตเดเดพเตป, เดเดคเดฟเดฒเตเดเตเดเต เดชเตเดเตเด
เด
เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดค เดเต เดฌเดฟเตฝเดกเต เดธเตเตผเดตเดฑเดฟเดฒเตเดเตเดเต เดเดฑเดเตเดเตเดฎเดคเดฟ เดเตเดฏเตเดฏเตเด:
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
เดเดฐเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพเดเตเดเตเดชเตเดชเด.
เดเดจเตเดจเต เดฐเดฃเตเดเต เดฆเดฟเดตเดธเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ เดเดชเตเดชเต เดเดชเตเดชเดฟเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด, เดคเตเดเตผเดจเตเดจเต เดฌเดพเดนเตเดฏ เดชเดฐเดฟเดถเตเดงเดเตผเดเตเดเต เดฒเดญเตเดฏเดฎเดพเดเตเด: เด เดต เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เดฒเดฟเดเตเดเตเดเตพ เดเดฎเตเดฏเดฟเตฝ เดเตเดฏเตเดฏเตเด.
เดเตพเดเตเดเตเตพ เดตเดดเดฟ เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฎเดฑเตเดฑเตเดฐเต เดฎเดพเตผเดเตเดเด เดเดชเตเดชเต-เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดชเดพเดธเตโเดตเตเดกเต เดเดชเดฏเตเดเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต.
เดเดชเตเดชเต-เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดชเดพเดธเตโเดตเตเดกเต เดฒเดญเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเตพ เดชเตเดเตเดฃเตเดเดคเตเดฃเตเดเต
เด
เดเตเดคเตเดคเดคเดพเดฏเดฟ, เด เดชเดพเดธเตโเดตเตเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพ เดเตเดเตเดฏเดฟเดจเดฟเตฝ เดเดฐเต เดฌเดฟเตฝเดกเต เดธเตเตผเดตเตผ เดฑเตเดเตเดเตเตผเดกเต เดธเตเดทเตเดเดฟเดเตเดเดฃเด. Xcode-เดจเตเดฑเต เดชเดคเดฟเดชเตเดชเต 11-เตฝ เดจเดฟเดจเตเดจเต เดเดคเต เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดฏเตเดฏเดพเด:
xcrun altool --store-password-in-keychain-item "Altool" -u "$DeveloperName" -p $AppPswd
เดเดตเดฟเดเตเดฏเดพเดฃเต:
$DeveloperName
โ Apple เดธเตเดตเดจเดเตเดเดณเดฟเดฒเตเดเตเดเต เดฒเตเดเดฟเตป เดเตเดฏเตเดฏเดพเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ iOS เดกเตเดตเดฒเดชเตเดชเตผ เด
เดเตเดเตเดฃเตเดเดฟเดจเตเดฑเต เดชเตเดฐเต.
$AppPswd
- เดธเตเดทเตเดเดฟเดเตเด เดเดชเตเดชเต-เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดชเดพเดธเตโเดตเตเดกเต.
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดจเดฎเตเดเตเดเต asc-provider เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเดฟเดจเตเดฑเต เดฎเตเดฒเตเดฏเด เดฒเดญเดฟเดเตเดเตเดเดฏเตเด เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดชเดพเดธเตโเดตเตเดกเต เดเดฎเตเดชเตเตผเดเตเดเดฟเดจเตเดฑเต เดตเดฟเดเดฏเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต:
xcrun altool --list-providers -u "$DeveloperName" -p "@keychain:Altool"
เดเดเตเดเตพเดเตเดเต เดเดเตเดเตเดชเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเดจเตเดจเต:
Provider listing:
- Long Name - - Short Name -
XXXXXXX XXXXXXXXX
เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดเดตเดถเตเดฏเดฎเดพเดฏ เดทเตเตผเดเตเดเต เดจเตเดฏเดฟเด เดฎเตเดฒเตเดฏเด (asc-provider) เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเด $TeamID เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจเต.
เดเตเดธเตเดฑเตเดฑเตเดซเตเดฒเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดธเดพเดงเตเดเดฐเดฟเดเตเดเดพเดจเตเด เดฒเตเดกเตเดเตเดฏเตเดฏเดพเดจเตเด, เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเตเด:
xcrun altool
--(validate|upload)-app
-f $(find "$ProjectDir" -name "*.ipa")
-u "$DeveloperName"
-p "@keychain:Altool"
เดเดฐเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดฎเตเดฒเตเดฏเดฎเดพเดฏเดฟ -p
เดจเดฟเดเตเดเตพเดเตเดเต เดฎเตเดฒเตเดฏเด เดเดเตเดเตเดเดพเด $AppPswd
เดเตปเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเดคเตเดค (เดตเตเดฏเดเตเดคเดฎเดพเดฏ) เดฐเตเดชเดคเตเดคเดฟเตฝ.
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดคเดฟเดจเดเด เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดคเตเดชเตเดฒเต, เดชเตเดฐเดเดเดจเดคเตเดคเดฟเดจเตเดฑเต เดตเตเดเตเดทเดฃเดเตเดฃเดฟเตฝ เดจเดฟเดจเตเดจเต, เดเตพเดเตเดเตเตพ เด เดเดเตเดเดพเดฐเดคเตเดคเดฟเดจเดพเดฏเดฟ API เดเต เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต, เดเดพเดฐเดฃเด Xcode-เดจเตเดฑเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเดคเดฟเดชเตเดชเตเดเตพเดเตเดเต เดเดฟเดฒ เดชเตเดฐเดถเตโเดจเดเตเดเดณเตเดฃเตเดเต ("เดเตเดเตเดฏเดฟเตป "เดเดพเดฃเตเดจเตเดจเดฟเดฒเตเดฒ", เด เดชเตโเดฒเตเดกเต เดธเดฎเดฏเดคเตเดคเต เด เดเดเตเดเดพเดฐ เดชเดฟเดถเดเตเดเตพ เดฎเตเดคเดฒเดพเดฏเดต).
เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด
เดคเตเดฐเดฎเดพเดคเตเดฐเด. เดเดชเตเดชเต เดธเตเดฑเตเดฑเตเดฑเดฟเตฝ เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏ เดฌเดฟเตฝเดกเตเดเดณเตเด เดชเตเดฐเดถเตโเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดฑเดฟเดฒเตเดธเตเดเดณเตเด เดเตพเดชเตเดชเตเดเตเด เดเดฒเตเดฒเดพเดตเตผเดเตเดเตเด เดเดพเตป เดเดถเดเดธเดฟเดเตเดเตเดจเตเดจเต.
เด
เดตเดฒเดเดฌเด: www.habr.com