рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо iOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрд╛рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдкреНрд▓реЗрд░рд┐рдпрдо рдХреНрд░рд╛рд╕реНрдиреЛрдбрд╛рд░ рд╕реНрдЯреВрдбрд┐рдпреЛ рдиреЗ рд╕реАрдЖрдИ/рд╕реАрдбреА рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЬрдорд╛ рдХрд┐рдпрд╛ рд╣реИред
рдЯреНрд░реЗрдирд┐рдВрдЧ
рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ Apple рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЙрд╕рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╕реБрд╡рд┐рдзрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рд╣реИред рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╣рд░ рдЬрдЧрд╣ рдкрд╛рдИ рдЬрд╛рддреА рд╣реИрдВ: рдбреЗрд╡рд▓рдкрд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдиреВ рд╕реЗ рд▓реЗрдХрд░ рдбрд┐рдмрдЧ рдФрд░ рдмрд┐рд▓реНрдб рдЯреВрд▓ рддрдХред
рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ "рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЛрдВ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдореБрдЦреНрдп рдмрд╛рдд рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:
рдбреЗрд╡рд▓рдкрд░ рдЦрд╛рддрд╛ ;- рдПрдХ macOS-рдЖрдзрд╛рд░рд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рдЬреЛ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ;
- рдЖрдк рдЬреЗрдирд░реЗрдЯ рд╣реБрдИ
рдбреЗрд╡рд▓рдкрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ , рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдЧреЗ рдЖрд╡реЗрджрди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛; - рдЕрджреНрд╡рд┐рддреАрдп рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛
ID (рдмрдВрдбрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдорд╣рддреНрд╡ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдЖрдИрдбреА рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдПрд╕реЛрд╕рд┐рдПрдЯреЗрдб рдбреЛрдореЗрди, рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди, рдРрдкреНрдкрд▓ рд╕рд╛рдЗрди рдЗрди рдФрд░ рдЕрдиреНрдп); рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЖрд╡реЗрджрди рд╣рд╕реНрддрд╛рдХреНрд╖рд░.
рдХрд┐рд╕реА рднреА macOS рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХрд┐рдЪреЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд╛рддрд╛рд╡рд░рдг (рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ, рдХреНрдпреВрдП, рд╕реНрдЯреЗрдЬрд┐рдВрдЧ, рдкреНрд░реЛрдбрдХреНрд╢рди) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рднрд┐рдиреНрди рд╣реЛрдЧрд╛ (рд╡рд┐рдХрд╛рд╕ рдпрд╛ рд╡рд┐рддрд░рдг), рдЬреИрд╕рд╛ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛ред
рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░:
- рд╡рд┐рдХрд╛рд╕ - рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреЗ рдЖрд╡реЗрджрди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо iPhone рдбреЗрд╡рд▓рдкрд░: XXXXX);
- рдПрдб рд╣реЙрдХ - рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдФрд░ рдХреНрдпреВрдП рд╡рд┐рднрд╛рдЧ рджреНрд╡рд╛рд░рд╛ рдЖрдВрддрд░рд┐рдХ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╡рд┐рддрд░рдг рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо iPhone рд╡рд┐рддрд░рдг: XXXXX);
- рдРрдк рд╕реНрдЯреЛрд░ - рдЯреЗрд╕реНрдЯрдлрд╝реНрд▓рд╛рдЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рд╣рд░реА рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реАрдЬрд╝ рдмрд┐рд▓реНрдб рдФрд░ рдРрдк рд╕реНрдЯреЛрд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдкрд░, рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╡рд┐рддрд░рдг рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд┐рдХрд╛рд╕ рдФрд░ рддрджрд░реНрде рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╕рдордп, рдЗрд╕рдХрд╛ рднреА рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдбреЗрд╡рд▓рдкрд░ рдХреА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХрд┐рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд╣рд╛рдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред
рд╕рднрд╛
рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдкрд░рд┐рд╡реЗрд╢ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ ${ProjectName}_${Instance}
, рдЕрд░реНрдерд╛рдд, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо + рдЙрджрд╛рд╣рд░рдг (рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ: рдбреЗрд╡, рдХреНрдпреВрдП, рдЬреАрдбреА, рд╕реНрдЯреЗрдЬрд┐рдВрдЧ, рд▓рд╛рдЗрд╡, рдФрд░ рдЗрд╕реА рддрд░рд╣)ред
рдЬрдм рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдкрд░ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЕрдкрдирд╛ рдирд╛рдо рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЖрдИрдбреА рдореЗрдВ рдмрджрд▓ рджреЗрддреА рд╣реИ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ /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
- рдбреЗрд╡рд▓рдкрд░ рдЦрд╛рддреЗ рдХрд╛ рдирд╛рдо, рдЬрд┐рд╕реЗ рдХрд┐рдЪреЗрди рдореЗрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (iPhone рдбреЗрд╡рд▓рдкрд░: 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"
рд╣рд╛рд▓рд╛рдБрдХрд┐, 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
- рд╡рд┐рддрд░рдг рд╡рд┐рдзрд┐, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рд╡рд┐рдХрд╛рд╕ рд╣реЛрдЧрд╛, рддрджрд░реНрде рдХреЗ рд▓рд┐рдП - рддрджрд░реНрде, рдФрд░ рдРрдк рд╕реНрдЯреЛрд░ рдХреЗ рд▓рд┐рдП - рдРрдк-рд╕реНрдЯреЛрд░ред
$BundleID
тАФ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдИрдбреА, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред рдЖрдк рдХрдорд╛рдВрдб рд╕реЗ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName ╨╕ $ProfileId
- рдбреЗрд╡рд▓рдкрд░ рдирд╛рдо рдФрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЖрдИрдбреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЬреЛ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдереАрдВ рдФрд░ рдирд┐рд░реНрдпрд╛рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдорд╛рдиреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
$TeamID
тАФ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдирд╛рдо рдХреЗ рдмрд╛рдж рдХреЛрд╖реНрдардХ рдореЗрдВ рджрд╕ рдЕрдВрдХреЛрдВ рдХреА рдЖрдИрдбреА, рдЙрджрд╛рд╣рд░рдг: iPhone рдбреЗрд╡рд▓рдкрд░: тАжтАж (XXXXXXXXX); рдХрд┐рдЪреЗрди рдореЗрдВ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛, рдирд┐рд░реНрдпрд╛рдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЖрд╡рд╢реНрдпрдХ *.ipa рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
xcodebuild
-exportArchive
-archivePath $ProjectDir/build/$ProjectName.xcarchive
-exportPath $ProjectDir
-exportOptionsPlist $ExportSettings
рд╡рд┐рддрд░рдг
рдЕрдм рдПрдХрддреНрд░рд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрдХ рдкрд╣реБрдВрдЪрд╛рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛рдиреА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдФрд░ рдПрдб рд╣реЙрдХ рдмрд┐рд▓реНрдб рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕реЗрд╡рд╛рдПрдБ рд╣реИрдВ, рдЬреИрд╕реЗ рд╣реЙрдХреАрдРрдк, рдРрдкрдмреНрд▓реЗрдб рдФрд░ рдЕрдиреНрдп, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд╕рд░реНрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
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 рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдзрд╛ рд▓рд┐рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдИрдУрдПрд╕ рдХреЗ рд╕рд╛рддрд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ HTTPS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдард╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдереЛрдбрд╝рд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ: рдЬреИрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ
<images>
<image>...</image>
</images>
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓рд┐рдВрдХ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рд░рд▓ HTML рдкреГрд╖реНрда рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
itms-services://?action=download-manifest&url=https://$ServerUrl/$ProjectName/$Instance/iOS/$AppVersion/manifest.plist
рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рднрд╛рдЧреЛрдВ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд▓реЗрд░рд┐рдпрдо рдиреЗ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдмрд┐рд▓реНрдб рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рджреЗрддрд╛ рд╣реИ:
- рд╕реНрд╡рд╛рдпрддреНрддрддрд╛ рдФрд░ рд╕реНрд╡рддрдВрддреНрд░рддрд╛,
- "рдЕрд╕реНрдерд╛рдпреА" рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ рдХреЗрдВрджреНрд░реАрдХрд░рдг,
- рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ (рдЕрд░реНрдерд╛рдд, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо, рдореМрдЬреВрджрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд▓рд╛рдкрддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреА рд╣реИ)ред
рдкрд░реАрдХреНрд╖рдг
рдЕрдм рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░реА-рд░рд┐рд▓реАрдЬрд╝ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ рдРрдк рд╕реНрдЯреЛрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдПрдкреАрдЖрдИ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИрдВред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ:
- Xcode (рдЖрдпреЛрдЬрдХ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ,
- рдЕрд▓реНрдЯреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ,
- Xcode (рдЕрдм рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯрд░) рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЛрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдбрд╛рдЙрдирд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдЕрд▓реНрдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐рдпрд╛рдБ рднреА рд╣реИрдВ:
- рдРрдк-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╛рд╕рд╡рд░реНрдб,
- рдПрдкреАрдЖрдИ рдХреБрдВрдЬреАред
рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░ рдЬрд╛рдПрдБ
рдЗрд╕рдХреЗ рдмрд╛рдж, рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдХреБрдВрдЬреА рдХреЛ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдкрд░ рдЖрдпрд╛рдд рдХрд░реЗрдВ:
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
рд╕рдорд╛рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде.
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдПрдХ рдпрд╛ рджреЛ рджрд┐рдиреЛрдВ рдХреЗ рднреАрддрд░ рдРрдкреНрдкрд▓ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдлрд┐рд░ рдмрд╛рд╣рд░реА рдкрд░реАрдХреНрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛: рдЙрдиреНрд╣реЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдИрдореЗрд▓ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдЕрд▓реНрдЯреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдРрдк-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдРрдк-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдХрд┐рдЪреЗрди рдореЗрдВ рдПрдХ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Xcode рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 11 рд╕реЗ рдпрд╣ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
xcrun altool --store-password-in-keychain-item "Altool" -u "$DeveloperName" -p $AppPswd
рдХрд╣рд╛рдБ:
$DeveloperName
тАФ Apple рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ iOS рдбреЗрд╡рд▓рдкрд░ рдЦрд╛рддреЗ рдХрд╛ рдирд╛рдоред
$AppPswd
- рдРрдк-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╛рд╕рд╡рд░реНрдб рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдПрд╕рд╕реА-рдкреНрд░рджрд╛рддрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкрд╛рд╕рд╡рд░реНрдб рдЖрдпрд╛рдд рдХреА рд╕рдлрд▓рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ:
xcrun altool --list-providers -u "$DeveloperName" -p "@keychain:Altool"
рд╣рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓рддрд╛ рд╣реИ:
Provider listing:
- Long Name - - Short Name -
XXXXXXX XXXXXXXXX
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдорд╛рди (рдПрдПрд╕рд╕реА-рдкреНрд░рджрд╛рддрд╛) $TeamID рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдордиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдерд╛ред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ TestFlight рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
xcrun altool
--(validate|upload)-app
-f $(find "$ProjectDir" -name "*.ipa")
-u "$DeveloperName"
-p "@keychain:Altool"
рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ -p
рдЖрдк рдореВрд▓реНрдп рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ $AppPswd
рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб (рд╕реНрдкрд╖реНрдЯ) рд░реВрдк рдореЗрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреНрд░рджрд░реНрд╢рди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЕрд▓реНрдЯреВрд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдЪреБрдирдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХреНрд╕рдХреЛрдб рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ ("рдирд╣реАрдВ рджрд┐рдЦрддрд╛" рдХрд┐рдЪреЗрди, рдЕрдкрд▓реЛрдб рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддреНрд░реБрдЯрд┐рдпрд╛рдВ, рдЖрджрд┐)ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдРрдк рд╕реНрдЯреЛрд░ рдореЗрдВ рд╕рднреА рд▓реЛрдЧ рд╕рдлрд▓ рдмрд┐рд▓реНрдб рдФрд░ рдкрд░реЗрд╢рд╛рдиреА рдореБрдХреНрдд рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВред
рд╕реНрд░реЛрдд: www.habr.com