рд╣рд╛рдп рд╕рдм, рдореИрдВ рд╡рд╛рдиреНрдпрд╛ - рдЖрдИрдУрдПрд╕ рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ Xcode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рдордп рдмрдЪрд╛рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХреАред

рдЕрдм iOS рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрдкрдХрд░рдг рд╣реИрдВред рд╕рд░реНрдл рдореЗрдВ рд╣рдо рдЬреЗрдирдореНрдмрд╛, рдлрд╛рд╕реНрдЯрд▓реЗрди, рд╕реНрд╡рд┐рдлреНрдЯрдЬреЗрди, рд╕реНрд╡рд┐рдлреНрдЯрд▓рд┐рдВрдЯ, рдЬреЗрдирдХрд┐рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдХреБрдЫ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИред рдФрд░ рдЕрдЧрд░ рдкрд╣рд▓реЗ рд╣рдордиреЗ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЖрд░рдВрдн рдкрд░ 1-2 рджрд┐рди рдмрд┐рддрд╛рдП рдереЗ, рддреЛ рдЕрдм 4 рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред
рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
1. рдПрдХ рднрдВрдбрд╛рд░ рдмрдирд╛рдПрдБред
- рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ;
- рдЪреИрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рд╕реЗрдЯ рдХрд░реЗрдВред
2. рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред
- рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдПрдВ;
- рдЕрдкрдиреЗ рд╕рднреА рдкрд╕рдВрджреАрджрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рддрд░рд╣ рд╡рд┐рднрд┐рдиреНрди рд╕рд╣рд╛рдпрдХ рдлрд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝реЗрдВ;
- CI / CD рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ;
- рд╡рд┐рднрд┐рдиреНрди рд▓рд┐рдВрдЯрд░ рдФрд░ рдЬрдирд░реЗрдЯрд░ рдЬреЛрдбрд╝реЗрдВ (Generamba / SwiftLint / SwiftGen);
- рдирд╢реЗ рдХреЛ рдХрд╕ рд▓реЗрдВ;
- ...
1-2 рджрд┐рдиреЛрдВ рдХреЗ рдХрд╛рдо рдХреЗ рдмрд╛рдж, рдЖрдк рдкреВрд░реНрдг рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪрд░рдгреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рде рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдереЗ:
- XcodeGen;
- Xcode рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕;
- рдмреЗрд╕рд┐рдХ Xcode рдкреНрд░реЛрдЬреЗрдХреНрдЯред
XcodeGen
+ рдЖрдкрдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдордХреНрдЦреА рдкрд░ .xcodeproj рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдШрд░реНрд╖реЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
- рдЕрдиреНрдп рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрд╛рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ред
Xcode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ
+ рдЖрдк рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рд╕рд╛рде рд╣реА рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде .xcodeproj рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- xml рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдХреЛрдИ рдкреВрд░реНрдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд╣реИред
рдмреЗрд╕рд┐рдХ Xcode рдкрд░рд┐рдпреЛрдЬрдирд╛
+ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рддреБрд░рдВрдд рдФрд░ рддреБрд░рдВрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
- рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдирд╛ред рдФрд░ рдЖрдк рдЧрд▓рддреА рд╕реЗ рдПрдХ рдХрджрдо рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдкреИрд░ рдореЗрдВ рдЧреЛрд▓реА рдорд╛рд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо Xcode рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдмрд╕ рдЧрдП, рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реАред рдореВрд▓ Xcode рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдмреИрд╕рд╛рдЦреА рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣реА рдереА, рдФрд░ рд╣рдореЗрдВ рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓рдЪреАрд▓реЗрдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
Xcode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, Xcode рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк iOS / macOS / tvOS / watchOS / рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдлрд╛рдЗрд▓ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ Apple рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рд╕рдм рд╣реИ - рдЫреЛрдЯреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг, рдореИрдВрдиреЗ
рдЗрд╕ рд╡рд┐рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛
редрдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХреНрдпрд╛ рд╣реИIOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдпрд╣рд╛рдВ рд╣реИрдВ:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/
рдФрд░ рдпрд╣рд╛рдБ MacOS рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП:
/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/Project Templates/Mac/
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп .plist рдлрд╝рд╛рдЗрд▓реЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдкрд░рд┐рдЪрд┐рдд рд╕рд┐рдВрдЧрд▓ рд╡реНрдпреВ рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рд╣реИ - "рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛", Apple рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдореЗрдВ com.apple.dt.unit рдЙрдкрд╕рд░реНрдЧ рд╣реИред
рдкреВрд░реНрд╡рдЬ рд╡рд░реНрддрдорд╛рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╣реИрдВред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдорд▓реНрдЯреАрдкрд▓ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛рдиреА, рд╕рд┐рдВрдЧрд▓ рд╡реНрдпреВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЛрдХреЛ рдЯрдЪ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред
рдпрд╣ рдПрдХрд▓ рджреГрд╢реНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдПрдВрд╕реНрдерд╛рдиреАрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА ~ / рд▓рд╛рдЗрдмреНрд░реЗрд░реА / рдбреЗрд╡рд▓рдкрд░ / Xcode / рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдХрд╕реНрдЯрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд╕реЗ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ Xcode рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдЦреЛрдпрд╛ред рдпрджрд┐ рдРрд╕реА рдХреЛрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдПрдВред
рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЦрд╛рдХрд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЛрдбрдлрд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛрдб рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ <?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>Kind</key> <string>Xcode.Xcode3.ProjectTemplateUnitKind</string> <key>Identifier</key> <string>ru.surfstudio.dt.unit.customTemplate</string> <key>Ancestors</key> <array> <string>com.apple.dt.unit.singleViewApplication</string> </array> <key>Concrete</key> <true/> <key>Description</key> <string></string> <key>Definitions</key> <dict> <key>../Podfile</key> <string>platform :ios, '11.0' pod 'Alamofire' pod 'Crashlytics' pod 'Fabric' </string> </dict> <key>Nodes</key> <array> <string>../Podfile</string> </array> </dict> </plist>
рдпрд╣рд╛рдВ рд╣рдордиреЗ рдбреЗрдлрд┐рдиреЗрд╢рди рд╕реЗрдХреНрд╢рди рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╡реИрд░рд┐рдПрдмрд▓ рдФрд░ рдлрд╛рдЗрд▓реНрд╕ рд╣реЛрдВрдЧреА, рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣рд╛рдБ рдФрд░ рдкреЙрдбрдлрд╛рдЗрд▓ рдХреБрдВрдЬреА рдХреЛ рдЬреЛрдбрд╝рд╛ред рдХреБрдВрдЬреА рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреБрдВрдЬреА рдХреЗ рдмрд╛рдж, рд╡рд╣ рд▓рд╛рдЗрди рд╕реЗрдЯ рдХрд░реЗрдВ рдЬреЛ рдЗрд╕ рдлрд╛рдЗрд▓ рдкрд░ рд▓рд┐рдЦреА рдЬрд╛рдПрдЧреАред рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд╛рдЗрдиреЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдВ рд╕реЗ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдЕрдм рдЗрд╕ рдХреЛрдб рдХреЛ рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ CustomTemplate.xctemplate рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ TemplateInfo.plist рдирд╛рдордХ рдлрд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ред рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реБрдЖ, рддреЛ Xcode рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп (рдлрд╝рд╛рдЗрд▓-> рдирдпрд╛-> рдкреНрд░реЛрдЬреЗрдХреНрдЯ ()N)) рд╣рдо рдПрдХ рдирдпрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реЗрдХреНрд╢рди рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рдЙрд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ рдирдпрд╛ тАЬCustomTemplateтАЭ рдЯреЗрдореНрдкрд▓реЗрдЯред

рд╣рдо рдЗрд╕реЗ рдЪреБрдирддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж, Prodfile рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЬреИрд╕реЗ рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИред
рд╣рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рдкрдВрдк рдХрд░рддреЗ рд╣реИрдВрд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд░реАрдбрдореА рдкреАрдврд╝реА рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЕрдм рдЪрд▓реЛ рдЗрд╕реЗ рддреБрд░рдВрдд рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдВрджрд░ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рди рдХрд░реЗрдВред
рддреЛ, рд╣рдорд╛рд░реЗ CustomTemplate.xctemplate рдХреЗ рдЕрдВрджрд░ README.md рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдпрд╣ рд╣реИ:
# ___PROJECTNAME___ Description of my project
рд╣рдорд╛рд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдиреЛрдбреНрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
<string>../README.md</string>
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░рд┐рднрд╛рд╖рд╛ рдЦрдВрдб рдХреЗ рдЕрдВрджрд░, рдЬреЛрдбрд╝реЗрдВ:
<key>../README.md</key> <dict> <key>Path</key> <string>README.md</string> </dict>
рдкреВрд░рд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛрдб рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ <?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>Kind</key> <string>Xcode.Xcode3.ProjectTemplateUnitKind</string> <key>Identifier</key> <string>ru.surfstudio.dt.unit.customTemplate</string> <key>Ancestors</key> <array> <string>com.apple.dt.unit.singleViewApplication</string> </array> <key>Concrete</key> <true/> <key>Description</key> <string></string> <key>Definitions</key> <dict> <key>../Podfile</key> <string> platform :ios, '11.0' pod 'Alamofire' pod 'Crashlytics' pod 'Fabric' </string> <key>../README.md</key> <dict> <key>Path</key> <string>README.md</string> </dict> </dict> <key>Nodes</key> <array> <string>../Podfile</string> <string>../README.md</string> </array> </dict> </plist>
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдЖрдпрд╛ред
рдЪрд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд╣рдорд╛рд░реЗ CustomTemplate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ Readme рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ:

рдЪреМрдХрд╕ рд▓реЛрдЧреЛрдВ рдиреЗ рджреЗрдЦрд╛ рдХрд┐ README.md рдореЗрдВ рд╣рдордиреЗ рд╣реЗрдбрд░ рдореЗрдВ ___PROJECTNAME___ рдЬреЛрдбрд╝рд╛, рди рдХрд┐ "MyNewProject"ред ___PROJECTNAME___, рдпрд╣ рдПрдХ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ Xcode рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ, рдирд┐рдореНрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
// // ___FILENAME___ // ___PACKAGENAME___ // // Created by ___FULLUSERNAME___ on ___DATE___. //___COPYRIGHT___ //
рдЙрдкрд▓рдмреНрдз рд╕реНрдерд┐рд░рд╛рдВрдХ рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдпрд╣рд╛рдБ рд╣реИ ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЖрдЬ рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рд╕рд░рд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреИрд╕реЗ рдмрдирд╛рдПрдВред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИ рдЬреЛ рдкреЙрдбрдлрд╛рдЗрд▓ рдФрд░ README рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рд╣рдорд╛рд░реЗ рдирдХреНрд╢реЗрдХрджрдо рдкрд░ рдЪрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ:
1. рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдЪреБрдиреЗрдВред
Xcode рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреНрдп рднреА рд╣реИрдВ: XcodeGen рдпрд╛ рдЖрдзрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЙрдкрдХрд░рдг рдЪреБрдирдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ рдФрд░ рд╕рд╣реА рдЪреБрдиреЗрдВред
2. рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реЗрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд╣реБрдд рдмрд╛рд░ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдХреБрдЫ рдЪрд░рдгреЛрдВ рдХреЛ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред
3. рдмрд┐рдВрджреБ # 2 рд╕реЗ рдЪрд░рдгреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ Xcode рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА:
рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкрд░ рдПрдХ
рд╕рдореАрдХреНрд╖рд╛ рд▓реЗрдЦ рдФрд░
рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкрд░ рдбреЙрдХ