
/ PxHere / рдкреАрдбреА
рдПрдкреАрдХреЗ рдХреЗ рд╡рдЬрди рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдПрдХ рдЧреИрд░ рддреБрдЪреНрдЫ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдВрд╕реНрдЯреЗрдВрдЯ рдРрдк рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХрд╛рд░реНрдп рд╣реИред рдпрджрд┐ рдЖрдкрдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рддреЛ рдкреНрд░реЙрдк рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЖрдкрдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрдб рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдкреАрдХреЗ рдореЗрдВ рдХрдИ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреИрд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░ рдмрд┐рд▓реНрд▓реА рдХреЗ рддрд╣рдд - рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рд╕рд╛рде рд╣реА, рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рдЕрд╕реЗрдВрдмрд▓реА рдШрдЯрдХреЛрдВ рдХреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдП рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИрдВред
рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ
- рд▓реЗрдЦ рд╕реЗ рдпреБрдХреНрддрд┐рдпрд╛рдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, Google рдХреЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдкреАрдХреЗ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВред рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдорд╛рдирдХ рдЕрдиреБрдХреВрд▓рди рдХреА рдХрдореА рд╣реИред
- "рдкреНрд░реЛрдЧрд╛рд░реНрдб" рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдВрдХрд▓рдиред
- рдШрдЯрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореЗрд░рд╛ рдорддрд▓рдм рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЙрддреНрдкрд╛рдж рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреИрдХреЗрдЬ рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░реЗрдбреНрдпреВрд▓ рдореЙрдбреНрдпреВрд▓ рд╣реИред
рд╣рдорд╛рд░реЗ Google- рдЕрдиреБрдХреВрд▓рд┐рдд APK рдХрд╛ рд╡рдЬрди 4.4
рдерд╛ред
рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╛рдЗрд▓реЗрдВ
рдЪрд▓реЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреЛрдЯрд▓рд┐рди-рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ , рддреЛ рдЖрдк рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рдХреЛрдЯрд▓рд┐рди рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
build.gradle (Module: app)
android { packagingOptions { exclude("META-INF/*.kotlin_module") exclude("**.kotlin_builtins") exclude("**.kotlin_metadata") } }
рдЬрд╛рд╡рд╛ рдкрд░рд╛рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред *.kotlin_module
, *.kotlin_builtins
рдФрд░ *.kotlin_metadata
ред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдпрджрд┐ рдЖрдк obj::class.<method>
рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк kotlin рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ obj::class.java.<method>
, рддреЛ java рдкреНрд░рддрд┐рдмрд┐рдВрдмред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо: -602.1 рдХреЗрдмреА
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрднреА-рдХрднреА рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХрднреА рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдЯрд░-рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдЯрд▓рд┐рди-рд░рд┐рдлреНрд▓реЗрдХреНрдЯ рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реИ (0.5 mb!)ред
рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЛрдВ рд╕реЗ minifyEnabled = true
рд░рд╣рд╛: рдореИрдВрдиреЗ minifyEnabled = true
рдХреЛ minifyEnabled = true
рд╕рд╛рде рдПрдХрддреНрд░ рдХрд┐рдпрд╛, рдЗрд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛, mapping.txt
рдбрд╛рдЙрдирд▓реЛрдб mapping.txt
рдФрд░ рдЙрди рдкреИрдХреЗрдЬреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХреА, рдЬреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, kotlin.reflect
ред рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж ./gradlew app:dependencies
рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ (рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рдХреА рд▓рдВрдмрд╛рдИ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ред рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкреЗрдбрд╝ рдмрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ!)ред рдЗрд╕ рдкреЗрдбрд╝ рд╕реЗ рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрд╛рд╣рд░ рдХрд░рддрд╛ рд╣реИред рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ build.gradle
:
dependencies { implementation("io.ktor:ktor-client-core:$ktorVersion") { exclude(group: "org.jetbrains.kotlin", module: "kotlin-reflect") } implementation("io.ktor:ktor-client-okhttp:$ktorVersion") { exclude(group: "org.jetbrains.kotlin", module: "kotlin-reflect") } }
рдпрд╣ рдХреЛрдб kotlin- рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдкрд░ рдХреЛрдЯрд░- рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ ред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓реЗрдВред
!!! рдЗрд╕ рд╕рд▓рд╛рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдХрд░реЗрдВ! рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддреА рд╣реИ !!!
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо: -500.3 kb
рдЕрдкрдиреЗ XML рдХреЛ рдорд╛рдиреНрдп рдХрд░реЗрдВ
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкреНрд░реЛрдЧрд╛рд░реНрдб рд▓реЗрдЖрдЙрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд XML рдорд╛рд░реНрдХрдЕрдк рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рддрд╛ рд╣реИред рдЕрдкреНрд░рдпреБрдХреНрдд рдПрдХреНрд╕рдПрдордПрд▓ "рднрд╛рд░реА" рд╡рд┐рдЧреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╛рдЧрд╛рд░реНрдб рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реЗ рднреА рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛! рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, Refactor -> Remove unused resources...
рд╕рд╛рде рдЕрдкреНрд░рдпреБрдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ Refactor -> Remove unused resources...
рдЕрдкреНрд░рдпреБрдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ Refactor -> Remove unused resources...
рдЕрдкрдиреА рдбреАрдЖрдИ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ
рдпрджрд┐ рдЖрдк, рд╣рдорд╛рд░реА рддрд░рд╣, рд░рдирдЯрд╛рдЗрдо DI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрди рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рддрд╛ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд░рдХреНрд╖рдХ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рдВрдХрд▓рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЕрдкреНрд░рдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдмрдирд╛рддреЗ рд╕рдордп рдЖрдк рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд░рд┐рд▓реАрдЬ рдмрд┐рд▓реНрдб рд╕реЗ рдбрд┐рдмрдЧ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ
рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕реА рдЬрдЧрд╣ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, stetho
рд╡рдЬрди рд╕рдВрдкреАрдбрд╝рди рдХреЗ рдмрд╛рдж рд▓рдЧрднрдЧ 0.2
! рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рдВрдкреВрд░реНрдг рдбрд┐рдмрдЧрд┐рдВрдЧ рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдмрд┐рд▓реНрдб рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ Google Play рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рди рд╕реАрдЦ рд╕рдХреЗред
рдЖрдк рдбрд┐рдмрдЧ рдФрд░ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, src
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, main
рдмрдЧрд▓ рдореЗрдВ, debug
рдФрд░ release
рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБред рдЕрдм рдЖрдк initStetho
рдлрдВрдХреНрд╢рди рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ initStetho
рдХреЛ src/debug/java/your/pkg/Stetho.kt
рдореЗрдВ initStetho
рдХрд░рддрд╛ рд╣реИ рдФрд░ initStetho
рдлрд╝рдВрдХреНрд╢рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ src/release/java/your/pkg/Stetho.kt
рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗрд╡рд▓ рдбрд┐рдмрдЧ рдмрд┐рд▓реНрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдк рдЗрд╕реЗ debugImplementation
рдореЗрдВ build.gradle
debugImplementation
рд╕рд╛рде implementation
рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдмрд╛рд░ рдирд╣реАрдВ, рдЗрд╕ рдХрджрдо рдХреЗ рдмрд┐рдирд╛ рднреА, рдкреНрд░реЙрдкрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдирд╣реАрдВред рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ "рдХреНрдпреЛрдВ?" рд▓реЗрдЦ рдХреЗ рдкрд╛рда рдореЗрдВ рдиреАрдЪреЗ ред
рдХрднреА-рдХрднреА, рд╕рдорд╛рди рдХреЛрдб рдЖрдзрд╛рд░ рдкрд░, рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпреЗ рд╡рд┐рднрд┐рдиреНрди рджреЗрд╢реЛрдВ рдпрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рднрд┐рдиреНрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдПред рдиреАрдЪреЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛ рдСрдлрд╝рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдЯрд┐рдкреНрд╕ рджрд┐рдП рдЧрдП рд╣реИрдВред

/ PxHere / рдкреАрдбреА
рд╣рдорд╛рд░рд╛ рдЕрдиреБрднрд╡
рд╣рдо рдПрдХ рдИ-рд╢реЙрдк рдореЛрдмрд╛рдЗрд▓ рдРрдк рдбрд┐рдЬрд╛рдЗрдирд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рджрд░реНрдЬрди рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдкрд╛рд╕ рдШрдЯрдХреЛрдВ рдХрд╛ рдЕрдкрдирд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдЯ рд╣реИред рдХреБрдЫ рдШрдЯрдХ рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреБрдЫ рдХреЗрд╡рд▓ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдШрдЯрдХреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИ рдЬрд┐рдирдХреА рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЭрдВрдбрд╛ рдЕрдкрд╡рд╛рдж
рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдЕрд▓рдЧ рдЙрддреНрдкрд╛рдж рдмрдирд╛рддреЗ рд╣реИрдВ ред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЖрдИрдбреАрдИ рд╕реНрд╡рд╛рджреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреИрд╢ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ BuildConfig.java
рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП! рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк boolean
рдХрд╛ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдмрдирд╛рдПрдВред
android { productFlavors { client1 { buildConfigField("boolean", "IS_CATALOG_ENABLED", "true") } client2 { buildConfigField("boolean", "IS_CATALOG_ENABLED", "false") } } }
рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рд╣рдорд╛рд░реЗ рд╕реАрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рдХрд╛рд░рдг рд╡рд░реНрддрдорд╛рди рдЬрдЯрд┐рд▓ рд╣реИред
рдЕрдм рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдШрдЯрдХ рд╕рдВрдХрд▓рди рдЪрд░рдг рдкрд░ рд╕рдХреНрд░рд┐рдп рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рдЗрд╕реЗ рдЧрд╛рд░реНрдб рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ!
XML рдлрд┐рд░ рд╕реЗ
рдЕрдм рдЕрдкреНрд░рдпреБрдХреНрдд XML рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдПрдХ рдирдП рдЖрдпрд╛рдо рдкрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИ! рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдШрдЯрдХ рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдирд┐рдХрд╛рд▓ рдФрд░ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╣рдорд╛рд░реЗ рдПрдХреНрд╕рдПрдордПрд▓ рдПрдкреНрд▓реАрдХреЗрд╢рди рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рд╡рд┐рдЬреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ рдЫрд╡рд┐ рдорд╛рдиреНрдпрддрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА firebase.ml.vision
рд▓рд┐рдП рд╕рдВрджрд░реНрднрд┐рдд рд╣реИред рдЗрд╕рдХрд╛ рд╡рдЬрди рд▓рдЧрднрдЧ 0.2 mb рд╣реИ, рдЬреЛ рдмрд╣реБрдд рд╣реИред рдпрд╣ рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рд╡рд┐рдЬреЗрдЯ рдХреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░рд╛рдЧрд╛рд░реНрдб рдЙрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реЗ vision
рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо: -222.3 рдХреЗрдмреА рдФрд╕рдд рдХреЗ рд▓рд┐рдП
@Keep
рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП 2 рддрд░реАрдХреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреЛ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛: рдлрд╝рд╛рдЗрд▓ @Keep
рдореЗрдВ рдПрдХ рдирд┐рдпрдо рд▓рд┐рдЦреЗрдВ рдпрд╛ @Keep
рдПрдиреЛрдЯреЗрд╢рди @Keep
ред play-services-vision
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ, рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рд░реВрдЯ рдХреНрд▓рд╛рд╕ рдкрд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, 0.2 mb рдЙрди рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рднреА рдореГрдд рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЫрд╡рд┐ рдкрд╣рдЪрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ - рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, firebase.ml.vision
рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдЬреЛ рдХрд┐ play-services-vision
рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдордиреЗ рдЗрд╕ рдкрд░ рдЬрд╛рдХрд░ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХреА рд╣реИред
рдФрд░ рдлрд┐рд░ рд╕реЗ рдбреАрдЖрдИ
рдЕрдВрддрд┐рдо рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдирд╣реАрдВред рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐ред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдкрд░рд┐рдгрд╛рдо: рдФрд╕рдд рдПрдкреАрдХреЗ рдХреЗ рд▓рд┐рдП -20.1 рдХреЗрдмреА
рдирд┐рд╖реНрдХрд░реНрд╖
- рдФрд╕рдд рдПрдкреАрдХреЗ рдХрд╛ рд╡рдЬрди
4.4
рд╕реЗ рдШрдЯрдХрд░ 3.1
рдФрд░ рдиреНрдпреВрдирддрдо - 2.5
рд╕реЗ рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ! - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЛ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рд╕реБрдзрд╛рд░ рд╣реБрдЖред DI рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдм рдЖрд╕рд╛рди рд╣реИ
рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рд╕рднреА рдЕрдиреБрдХреВрд▓рди "рдХрдо рд▓рдЯрдХреЗ рд╣реБрдП рдлрд▓" рд╣реИрдВред рд╡реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИрдВ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрдХреВрд▓рд┐рдд рдПрдкреАрдХреЗ рдХреЗ рд▓рд┐рдП -43% рддрдХ ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдЬрдЧрд╣ рд╕рдм рдХреБрдЫ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдХреЗ рдЖрдкрдХрд╛ рд╕рдордп рдмрдЪрд╛рдпрд╛ред
рдЖрдк рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!