
рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдЧреНрд░реИрдбрд▓ 4.7 рдФрд░ рдХреЛрдЯрд▓рд┐рди 1.3.30 рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛, рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдХрд╛рд░рдг рддреНрд╡рд░рд┐рдд рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдирд┐рд░реНрдорд╛рдг рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЧреНрд░реИрдбрд▓ рдореЗрдВ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреА рдкреВрд░реНрдг рдХреНрд╖рдорддрд╛ (рдЙрд╕реА рд╕рдордп рдХреЛрдб рдкреАрдврд╝реА рдХреЛ рдЦреЛрдП рдмрд┐рдирд╛) рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рд╕реЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдХреА рдЧрддрд┐ рдореЗрдВ рдХрд┐рд╕ рддрд░рд╣ рдХреА рд╡реГрджреНрдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдЧреНрд░реИрдбрд▓ рдореЗрдВ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдмрд┐рд▓реНрдб рджреЛ рд╕реНрддрд░реЛрдВ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рд╕реНрддрд░ рдХрдВрдкрд╛рдЗрд▓ рдЕрд╡реЙрдЗрдбреЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реАрдХреЙрдореНрдкрд▓рд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рд░рджреНрдж рдХрд░рдирд╛ рд╣реИред рджреВрд╕рд░рд╛ рд╕реАрдзреЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рд╕реАрдзреЗ рдмрджрд▓реЗ рд╣реБрдП рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред
рдЖрдЗрдП рддреАрди рдореЙрдбреНрдпреВрд▓реЛрдВ рдХреА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг (рдЧреНрд░реИрдбрд▓ рд╕реЗ рдПрдХ рд▓реЗрдЦ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛) рдкрд░ рд╕рдВрдХрд▓рди рд╕реЗ рдмрдЪрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдПрдкреНрд▓рд┐рдХреЗрд╢рди , рдХреЛрд░ рдФрд░ рдмрд░реНрддрди ред
рдРрдк рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧ ( рдХреЛрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ):
public class Main { public static void main(String... args) { WordCount wc = new WordCount(); wc.collect(new File(args[0]); System.out.println("Word count: " + wc.wordCount()); } }
рдХреЛрд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ ( рдмрд░реНрддрдиреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ):
public class WordCount {
рдмрд░реНрддрди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ:
public class IOUtils { void eachLine(File file, Callable<String> action) { try { try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрдХрд▓рди рдХрд╛ рдХреНрд░рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ (рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХреНрд░рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░):
1) рдмрд░реНрддрди
2) рдХреЛрд░
3) рдРрдк
рдЕрдм рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЬрдм рдЖрдк IOUtils рд╡рд░реНрдЧ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:
public class IOUtils {
рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди ABI рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред ABI (рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╛рдЗрдирд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕) рдЗрдХрдЯреНрдареЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╣рд╛рдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдкрдиреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЧреНрд░реИрдб рд╕рдВрдХрд▓рди рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдФрд░ рдХреЗрд╡рд▓ рдмрд░реНрддрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреБрдирд░реНрд╕рдВрдпреЛрдЬрди рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдмрд░реНрддрди рдореЙрдбреНрдпреВрд▓ рдХрд╛ ABI рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИ рдпрд╛ рдореМрдЬреВрджрд╛ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░), рддреЛ рдХреЛрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдВрдХрд▓рди рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЛрд░- рдирд┐рд░реНрднрд░ рдРрдк рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреБрди: рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдЗрд╕рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ ред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЙрдбреНрдпреВрд▓ рд╕реНрддрд░ рдкрд░ рд╕рдВрдХрд▓рди рдкрд░рд┐рд╣рд╛рд░ рдХрд╛ рдЪрд┐рддреНрд░рдг
рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реАрдзреЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рдХ рд▓реЙрдиреНрдЪ рд╕реНрддрд░ рдкрд░ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХрд╛ рджреВрд╕рд░рд╛ рд╕реНрддрд░ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рдЬреЛрдбрд╝реЗрдВ:
public class NGrams {
рдФрд░ рдмрд░реНрддрди рдореЗрдВ :
public class StringUtils { static String sanitize(String dirtyString) { ... } }
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рджреЛрдиреЛрдВ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдирдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрдорд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдореМрдЬреВрджрд╛ рдФрд░ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдП WordCount рдФрд░ IOUtils рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛), рдХреНрдпреЛрдВрдХрд┐ рдирдП рдФрд░ рдкреБрд░рд╛рдиреЗ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рдХ рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд░реАрдХреЙрдореНрдкрд┐рд▓ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ:
рдПрдкреАрдЯреА рдФрд░ рдХреЗрдПрдкреАрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдмрдирд╛рдиреЗ рд╕реЗ рдмрд╛рдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреЛ рд▓рд┐рдЦрдиреЗ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдореЗрдВ рдХрдореА рдЖрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрдВ рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рдорд╛рдорд▓реЛрдВ рдХреЛ рдмрджрддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рдВрдмреЗ рд╕рдордп рддрдХ, рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдиреЗ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЧреНрд░реИрдбрд▓ рдореЗрдВ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ред
рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реВрдЪрдирд╛ рдХреЛ рдПрдиреЛрдЯреЗрд╢рди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдмрд┐рдВрджреБ рд╕реЗ, рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рд╣реИ: рдЧреНрд░реЗрдбрд▓ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреНрдпрд╛ рдХрд░реЗрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдХреМрди рд╕реА рдлрд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдФрд░ рдХрд╣рд╛рдВред рдЧреНрд░реИрдбрд▓ 4.7 рддрдХ, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрди рд╕реНрд░реЛрдд рд╕реЗрдЯреЛрдВ рдкрд░ рдЕрдХреНрд╖рдо рд╣реЛ рдЧрдпрд╛ рдерд╛ рдЬрд╣рд╛рдВ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЧреНрд░реИрдбрд▓ 4.7 рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдЕрдм рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдкреАрдЯреА рдХреЗ рд▓рд┐рдПред рдХреЗрдПрдкреАрдЯреА рдореЗрдВ, рдХреЛрдЯрд▓рд┐рди 1.3.30 рдХреЗ рд╕рд╛рде рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рднреА рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╢реНрд░реЗрдгреА рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЧреНрд░реЗрдб рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ
рдЧреНрд░реЗрдбрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рджреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:
рдЕрд▓рдЧрд╛рд╡ - рдРрд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдХреЗрд╡рд▓ рдПрдПрд╕рдЯреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рд╕рднреА рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдПрдХ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рд╢реНрд░реЗрдгреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЧреНрд░реИрдбрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ рддреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЙрддреНрдкрдиреНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдПрдЧреНрд░реАрдЧреЗрдЯрд┐рдВрдЧ - рдЙрди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрдИ рдЗрдирдкреБрдЯреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпрд╛ рдПрдПрд╕рдЯреА рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЬреЛ рдПрдХ рдПрдиреЛрдЯреЗрдЯ рддрддреНрд╡ рд╕реЗ рдЯреНрд░рд╛рдВрд╕реНрдХреНрд░рд┐рдПрдмрд▓ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ)ред рд╣рд░ рдмрд╛рд░, рдЧреНрд░реИрдб рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╕реЗрд╕рд░ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ рдЬреЛ рдПрдЧреНрд░реАрдЧреЗрдЯрд┐рдВрдЧ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реИрдВред
рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рд╕рдорд░реНрдерди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реИред рдЙрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦреЗрдВ рдЬреЛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ ред
рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╣рдорд╛рд░рд╛ рдЕрдиреБрднрд╡
рдЕрдм рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЧреНрд░реЗрдбреЗрд▓ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдмрд┐рд▓реНрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдХреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдбрд╝реЗ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╡реГрджреНрдзрд┐ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдЕрджреНрдпрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ? рдЪрд▓реЛ рджреЗрдЦрддреЗ рд╣реИрдВ!
рдЗрд╕рд▓рд┐рдП, рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдЧреНрд░реЗрдбрд▓ 4.7+
- рдХреЛрдЯрд▓рд┐рди 1.3.30+
- рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рднреА рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдХрд┐рд╕реА рдПрдХрд▓ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЧреНрд░реЗрдбрд▓ рдЗрд╕реЗ рдкреВрд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рдо рдХрд░ рджреЗрдЧрд╛ред рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рд░ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛! рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдП рдмрд┐рдирд╛ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдХреЛрдб рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИред рдРрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдЬрд┐рдирдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд╣реАрдВ рд╣реИрдВ, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛
рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдлреНрд▓реИрдЧ рдХреЗ рд╕рд╛рде рдЕрд╕реЗрдВрдмрд▓реА рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ -kapt.verbose = true ред рдпрджрд┐ рдЧреНрд░реИрдбрд▓ рдХреЛ рдПрдХрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдмрд┐рд▓реНрдб рд▓реЙрдЧ рдореЗрдВ рд╣рдо рдПрдХ рд╕рдВрджреЗрд╢ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреМрди рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдХрд┐рд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдРрд╕рд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ (рдХрд╛рд░реНрдп рдХрд╛ рдирд╛рдо рджреЗрдЦреЗрдВ):
> Task :common:kaptDebugKotlin w: [kapt] Incremental annotation processing requested, but support is disabled because the following processors are not incremental: toothpick.compiler.factory.FactoryProcessor (NON_INCREMENTAL), toothpick.compiler.memberinjector.MemberInjectorProcessor (NON_INCREMENTAL).
рдЧреИрд░-рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░, 3 рдереЗ:
- рджрдВрд░реНрддрдЦреЛрджрдиреА
- рдХрдХреНрд╖
- PermissionsDispatcher
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реГрджреНрдзрд┐ рдХрд╛ рд╕рдорд░реНрдерди рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕рднреА рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЗрд╖реНрдЯрддрдо рд╢реНрд░реЗрдгреА рд╣реИ - рдЕрд▓рдЧ-рдерд▓рдЧред рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореБрдЭреЗ рдЯреВрдердкрд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдкреАрдЖрдИ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдХрд╛рд░рдг рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдкрдбрд╝рд╛, рдЬрд┐рд╕рдиреЗ рд╣рдорд╛рд░реЗ рд▓рдЧрднрдЧ рд╣рд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдереЗ, рдФрд░ рдпрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдСрдЯреЛ-рд░рд┐рдкреНрд▓реЗрд╕реНрдб рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╣реЛ рдЧрдпрд╛ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдХрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХрдорд░рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХреНрд░рдордмрджреНрдз: рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдзреНрд╡рдЬред рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдХрдХреНрд╖ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рдзреНрд╡рдЬ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред
Kotlin 1.3.30-1.3.50 рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ gradle.properties рдлрд╝рд╛рдЗрд▓ рдореЗрдВ kapt.incremental.apt = true рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕рдВрд╕реНрдХрд░рдг 1.3.50 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рд╣реИред
рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд░реВрдкрд░реЗрдЦрд╛
рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЙрдард╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдмрд┐рд▓реНрдб рдХреА рдЧрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЙрдкрдХрд░рдг рдФрд░ рддрдХрдиреАрдХреЛрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
- рдЧреНрд░реИрдб рдмрд┐рд▓реНрдб рд╕реНрдХреИрди
- Gradle-рдкреНрд░реЛрдлрд╛рдЗрд▓рд░
- рд╕рдХреНрд╖рдо рдФрд░ рдЕрдХреНрд╖рдо рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, gradle рдЧреБрдг kapt.incremental. = = [рд╕рддреНрдп | рдЧрд▓рдд] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- рд╕реБрд╕рдВрдЧрдд рдФрд░ рд╕реВрдЪрдирд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕реАрдЖрдИ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡реГрджреНрдзрд┐рд╢реАрд▓рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЧреНрд░реЗрдбреЗрд▓-рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛
gradle-profiler рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдмрд┐рд▓реНрдб рдорд╛рдирджрдВрдб рдХреЗ рд▓рд┐рдП рдШреЛрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред 4 рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
- рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЙрд╕рдХреЗ ABI рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд / рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
- рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░ / рдмрдВрдж рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рд░рди рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИ:
- рдЧреНрд░реЗрдбреЗрд▓ рдбреЗрдореЙрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛
- рд▓реЙрдиреНрдЪ рд╡рд╛рд░реНрдо-рдЕрдк рдмрд┐рд▓реНрдб
- 10 рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдЪрд▓рд╛рдПрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдХрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЧреИрд░-рдПрдмреАрдЖрдИ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА рдФрд░ рдПрдмреАрдЖрдИ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ)
рд╕рднреА рдмрд┐рд▓реНрдб рдЧреНрд░реИрдб 5.4.1 рдХреЗ рд╕рд╛рде рдХрд┐рдП рдЧрдП рдереЗред рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ (рд╕рд╛рдорд╛рдиреНрдп) рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ 40 рдореЙрдбреНрдпреВрд▓ (рдХреЛрд░ рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рд╕рд╣рд┐рдд) рд╕реАрдзреЗ рдирд┐рд░реНрднрд░ рд╣реИрдВред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред
рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рди рдХреЛ рджреЛ рдЧреНрд░реЗрдбрд▓ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: ompileDebugSources рдФрд░ assembleDebug ред рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдВрдХрд▓рди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ .apk рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдВрдбрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд┐рдирд╛ред рдЗрд╕ рддрдереНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдХреЗрд╡рд▓ .kt рдФрд░ .java рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, compileDedugSource рдХрд╛рд░реНрдп рдХреЛ рдЕрдзрд┐рдХ рдкреГрдердХ рдФрд░ рддреЗрдЬрд╝ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдХрд╛рд╕ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЬрдм рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдЕрд╕реЗрдВрдмрдбрдмрдЧ рдХрд╛рд░реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдбрд┐рдмрдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреВрд░реА рдкреАрдврд╝реА рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИред
рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░рд┐рдгрд╛рдо
рдЧреНрд░реЗрдбрд▓-рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╕рднреА рдЧреНрд░рд╛рдлреЛрдВ рдореЗрдВ, рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЕрдХреНрд╖ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рдордп рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рдЕрдХреНрд╖ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рд╛рд░рдВрдн рд╕рдВрдЦреНрдпрд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
: рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ compileDebugSource

рд╡реГрджреНрдзрд┐рд╢реАрд▓рддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдФрд╕рдд рд░рди рд╕рдордп 38 рд╕реЗрдХрдВрдб рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧреНрд░реИрдбрд▓ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдХреЛрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред
: annileation рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж compileDebugSource

рдЕрд╕рдорд╛рдирддрд╛ рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рдордп рдореЗрдВ рдФрд╕рддрди рдХрдореА ABI рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП 31% рдФрд░ рдЧреИрд░-ABI рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП 32.5% рдереАред рдирд┐рд░рдкреЗрдХреНрд╖ рдореВрд▓реНрдп рдореЗрдВ, рд▓рдЧрднрдЧ 10 рд╕реЗрдХрдВрдбред
: рдПрдирдмреЗрд╢рди тАЛтАЛрдкреНрд░реЛрд╕реЗрд╕рд░реНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрд╕реЗрдВрдмрд▓реНрдб рдбреАрдмрдЧ рдХрд░реЗрдВ

рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдЖрд╡реЗрджрди рдХреЗ рдкреВрд░реНрдг рдбрд┐рдмрдЧ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЗ рдХрд╛рд░рдг рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдореЗрдВ рдФрд╕рддрди 21.5% ABI рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдФрд░ 23% рдЧреИрд░-ABI рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдерд╛ред рдирд┐рд░рдкреЗрдХреНрд╖ рд░реВрдк рд╕реЗ, рд▓рдЧрднрдЧ 10 рд╕реЗрдХрдВрдб, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рдВрдХрд▓рди рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рдЧрддрд┐ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдЧреНрд░реИрдб рдмрд┐рд▓реНрдб рд╕реНрдХреИрди рдореЗрдВ рд╕реНрдХреИрди рдПрдирд╛рдЯреЙрдореА рдмрдирд╛рдПрдБ
рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреИрд╕реЗ рд╣реБрдИ, рдЗрд╕рдХреА рдЧрд╣рд░реА рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдФрд░ рдЧреИрд░-рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд╕реНрдХреИрди рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред
рд╡рд┐рдХрд▓рд╛рдВрдЧ KAPT рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рдРрдк-рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдВрдХрд▓рди рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирд╛рдВрддрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЧреИрд░-рд╡реГрджреНрдзрд┐рд╢реАрд▓ KAPT рдХреЗ рд▓рд┐рдП рд╕рдордпрд░реЗрдЦрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрди: рд╣рдорд╛рд░реЗ рдРрдк-рдореЙрдбреНрдпреВрд▓ рдХреЗ kaptDebugKotlin рдХреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рдЧрднрдЧ 8 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред
KAPT рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдордпрд░реЗрдЦрд╛ рд╕рдХреНрд╖рдо:

рдЕрдм рдРрдк рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рд╕реЗрдХрдВрдб рд╕реЗ рднреА рдХрдо рд╕рдордп рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдКрдкрд░ рдХреА рддрд╕реНрд╡реАрд░ рдореЗрдВ рджреЛ рд╕реНрдХреИрди рдХреЗ рддрд░рд╛рдЬреВ рдХреЗ рджреГрд╢реНрдп рдЕрд╕рдВрдЧрддрддрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдкрд╣рд▓реА рдЫрд╡рд┐ рдореЗрдВ рдЫреЛрдЯреЗ рдкреНрд░рддреАрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╡реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд▓рдЧрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдХреЗрдПрдкреАрдЯреА рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░ рдРрдк-рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреБрдирд░реНрдирд╡реАрдиреАрдХрд░рдг рдХрд╛ рдЕрдиреБрдкрд╛рдд рдХрд┐рддрдирд╛ рдХрдо рд╣реЛ рдЧрдпрд╛ рдерд╛ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдкрд░ рд▓рдЧрднрдЧ 8 рд╕реЗрдХрдВрдб рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдЫреЛрдЯреЗ рдореЙрдбреНрдпреВрд▓ рдкрд░ рд▓рдЧрднрдЧ 2 рд╕реЗрдХрдВрдб рдЬреАрддрддреЗ рд╣реИрдВред
рдЙрд╕реА рд╕рдордп, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдПрдиреЛрдЯреЗрд╢рди рдХреА рдЕрдХреНрд╖рдо рд╡реГрджреНрдзрд┐рд╢реАрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА * kapt рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдХреБрд▓ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп 1 рдорд┐рдирдЯ рдФрд░ 55 рд╕реЗрдХрдВрдб рдХреЗ рдЦрд┐рд▓рд╛рдл 36 рд╕реЗрдХрдВрдб рд╣реИ рдЬрдм рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдореЙрдбреНрдпреВрд▓ рдХреА рд╕рдорд╛рдирд╛рдВрддрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗ рдмрд┐рдирд╛, рд▓рд╛рдн рдЕрдзрд┐рдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП 24 рд╕рдорд╛рдирд╛рдВрддрд░ рдзрд╛рдЧреЗ рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рд╕реАрдЖрдИ-рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдЙрдкрд░реЛрдХреНрдд рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░рд┐рдгрд╛рдо рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдереЗред 8-рдереНрд░реЗрдбреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ рд▓рд╛рдн рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рд▓рдЧрднрдЧ 20-30 рд╕реЗрдХрдВрдб рд╣реИред
рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдмрдирд╛рдо (?) рд╕рдорд╛рдирд╛рдВрддрд░
рдЕрд╕реЗрдВрдмрд▓реА (рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдФрд░ рд╕реНрд╡рдЪреНрдЫ рджреЛрдиреЛрдВ) рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╢рд┐рдерд┐рд▓ рдпреБрдЧреНрдорд┐рдд рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд░реВрдк рд╕реЗ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рд░реНрдп рдХрд░рдирд╛ред рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп, рд╡реГрджреНрдзрд┐рд╢реАрд▓ KAPT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреНрд╖рдорддрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рдЕрдЦрдВрдб рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рдХреЛрдб рдкреАрдврд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрддрдиреА рд╣реА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдЧрд╛ред рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓реА рдХреА рдкреВрд░реНрдг рд╡реГрджреНрдзрд┐ рдХреА рдкреНрд░рднрд╛рд╡ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдлрд┐рд░ рднреА, рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдкреВрд░рдХ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдо
- рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдорд╛рд╡реЗрд╢ рдиреЗ рд╣рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреА рдЧрддрд┐ рдореЗрдВ 20% рд╡реГрджреНрдзрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА
- рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдкреВрд░реНрдг рд▓реЙрдЧ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдФрд░ рдкрд╛рда рдХреЗ рд╕рд╛рде рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢реЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ "рдЗрдВрдХреНрд░реАрдореЗрдВрдЯрд▓ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рд╕рдорд░реНрдерди рдЕрдХреНрд╖рдо рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рдЗрдВрдХреНрд░реАрдореЗрдВрдЯрд▓ рдирд╣реАрдВ рд╣реИрдВ ..."ред рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЙрдиреНрдирдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдЧреНрд░реЗрдбрд▓ 4.7+, рдХреЛрдЯрд▓рд┐рди 1.3.30+ рд╣реИрдВ
рд╕рд╛рдордЧреНрд░реА рдФрд░ рд╡рд┐рд╖рдп рдкрд░ рдХреНрдпрд╛ рдкрдврд╝рдирд╛ рд╣реИ