рд╣рдордиреЗ рдХреЛрдЯрд▓рд┐рди рдХреЛ рдЕрдкрдиреА рд▓рдХреНрд╖рд┐рдд рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВ рдЪреБрдирд╛ред рднрд╛рдЧ 2: рдХреЛрдЯрд▓рд┐рди рдорд▓реНрдЯреАрдкреНрд▓реЗрдЯ рд░рд┐рдХреЙрд░реНрдбрд░

рд╣рдо рдЕрдкрдиреА рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЛрдЯрд▓рд┐рди рднрд╛рд╖рд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЛ рджреЗрдЦреЗрдВ ред

2017 рдореЗрдВ, Jetbrains рдХреА рдорд╣рддреНрд╡рд╛рдХрд╛рдВрдХреНрд╖реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рджрд┐рди рдХреЗ рдкреНрд░рдХрд╛рд╢ рдХреЛ рджреЗрдЦрд╛, рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рдХрд╛рд╕ рдкрд░ рдПрдХ рдирдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреЗрд╢ рдХрд┐рдпрд╛ред рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рдореВрд▓ рдХреЛрдб рдореЗрдВ рдХреЛрдЯрд▓рд┐рди рдХреЛрдб рдХрд╛ рд╕рдВрдХрд▓рди! рд╣рдо рдбреЛрдордХрд▓рд┐рдХ рдореЗрдВ, рдмрджрд▓реЗ рдореЗрдВ, рд╣рдореЗрд╢рд╛ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВред рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдордиреЗ рд╕реЛрдЪрд╛? рдпрд╣ рд╕рд╣реА рд╣реИ - рдХреЛрдб рдмрд┐рд▓реНрдХреБрд▓ рди рд▓рд┐рдЦреЗрдВред рдФрд░ рддрд╛рдХрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдмрдХрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЕрдЧрд░ рдХреЛрдИ рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдЦрд░реНрдЪ рдХрд┐рдП рдмрд┐рдирд╛, рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдХреЛрдб рдЖрдзрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рддреЛ рдкреНрд░рдпрд╛рд╕ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ?

рдЗрд╕рд▓рд┐рдП рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдореЗрд░рд╛ рдирд╛рдо рдЧреЗрдиреНрдиреЗрдбреА рд╡рд╛рд╕рд┐рд▓рдХреЛрд╡ рд╣реИ, рдореИрдВ рдбреЛрдордХреНрд▓рд┐рдХ рдореЗрдВ рдПрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВ рдФрд░ рдЖрдЬ рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдЯрд▓рд┐рди рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рд╣рдореЗрдВ рдХрд┐рди рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рд╣рдордиреЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдФрд░ рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ред рд╡рд┐рд╖рдп рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдкреА рдХрд╛ рд╡рд┐рд╖рдп рд╣реЛрдЧрд╛ рдЬреЛ рдХреЛрдЯрд▓рд┐рди рдПрдордкреАрдкреА (рдорд▓реНрдЯреАрдкреНрд▓рд╛рдпрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕) рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрд╢рд┐рд╢ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрддреНрдкрд╛рджрди рдЦрддреНрдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдпрд╛ рд▓рд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рд╡реИрд╕рд╛ рдирд╣реАрдВред рдореИрдВ рд╣рдорд╛рд░реА рджреГрд╖реНрдЯрд┐ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╡рд┐рдХрд╕рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЖрдкрдХреЛ рдХреЛрдЯрд▓рд┐рди рдПрдордкреАрдкреА рдореЗрдВ рд╣рдорд╛рд░реЗ рд╡рд┐рдХрд╛рд╕ рдкрде рдХреА рд╢реБрд░реБрдЖрдд рдмрддрд╛рдКрдВрдЧрд╛)ред

рдХреНрдпрд╛ рдЖрдк рдХрд╣рд╛рдирд┐рдпреЛрдВ рдХреЛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╣рдордиреЗ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛? рд╡реЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ!



рддрдХрдиреАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ


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

рдЗрдВрдЯреЗрд▓реАрдЬреЗ рдЖрдИрдбреАрдИрдП рдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдХреЛрдЯрд▓рд┐рди рднрд╛рд╖рд╛ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд╣реИред рдкреНрд▓рд╕ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдПрдВрдбреНрд░реЙрдЗрдб рдбреЗрд╡рд▓рдкрд░реНрд╕ (рдХрдо рд╕реЗ рдХрдо рд╣рдорд╛рд░реЗ рд╕рд╛рде) рднрд╛рд╖рд╛ рдФрд░ рдЗрди рдЕрджреНрднреБрдд рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рджреЛрдиреЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (рдУрдмреАрдЬреЗ-рд╕реА, рдЬреЗрдПрд╕, рдЬреЗрд╡реАрд╡реА рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ) рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдХреЛ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рднреА рдПрдХ рдмрдбрд╝рд╛ рдкреНрд▓рд╕ред

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

рдереЛрдбрд╝рд╛ рддрдХрдиреАрдХреА, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдЯрд▓рд┐рди рдПрдордкреАрдкреА рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


  • рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рд╣реИ Gradle , рдпрд╣ рдЧреНрд░реВрд╡реА рдФрд░ kotlin рд╕реНрдХреНрд░рд┐рдкреНрдЯ (KTS) рдореЗрдВ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
  • рдХреЛрдЯрд▓рд┐рди рдПрдордкреАрдкреА рдореЗрдВ рд▓рдХреНрд╖реНрдп - рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред рдЗрди рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ, рдЬрд┐рди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдореВрд▓ рдХреЛрдб рдХреЛрдЯрд▓рд┐рди рдкрд░ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛ред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ 2 рд▓рдХреНрд╖реНрдп рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, jvm рдФрд░ js (рддрд╕реНрд╡реАрд░ рдХреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ):

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



    рддрдВрддреНрд░ рд╕рд╛рдорд╛рдиреНрдп рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЙрдореНрдореАрдж рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд╛рд▓реЗ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдиреАрдЪреЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рддрд╛рд░реАрдЦ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

    Common:
    internal expect val timestamp: Long
    
    Android/JVM:
    internal actual val timestamp: Long 
        get() = java.lang.System.currentTimeMillis()
    
    iOS:
    internal actual val timestamp: Long 
        get() = platform.Foundation.NSDate().timeIntervalSince1970.toLong()
    

    рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдордВрдЪ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрд░рдорд╢рдГ рдЬрд╛рд╡рд╛ рдФрд░ рдЖрдИрдУрдПрд╕ рдлрд╛рдЙрдВрдбреЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЙрдкрд▓рдмреНрдз рд╣реИрдВред

рдпреЗ рдмрд┐рдВрджреБ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдХреНрдпрд╛ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рд╣рдорд╛рд░рд╛ рдЕрдиреБрднрд╡


рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреЛрдЯрд▓рд┐рди рдПрдордкреАрдкреА (рддрдм рдЗрд╕реЗ рдХреЛрдЯрд▓рд┐рди / рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛) рдХреЛ рдПрдХ рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╣рдордиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдордиреЗ рд╕рд╛рдЭрд╛ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдерд╛ред рдкрд╣рд▓реЗ рдпрд╣ рдХреЗрд╡рд▓ рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдХреЛрдб рдерд╛, рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ jvm рдмреИрдХрдПрдВрдб рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ред рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░, рд╡рд┐рдХрд╕рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкреНрд░рдХрд╛рд╢рди рдиреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдирд╣реАрдВ рдХреАрдВ, рдЖрдИрдУрдПрд╕ рдкрд░, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдореЙрдбрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдХреБрдЫ рдШреВрдордиреЗ рдХрд╛ рд╕рдордп!


рд╣рдордиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдп рдХрд┐рдП рд╣реИрдВ рдЬреЛ рд╣рдо рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

1) рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕


рдШрдЯрдирд╛ рдХреА рдкреГрд╖реНрдарднреВрдорд┐


рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рднреА рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ 600 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рднрд┐рдиреНрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ)ред рдФрд░ рдореАрдЯреНрд░рд┐рдХ рд╕рдВрдЧреНрд░рд╣ рдХреНрдпрд╛ рд╣реИ? рдПрдХ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╣реИ рдЬреЛ рдПрдХ рдШрдЯрдирд╛ рдХреЛ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдЗрдВрдЬрди рдХреЗ рдЖрдВрддреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рднреЗрдЬрддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдлрд╛рдпрд░рдмреЗрд╕, рдПрдкрдореЗрдЯреНрд░рд┐рдХ рдФрд░ рдЕрдиреНрдпред рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ? рджреЛ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдПрдХ рд╣реА (рдкреНрд▓рд╕ рдпрд╛ рдорд╛рдЗрдирд╕) рдХреЛрдб рдХрд╛ рд▓рдЧрд╛рддрд╛рд░ рджреЛрд╣рд░рд╛рд╡! рд╣рд╛рдВ, рдФрд░ рдорд╛рдирд╡ рдХрд╛рд░рдХ рдХреЛ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЧрд▓рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдХреБрдВрдЬреА рдХреЗ рдирд╛рдо рдкрд░ рдФрд░ рдШрдЯрдирд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рд╕рд╛рд░рд┐рдд рдореЗрдЯрд╛-рдбреЗрдЯрд╛ рд╕реЗрдЯ рдореЗрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдмрд╛рд░ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рдФрд░ рдкрд░реАрдХреНрд╖рдг рддрдХрдиреАрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд░реНрд╢ рдЙрдореНрдореАрджрд╡рд╛рд░ (рдХреЛрдЯрд▓рд┐рди рдореИрдк рдореЗрдВ рдпрд╣ рд╣рдорд╛рд░реА рдкрд░реАрдХреНрд╖рд╛ рдХрд▓рдо рд╣реИ)ред

рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ?


рд╣рдордиреЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЦреБрдж рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ (рдПрдХ рд╡рд╛рдпрд░реНрдб рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рддрд░реНрдХреЛрдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдореЗрдЯрд╛-рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕реЗрдЯ) рдФрд░ рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рддрд░реНрдХ рд▓рд┐рдЦрд╛ред рдИрд╡реЗрдВрдЯ рдкреНрд░рд╛рд░реВрдк рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЗрдВрдЬрди (рдмрд╕) рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХреА рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдбреЙрдкреНрдЯрд░ рд╢реНрд░реЛрддрд╛рдУрдВ рдиреЗ рд▓рд┐рдЦрд╛ (рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рд╕рдорд╛рдзрд╛рди рдирд┐рдХрд▓рд╛, рдХрд┐рд╕реА рднреА рдирдП рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдм рдХреБрдЫ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЪреБрдирд┐рдВрджрд╛ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдХреЛ рдПрдХ рдирдП рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ)ред



рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк


IOS рдХреЗ рд▓рд┐рдП рдХреЛрдЯрд▓рд┐рди / рдиреЗрдЯрд┐рд╡ рдореЗрдВ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдХреЗ рдХрд╛рд░рдг, рдЖрдк рдХрд┐рд╕реА рдПрдХрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдЯрд▓рд┐рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдФрд░ рди рд╣реА рдХрднреА рднреА рд╡рд╣рд╛рдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВред рдзрд╛рдЧреЗ рдХреЗ рдмреАрдЪ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬрдореЗ рд╣реБрдП рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдлреНрд░реАрдЬ () рдлрд╝рдВрдХреНрд╢рди рд╣реИ)ред рд▓реЗрдХрд┐рди рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд░рд╛рдЬреНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрд╡реЗрджрди рдХреЗ рдЬреАрд╡рди рдХреЗ рджреМрд░рд╛рди рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рддрдп рдХрд░рддреЗ рд╣реИрдВ:

Common:

expect class AtomicReference<T>(value_: T) {
    var value: T
}

Android:

actual class AtomicReference<T> actual constructor(value_: T) {
    actual var value: T = value_
}

iOS:

actual typealias AtomicReference<V> = kotlin.native.concurrent.AtomicReference<V>

рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╕рд░рд▓ рд░рд╛рдЬреНрдп рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ:

object Config {
    val platform = AtomicReference<String?>("")
    var manufacturer = AtomicReference<String?>("")
    var model = AtomicReference<String?>("")
    var deviceId = AtomicReference<String?>("")
    var appVersion = AtomicReference<String?>("")
    var sessionId = AtomicReference<String?>("")
    var debug = AtomicReference<Boolean>(false)
}

рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рд╣рдореЗрдВ рдЖрд╡реЗрджрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ, рдЬрдм рдореЙрдбреНрдпреВрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЛрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдХреА рд╡рд╕реНрддреБрдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрдореЗ рд╣реБрдП рд░рд╛рдЬреНрдп рдореЗрдВ рд╣реИрдВред рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ iOS рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдзрд╛рд░рд╛рдУрдВ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрджрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

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

рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдирд┐рд░реНрдгрдп рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛
рдХреЛрдЯрд▓рд┐рди рдкреНрд▓рдЧрдЗрди рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рд╣реИ, рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдирдпрд╛ рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рдлреНрд░реЗрдорд╡рд░реНрдХ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдХрд┐рд╕реА рд╕реЗ рдореЗрдЯрд╛ рдбреЗрдЯрд╛ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдордиреЗ рдЖрд░реНрдо 64 рд▓рд┐рдпрд╛ рд╣реИ):
//add meta files (headers, modules and plist) from arm64 platform
task copyMeta() {
    dependsOn build

    doLast {
        copy {
            from("$buildDir/bin/iphone/main/release/framework/${frameworkName}.framework")
            into "$buildDir/iphone_universal/${frameworkName}.framework"
        }
    }
}

, , , . lipo, :
//merge binary files into one
task lipo(type: Exec) {
    dependsOn copyMeta

    def frameworks = files(
            "$buildDir/bin/iphone32/main/release/framework/${frameworkName}.framework/$frameworkName",
            "$buildDir/bin/iphone/main/release/framework/${frameworkName}.framework/$frameworkName",
            "$buildDir/bin/iphoneSim/main/release/framework/${frameworkName}.framework/$frameworkName"
    )
    def output = file("$buildDir/iphone_universal/${frameworkName}.framework/$frameworkName")
    inputs.files frameworks
    outputs.file output
    executable = 'lipo'
    args = frameworks.files
    args += ['-create', '-output', output]
}

, - Kotlin MPP Info.plist UIRequiredDeviceCapabilities, ( ). PlistBuddy:
//workaround
//remove UIRequiredDeviceCapabilities key from plist file (because we copy this file from arm64, only arm64 architecture was available)
task editPlistFile(type: Exec) {
    dependsOn lipo

    executable = "/bin/sh"
    def script = './scripts/edit_plist_file.sh'
    def command = "Delete :UIRequiredDeviceCapabilities"
    def file = "$buildDir/iphone_universal/${frameworkName}.framework/Info.plist"

    args += [script, command, file]
}

edit_plist_file.sh:
/usr/libexec/PlistBuddy -c "$1" "$2"

, zip ( podspec ):
task zipIosFramework(type: Zip) {
    dependsOn editPlistFile
    from "$buildDir/iphone_universal/"
    include '**/*'
    archiveName = iosArtifactName
    destinationDir(file("$buildDir/iphone_universal_zipped/"))
}

podspec :
task generatePodspecFile(type: Exec) {
    dependsOn zipIosFramework

    executable = "/bin/sh"

    def script = './scripts/generate_podspec_file.sh'

    def templateStr = "version_name"
    def sourceFile = './podspec/template.podspec'
    def replaceStr = "$version"

    args += [script, templateStr, replaceStr, sourceFile, generatedPodspecFile]
}

generate_podscpec_file.sh :
sed -e s/"$1"/"$2"/g <"$3" >"$4"

curl :
task uploadIosFrameworkToNexus(type: Exec) {
    dependsOn generatePodspecFile

    executable = "/bin/sh"
    def body = "-s -k -v --user \'$userName:$password\' " +
            "--upload-file $buildDir/iphone_universal_zipped/$iosArtifactName $iosUrlRepoPath"
    args += ['-c', "curl $body"]
}

task uploadPodspecFileToNexus(type: Exec) {
    dependsOn uploadIosFrameworkToNexus

    executable = "/bin/sh"
    def body = "-s -k -v --user \'$userName:$password\' " +
            "--upload-file $generatedPodspecFile $iosUrlRepoPath"
    args += ['-c', "curl $body"]
}

:
task createAndUploadUniversalIosFramework() {
    dependsOn uploadPodspecFileToNexus
    doLast {
        println 'createAndUploadUniversalIosFramework complete'
    }
}


Profit!


рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдПрдХ рд╡рд╕рд╛ рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдПрдХ рдкреЙрдбрд╕реНрдкреЗрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрддреЗ рд╣реИрдВ (рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдХреЛрдХреЛрдЖрдХреЛрдбрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг)ред рддреЛ рд╣рдореЗрдВ рдмрд╕ рдмрдирд╛рдП рдЧрдП рдврд╛рдВрдЪреЗ рдФрд░ рдкреЙрдбрд╕реНрдкреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЖрдИрдУрдПрд╕ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ:




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

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

рдФрд░ рдЕрдм рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рд╢реЛрдз рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


+ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
+ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ (рдХрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╡рд┐рд╕рдВрдЧрддрд┐) рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕реЗрд╡рд╛ рддрд░реНрдХ рдХрд╛ рдПрдХреАрдХреГрдд рдХреЛрдб рдЖрдзрд╛рд░ред
+ рдирдИ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд╛рдЧрдд рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░рдирд╛ред
+ рд╣рдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред

рд╕рдореНрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХреНрд╕


Kotlin Multiplatform рд╡реЗрдмрд╕рд╛рдЗрдЯ: www.jetbrains.com/lp/mobilecrossplatform

ZY:
рдореИрдВ рднрд╛рд╖рд╛ рдХреЗ рднрд╛рд╖рд┐рдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЛрд╣рд░рд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдХреЛ

рдХрд╡рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд▓реЗрдЦреЛрдВ рдХреА рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ: "рдХреЛрдЯрд▓рд┐рди рдЗрди рдж рд╣реБрдб - рд╡рд┐рдШрдЯрд┐рдд рдмрд╛рдпрдЯреЗрдХреЛрдб рджреЗрдЦреЗрдВ" - рдХреЛрдЯрд▓рд┐рди рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдФрд░ рднрд╛рд╖рд╛ рдХреА рдореВрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓реЗрдЦред
habr.com/en/post/425077
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдкреВрд░рдХ рд▓реЗрдЦ " рдХреЛрдЯрд▓рд┐рди, рдмрд╛рдЗрдЯреЗрдХреЛрдб рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕рдВрдХрд▓рди" рдХреЗ рджреЛ рднрд╛рдЧред
habr.com/ru/company/inforion/blog/330060
habr.com/ru/company/inforion/blog/330064
рдкрд╛рд╢рд╛ рдлрд┐рдВрдХреЗрд▓рд╕реНрдЯреАрди рдХреА рд░рд┐рдкреЛрд░реНрдЯ "рдХреЛрдЯрд▓рд┐рди - рдЙрддреНрдкрд╛рджрди рдореЗрдВ рджреЛ рд╕рд╛рд▓ рдФрд░ рдПрдХ рднреА рдЕрдВрддрд░рд╛рд▓ рдирд╣реАрдВ", рдЬреЛ рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдореЗрдВ рдХреЛрдЯрд▓рд┐рди рдХреЗ рдЙрдкрдпреЛрдЧ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЕрдиреБрднрд╡ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
www.youtube.com/watch?v=nCDWb7O1ZW4

All Articles