Skip to content

Commit 4681c82

Browse files
authored
Merge pull request #169 from KuzminVik/university_base_android
edit university basic android
2 parents 2775ca4 + 0c3223a commit 4681c82

7 files changed

Lines changed: 116 additions & 113 deletions

File tree

university/1-android-basics/android-intro.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@ sidebar_position: 0
1717
- `ContentProvider`
1818
- Верстка UI используя Compose
1919
- Библиотеки AndroidX и Jetpack от Google
20-
- Kotlin flows, `StateFlow`, `SharedFlow`
20+
- Kotlin flows, `StateFlow`, `SharedFlow`, Kotlin Coroutines
21+
- kotlinx.serialization
2122
- `ViewModel`
2223
- Жизненный цикл `Application`, `Activity`, `ViewModel`
2324
- Библиотека Android Navigation Component от Google
24-
- Библиотека Retrofit от Square
25+
- Библиотека Ktor Client
2526
- Библиотека Koin
27+
- База данных SQLDelight
2628

2729
:::info
2830
Для тех кому всё перечисленное уже знакомо, использовано на практике и есть уверенное понимание о чем речь - можно пропустить ознакомление с теоретическим блоком и сразу перейти к [практической задаче](practice).

university/1-android-basics/app-logic.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@ sidebar_position: 5
2626
- [StateFlow and SharedFlow](https://developer.android.com/kotlin/flow/stateflow-and-sharedflow)
2727
- [Android Basics Compose: 5. ViewModel and State in Compose](https://developer.android.com/codelabs/basic-android-kotlin-compose-viewmodel-and-state) - для закрепления связей жизненного цикла android компонентов и ViewModel, StateFlow. Не пропуская Conclusion и ссылки в нем
2828

29-
## Retrofit
29+
## Network client
3030

31-
Практически все приложения выполняют работу с сетью. Основной способ выполнения сетевых запросов в Android это библиотека [Retrofit](https://square.github.io/retrofit/).
31+
Практически все приложения выполняют работу с сетью. Классический способ выполнения сетевых запросов в Android это библиотека [Retrofit](https://square.github.io/retrofit/).
32+
Альтернативный современный клиент - [Ktor](https://ktor.io/docs/client-create-new-application.html)
3233

33-
CodeLab [Get data from the internet](https://developer.android.com/codelabs/basic-android-kotlin-training-getting-data-internet) даст более детальное представление о библиотеке и как её использовать.
34+
CodeLab [Get data from the internet](https://developer.android.com/codelabs/basic-android-kotlin-training-getting-data-internet) даст более детальное представление о библиотеке Retrofit и как её использовать.
3435

3536
## Coroutines
3637

university/1-android-basics/getting-started.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,20 @@ sidebar_position: 1
44

55
# Первые шаги
66

7-
## Build your first app
7+
## Your first Android app
88

9-
Первые шаги в разработке Android приложений рекомендуем начать с выполнения инструкций на [developer.android.com](https://developer.android.com) в блоке [Build your first app](https://developer.android.com/training/basics/firstapp).
9+
Первые шаги в разработке Android приложений рекомендуем начать с выполнения инструкций на [developer.android.com](https://developer.android.com) в блоке [Your first Android app](https://developer.android.com/courses/android-basics-compose/unit-1).
1010

1111
Блок "Создание вашего первого приложения" научит:
1212
- Как развернуть среду разработки Android приложений `Android Studio`
1313
- Как создать простейший проект
1414
- Как собрать Android приложение и запустить на эмуляторе/устройстве
15-
- Как построить UI используя `ConstraintLayout`
16-
- Как использовать строки локализации из ресурсов
17-
- Как делать переходы между `Activity`
15+
- Как построить простой UI используя `Jetpack Compose`
16+
- Как менять цвет фона и отступы у UI элементов
1817

1918
## App fundamentals
2019

21-
После первого созданного приложения (молодец!) нужно глубже погрузиться в теорию об устройстве Android приложений. В этом нам поможет все та же официальная документация [developer.android.com](https://developer.android.com) - идем читать [App fundamentals](https://developer.android.com/guide/components/fundamentals).
20+
После первого созданного приложения (молодец!) нужно глубже погрузиться в теорию об устройстве Android приложений. В этом нам поможет все та же официальная документация [developer.android.com](https://developer.android.com) - идем читать [App fundamentals](https://developer.android.com/guide/components/fundamentals?hl=ru).
2221

2322
Документация расскажет:
2423
- Что является компонентами Android приложения
@@ -29,7 +28,10 @@ sidebar_position: 1
2928
- Чем полезен `ContentProvider`
3029
- Как запустить каждый из компонентов Android приложения
3130
- Для чего нужен `ContentResolver`
32-
- Состав и предназначение `AndroidManifest.xml`
31+
- Состав и предназначение `AndroidManifest.xml`
32+
- О жизненном цикле компонентов
33+
- Как Android управляет процессами и потоками
34+
- О разрешениях (permissions) и безопасности приложения
3335
- Как управлять требованиями приложения к версии Android
3436
- Что такое ресурсы Android приложения
3537

university/1-android-basics/gradle.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,4 @@ sidebar_position: 3
4545
- Официальная документация Gradle - [docs.gradle.org](https://docs.gradle.org/current/userguide/userguide.html)
4646
- Текущие версии Gradle - [gradle.org](https://gradle.org/releases/)
4747
- Текущие версии Android Gradle Plugin - [developer.android.com](https://developer.android.com/reference/tools/gradle-api)
48-
- Официальная документация Android Gradle Plugin - [developer.android.com](https://developer.android.com/studio/build)
48+
- Официальная документация Android Gradle Plugin - [developer.android.com](https://developer.android.com/build)

university/1-android-basics/kotlin.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ sidebar_position: 2
66

77
## Examples
88

9-
Для знакомства с языком разработки Kotlin воспользуемся разделом [Examples](https://play.kotlinlang.org/byExample) на официальном сайте (группу Kotlin/JS смотреть не нужно).
9+
Для знакомства с языком разработки Kotlin воспользуемся разделом [kotlin-tour](https://kotlinlang.org/docs/kotlin-tour-welcome.html) на официальном сайте.
1010
Данный раздел показывает наглядно, на интерактивных примерах, весь синтаксис языка и наиболее популярные возможности стандартной библиотеки Kotlin.
1111

1212
## Koans
@@ -16,7 +16,7 @@ sidebar_position: 2
1616

1717
## Документация
1818

19-
Официальная документация Kotlin расположена по адресу [kotlinlang.org/docs](https://kotlinlang.org/docs/). К ней стоит обращаться во всех случаях, когда что-то не понятно про язык разработки и его инструментарий.
19+
Официальная документация Kotlin расположена по адресу [kotlinlang.org/docs](https://kotlinlang.org/docs/home.html). К ней стоит обращаться во всех случаях, когда что-то не понятно про язык разработки и его инструментарий.
2020

2121
Сразу знакомиться со всей документацией не стоит (все равно забудется без практики), но нужно прочитать несколько базовых разделов:
2222
- [Basic Syntax](https://kotlinlang.org/docs/basic-syntax.html)
@@ -29,5 +29,5 @@ sidebar_position: 2
2929

3030
## Вспомнить главное
3131

32-
- Официальная документация Kotlin - [kotlinlang.org/docs](https://kotlinlang.org/docs)
32+
- Официальная документация Kotlin - [kotlinlang.org/docs](https://kotlinlang.org/docs/home.html)
3333
- Песочница для выполнения Kotlin кода - [play.kotlinlang.org](http://play.kotlinlang.org/)

university/1-android-basics/practice.md

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -25,50 +25,50 @@ sidebar_position: 6
2525
## Технические требования
2626

2727
1. Реализация на Kotlin
28-
1. Использовать XML Layouts для UI
28+
1. Использовать Jetpack Compose для UI
2929
1. Использовать Kotlin Gradle DSL
30-
1. Использовать Retrofit для работы с REST API
31-
1. Использовать RecyclerView для отображения списка
32-
1. Использовать ConstraintLayout для экрана детальной информации
33-
1. Использовать Android Navigation Component для переходов между экранами
34-
1. Использовать View Binding для связывания верстки с кодом
35-
1. Экраны делать с помощью Fragment (подход Single Activity)
30+
1. Использовать Ktor Client для работы с REST API
31+
1. Использовать LazyColumn для отображения списка
32+
1. Использовать Jetpack Navigation для переходов между экранами
3633
1. Использовать Coroutines для асинхронности и многопоточности
3734
1. Использовать [Kotlinx.Serialization](https://github.com/Kotlin/kotlinx.serialization) для парсинга json
3835
1. Использовать ViewModel для реализации логики экранов
39-
1. Использовать LiveData / StateFlow для обновления данных на UI
40-
1. Использовать Dagger Hilt для внедрения зависимостей
36+
1. Использовать StateFlow для обновления данных на UI
37+
1. Использовать Koin для внедрения зависимостей
4138
1. Сохранять токен авторизации в хранилище устройства - SharedPreferences
4239
1. Корректно обрабатывать ситуации "загрузка данных", "ошибка загрузки", "пустой список"
4340
1. Корректно обрабатывать смену конфигурации
4441
1. При перезапуске приложения авторизация должна сохраняться
4542
1. Использовать локализацию для всех строк, показываемых пользователю
4643
1. Использовать векторную графику везде, где это возможно
47-
1. Обеспечить поддержку Android API 21
44+
1. Обеспечить поддержку Android API 26
4845

49-
## Классы Android-приложения
46+
## Файлы Android-приложения
5047

5148
```kotlin
5249

5350
class MainActivity: AppCompatActivity {
5451
// TODO:
5552
}
5653

57-
class AuthFragment: Fragment {
54+
@Composable
55+
fun AuthScreen() {
5856
// TODO:
5957
}
6058

61-
class RepositoriesListFragment: Fragment {
59+
@Composable
60+
fun RepositoriesListScreen() {
6261
// TODO:
6362
}
6463

65-
class DetailInfoFragment: Fragment {
64+
@Composable
65+
fun DetailInfoScreen() {
6666
// TODO:
6767
}
6868

6969
class AuthViewModel {
70-
val token: MutableLiveData<String>
71-
val state: LiveData<State>
70+
val token: MutableStateFlow<String>
71+
val state: StateFlow<State>
7272
val actions: Flow<Action>
7373

7474
fun onSignButtonPressed() {
@@ -90,7 +90,7 @@ sidebar_position: 6
9090
}
9191

9292
class RepositoryInfoViewModel {
93-
val state: LiveData<State>
93+
val state: StateFlow<State>
9494

9595
sealed interface State {
9696
object Loading : State
@@ -113,7 +113,7 @@ sidebar_position: 6
113113
}
114114

115115
class RepositoriesListViewModel {
116-
val state: LiveData<State>
116+
val state: StateFlow<State>
117117

118118
sealed interface State {
119119
object Loading : State
@@ -158,9 +158,9 @@ sidebar_position: 6
158158
classDiagram
159159
160160
class MainActivity:::android
161-
class AuthFragment:::android
162-
class RepositoriesListFragment:::android
163-
class DetailInfoFragment:::android
161+
fun AuthScreen:::android
162+
fun RepositoriesListScreen:::android
163+
fun DetailInfoScreen:::android
164164
165165
class AuthViewModel:::android
166166
@@ -171,13 +171,13 @@ sidebar_position: 6
171171
class AppRepository:::android
172172
class KeyValueStorage:::android
173173
174-
MainActivity --> AuthFragment
175-
MainActivity --> RepositoriesListFragment
176-
MainActivity --> DetailInfoFragment
174+
MainActivity --> AuthScreen
175+
MainActivity --> RepositoriesListScreen
176+
MainActivity --> DetailInfoScreen
177177
178-
AuthFragment --> AuthViewModel
179-
RepositoriesListFragment --> RepositoriesListViewModel
180-
DetailInfoFragment --> RepositoryInfoViewModel
178+
AuthScreen --> AuthViewModel
179+
RepositoriesListScreen --> RepositoriesListViewModel
180+
DetailInfoScreen --> RepositoryInfoViewModel
181181
182182
RepositoryInfoViewModel --> AppRepository
183183
AuthViewModel --> AppRepository
@@ -192,5 +192,5 @@ sidebar_position: 6
192192
1. [GitHub Basic Authorization](https://docs.github.com/en/rest/overview/other-authentication-methods#basic-authentication)
193193
1. [GitHub user repositories](https://docs.github.com/en/rest/reference/repos#list-repositories-for-a-user)
194194
1. [Kotlinx.Serialization guide](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/basic-serialization.md#json-decoding)
195-
1. [Интеграция Kotlinx.Serialization и Retrofit](https://github.com/JakeWharton/retrofit2-kotlinx-serialization-converter)
195+
1. [Интеграция Kotlinx.Serialization и Ktor](https://ktor.io/docs/client-serialization.html)
196196
1. [Дизайн](https://www.figma.com/file/Mh3ga5XAzyJNCY87NBp01G)

0 commit comments

Comments
 (0)