рдЖрдИрдУрдПрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо iOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрд╛рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдкреНрд▓реЗрд░рд┐рдпрдо рдХреНрд░рд╛рд╕реНрдиреЛрдбрд╛рд░ рд╕реНрдЯреВрдбрд┐рдпреЛ рдиреЗ рд╕реАрдЖрдИ/рд╕реАрдбреА рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЬрдорд╛ рдХрд┐рдпрд╛ рд╣реИред

рдЖрдИрдУрдПрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

рдЯреНрд░реЗрдирд┐рдВрдЧ

рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ Apple рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЙрд╕рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╕реБрд╡рд┐рдзрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рд╣реИред рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╣рд░ рдЬрдЧрд╣ рдкрд╛рдИ рдЬрд╛рддреА рд╣реИрдВ: рдбреЗрд╡рд▓рдкрд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдиреВ рд╕реЗ рд▓реЗрдХрд░ рдбрд┐рдмрдЧ рдФрд░ рдмрд┐рд▓реНрдб рдЯреВрд▓ рддрдХред

рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ "рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЛрдВ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдореБрдЦреНрдп рдмрд╛рдд рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:

  • рдбреЗрд╡рд▓рдкрд░ рдЦрд╛рддрд╛;
  • рдПрдХ macOS-рдЖрдзрд╛рд░рд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рдЬреЛ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ;
  • рдЖрдк рдЬреЗрдирд░реЗрдЯ рд╣реБрдИ рдбреЗрд╡рд▓рдкрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдЧреЗ рдЖрд╡реЗрджрди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
  • рдЕрджреНрд╡рд┐рддреАрдп рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ ID (рдмрдВрдбрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдорд╣рддреНрд╡ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдЖрдИрдбреА рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдПрд╕реЛрд╕рд┐рдПрдЯреЗрдб рдбреЛрдореЗрди, рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди, рдРрдкреНрдкрд▓ рд╕рд╛рдЗрди рдЗрди рдФрд░ рдЕрдиреНрдп);
  • рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЖрд╡реЗрджрди рд╣рд╕реНрддрд╛рдХреНрд╖рд░.

рдХрд┐рд╕реА рднреА macOS рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХрд┐рдЪреЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд╛рддрд╛рд╡рд░рдг (рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ, рдХреНрдпреВрдП, рд╕реНрдЯреЗрдЬрд┐рдВрдЧ, рдкреНрд░реЛрдбрдХреНрд╢рди) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рднрд┐рдиреНрди рд╣реЛрдЧрд╛ (рд╡рд┐рдХрд╛рд╕ рдпрд╛ рд╡рд┐рддрд░рдг), рдЬреИрд╕рд╛ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛ред

рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░:

  • рд╡рд┐рдХрд╛рд╕ - рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреЗ рдЖрд╡реЗрджрди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо iPhone рдбреЗрд╡рд▓рдкрд░: XXXXX);
  • рдПрдб рд╣реЙрдХ - рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдФрд░ рдХреНрдпреВрдП рд╡рд┐рднрд╛рдЧ рджреНрд╡рд╛рд░рд╛ рдЖрдВрддрд░рд┐рдХ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╡рд┐рддрд░рдг рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо iPhone рд╡рд┐рддрд░рдг: XXXXX);
  • рдРрдк рд╕реНрдЯреЛрд░ - рдЯреЗрд╕реНрдЯрдлрд╝реНрд▓рд╛рдЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рд╣рд░реА рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реАрдЬрд╝ рдмрд┐рд▓реНрдб рдФрд░ рдРрдк рд╕реНрдЯреЛрд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдкрд░, рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╡рд┐рддрд░рдг рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд┐рдХрд╛рд╕ рдФрд░ рддрджрд░реНрде рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╕рдордп, рдЗрд╕рдХрд╛ рднреА рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЙрдкрдХрд░рдг рд╕реВрдЪреА, рдЬрд┐рд╕ рдкрд░ рдЖрдк рдПрдХ рдмрд┐рд▓реНрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдРрдк рд╕реНрдЯреЛрд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдХреЛрдИ рд╕реВрдЪреА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрдВрдж рдмреАрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдкрд╣реБрдВрдЪ рдирд┐рдпрдВрддреНрд░рдг TestFlight рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдбреЗрд╡рд▓рдкрд░ рдХреА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХрд┐рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд╣рд╛рдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред

рдЖрдИрдУрдПрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

рд╕рднрд╛

рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдкрд░рд┐рд╡реЗрд╢ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ ${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 рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ:

  1. рдЖрдЗрдЯрдо рд╕реЗрд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред
  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 (рдЕрдм рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯрд░) рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЛрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдбрд╛рдЙрдирд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдЕрд▓реНрдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐рдпрд╛рдБ рднреА рд╣реИрдВ:

  • рдРрдк-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╛рд╕рд╡рд░реНрдб,
  • рдПрдкреАрдЖрдИ рдХреБрдВрдЬреАред

рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░ рдЬрд╛рдПрдБ рд▓рд┐рдВрдХ рдФрд░ рдПрдХ рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ. *.p8 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреБрдВрдЬреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА: рдЬрд╛рд░реАрдХрд░реНрддрд╛рдЖрдИрдбреА рдФрд░ рдХреАрдЖрдИрдбреАред

рдЖрдИрдУрдПрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

рдЗрд╕рдХреЗ рдмрд╛рдж, рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдХреБрдВрдЬреА рдХреЛ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдкрд░ рдЖрдпрд╛рдд рдХрд░реЗрдВ:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ