Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Ρ Π½ΡΠ»Ρ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: Π΄Π»Ρ Android. Π£ΡΡΡΠΎΠΉΡΡΠ²Π° Π΄Π»Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΡΠΌΠ°ΡΡΡΠΎΠ½Ρ. > Alexey: ΡΡΠ» ΡΠ΅ΠΊΡΡ ΠΡΠΎΠ΅ΠΊΡΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ° ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌΡ Π·Π°Π½ΡΡΠΈΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ Π·Π°Π½ΡΡΠΈΡ ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ RuStore β ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΎΡΡΠΈΠΉΡΠΊΠΈΠΉ ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Android. ΠΠ΅ΡΠ°-Π²Π΅ΡΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ° Π·Π°ΠΏΡΡΠ΅Π½Π° 25 ΠΌΠ°Ρ 2022 Π³ΠΎΠ΄Π°. ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π±ΡΠ»ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 150 ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΡΠ°ΠΌΠΊΠ°Ρ
ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ MVP-Π²Π΅ΡΡΠΈΡ RuStore Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π½ΠΈΠΆΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΊΡΠ°Π½Ρ. ΠΠ½Π±ΠΎΡΠ΄ΠΈΠ½Π³ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅, ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ: Π»ΠΎΠ³ΠΎΡΠΈΠΏ RuStore ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° Π½Π° Π²ΠΈΡΡΠΈΠ½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΠΈΡΡΠΈΠ½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ: ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π³Π΄Π΅ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΈΠΊΠΎΠ½ΠΊΠ°, Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ: Β«Π€ΠΈΠ½Π°Π½ΡΡΒ», Β«ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΒ», Β«ΠΠ³ΡΡΒ», Β«ΠΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠ΅Β», Β«Π’ΡΠ°Π½ΡΠΏΠΎΡΡΒ»), ΠΏΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΠΊΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΡΡΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° ΠΊ ΡΠΏΠΈΡΠΊΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ. ΠΠ°Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ ΠΏΡΡΠΌΠΎ Π² Android-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π±ΡΠ°ΡΡΡΡ ΠΈΠ· API (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅). ΠΠ°ΡΡΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ: ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠ°Π·Π°Π΄Β», Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠΊΡΠ°Π½ ΠΈΠΊΠΎΠ½ΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Π²ΠΎΠ·ΡΠ°ΡΡΠ½ΠΎΠΉ ΡΠ΅ΠΉΡΠΈΠ½Π³ (0+, 6+, 8+, 12+, 16+, 18+) ΠΊΠ½ΠΎΠΏΠΊΡ Β«Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΒ» (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ°, ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ PackageInstaller) Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΊΡΠΈΠ½ΡΠΎΡΠΎΠ² β ΠΏΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠΊΡΡΠ²Π°ΡΡΡΡ ΡΠΊΡΠ°Π½ ΠΏΠΎΠ»Π½ΠΎΡΠΊΡΠ°Π½Π½ΡΡ
ΡΠΊΡΠΈΠ½ΡΠΎΡΠΎΠ² ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ 1. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΠΠΊΡΠ°Π½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ: Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Π½Π΅ΠΉ β ΠΏΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΠΊΡΡΡΡΡΡ Π²ΠΈΡΡΠΈΠ½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ 2. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΊΡΠ°Π½ ΠΏΠΎΠ»Π½ΠΎΡΠΊΡΠ°Π½Π½ΡΡ
ΡΠΊΡΠΈΠ½ΡΠΎΡΠΎΠ² ΠΡΠΊΡΡΡΠΈΠ΅ ΡΠΊΡΠ°Π½Π° ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡ ΠΈΠ· ΠΊΠ°ΡΡΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠΈΡΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠΊΡΡΡΡΡΡ ΡΠΎΡ ΡΠΊΡΠΈΠ½ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΊΠ»ΠΈΠΊΠ½ΡΡ. ΠΠΊΡΠ°Π½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ: ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠ°Π·Π°Π΄Β», Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π² ΠΊΠ°ΡΡΠΎΡΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΊΡΠΈΠ½ΡΠΎΡΠΎΠ² 3. ΠΠΎΠ΄Π½ΡΡΡ Π±ΡΠΊΠ΅Π½Π΄ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· API Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°. 4. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΊΠ°ΡΡΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Β«Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΒ». ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ PackageInstaller. ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ: Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΎΠ»ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ (ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ, Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ, Π±ΡΠΊΠ΅Π½Π΄Π΅Ρ, Android-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ) Π‘Π²Π΅ΡΡΡΠ°ΡΡ ΠΌΠ°ΠΊΠ΅ΡΡ ΠΏΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ (Π²Π΄ΠΎΡ
Π½ΠΎΠ²Π»ΡΡΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ RuStore Π½Π΅ Π²ΠΎΠ·Π±ΡΠ°Π½ΡΠ΅ΡΡΡ) Π‘ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠ»Π°Π½ ΡΠ°Π±ΠΎΡ ΠΠ»Ρ Android ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Jetpack Compose, Jetpack ViewModel, Jetpack Navigation, Retrofit Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΡΠΊΡ Π²ΡΠ΅Ρ
ΡΠΊΡΠ°Π½ΠΎΠ² Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΡΠ°Π½Π°ΠΌΠΈ Π‘Π²Π΅ΡΠΈΡΡ Π²ΡΡΡΡΠΊΡ Ρ ΠΌΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ, ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ°ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ°ΡΠΈΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π° API ΠΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ΅ΡΡΡ (HTTP 500, Π½Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°) ΠΡΠΎΠ²Π΅ΡΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ API ΠΠ·ΡΡΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ PackageInstaller Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΡΡΡΠ»ΠΊΠ° Π½Π° APK Π² ΠΎΡΠ²Π΅ΡΠ΅ API) ΠΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° UI ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°: https://developer.android.com/codelabs/jetpack-compose-basics#0 β ΡΡΡΠΎΡΠΈΠ°Π» ΠΏΠΎ Jetpack Compose https://developer.android.com/guide/navigation β Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Jetpack Navigation https://developer.android.com/topic/libraries/architecture/viewmodel β Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Jetpack ViewModel https://square.github.io/retrofit/ β Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Retrofit https://developer.android.com/reference/android/content/pm/PackageInstaller β Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ PackageInstaller ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°: ΠΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ, Π·Π°Π΄Π°ΠΉΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠΎΠ»ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΠ·ΡΡΠΈΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π‘ΡΠΎΡΠΌΠΈΡΡΠΉΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π‘ΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΌΠ°ΠΊΠ΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅, ΠΏΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡΡΡ Π·Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΡΠΎΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π° GitHub Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΠΎΠΆΠ΄ΠΈΡΠ΅ΡΡ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΡΠΎΠ³ΠΎΠ² > Alexey: ΠΠ°ΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: Π£ΠΌΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ API ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Kotlin ΠΠ°Π²ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Android API ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ Π²ΡΡΡΡΠΊΠΈ ΠΠ°ΠΊΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Ρ
ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ: ΠΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π΅ Android-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠ΅ΠΌΡ ΡΠΊΡΠ°Π½Π°ΠΌΠΈ. ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π΅ΡΡ Π΄Π²Π° ΡΠΊΡΠ°Π½Π°, Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π³ΡΡΠ·ΠΈΡΡΡΡ Ρ Π²Π°ΡΠ΅Π³ΠΎ API, Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ Π²ΡΠ±ΠΎΡΠ° Π»ΡΡΡΠΈΡ
ΡΠ°Π±ΠΎΡ (Π΄Π»Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ): ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ
Π·Π°Π΄Π°Ρ Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌ Π·Π°Π΄Π°ΡΠ°ΠΌ Π Π°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ (ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π±Π°Π³ΠΎΠ², ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΎ ΡΠ±ΠΎΡΠΊΠΎΠΉ) Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π° Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ
ΠΎΡΠΎΡΠΈΠΌ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΠΌ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° (ΠΏΡ. SOLID) ΠΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ ΡΡΠ΅ΠΊΠ° ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π ΠΊΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ: Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ GitHub: ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π½Π° Π»ΡΠ±ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π² README ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΠΈΠ΄Π΅ΠΎ Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ. Π‘ΡΡΠΎΠ³ΠΈΡ
ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π½Π΅Ρ, Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΠ±Ρ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ, ΡΡΠΎ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π² ΡΠ½ΠΈΠ²Π΅ΡΠ΅.