Skip to content

Commit 2aab1b2

Browse files
authored
Merge pull request #77 from Alex009/docusaurus
IceRock University #1 - android basics
2 parents e14e2ac + 5f1f787 commit 2aab1b2

File tree

10 files changed

+481
-3
lines changed

10 files changed

+481
-3
lines changed

docusaurus.config.js

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
module.exports = {
33
title: 'Kotlin Multiplatform Mobile',
44
tagline: 'by IceRock Development',
5-
url: 'https://kmm.icerock.dev',
6-
baseUrl: '/',
5+
url: 'https://alex009.github.io',
6+
baseUrl: '/kmm.icerock.dev/',
77
onBrokenLinks: 'throw',
88
onBrokenMarkdownLinks: 'warn',
99
favicon: 'img/favicon.ico',
10-
organizationName: 'icerockdev', // Usually your GitHub org/user name.
10+
organizationName: 'alex009', // Usually your GitHub org/user name.
1111
projectName: 'kmm.icerock.dev', // Usually your repo name.
1212
// i18n: {
1313
// defaultLocale: 'ru',
@@ -38,6 +38,13 @@ module.exports = {
3838
label: 'Onboarding',
3939
docsPluginId: 'onboarding',
4040
},
41+
{
42+
type: 'doc',
43+
docId: 'intro',
44+
position: 'left',
45+
label: 'University',
46+
docsPluginId: 'university',
47+
},
4148
// {
4249
// type: 'localeDropdown',
4350
// position: 'right',
@@ -185,6 +192,17 @@ module.exports = {
185192
editUrl: 'https://github.com/icerockdev/kmm.icerock.dev/tree/docusaurus/',
186193
remarkPlugins: [require('mdx-mermaid')],
187194
},
195+
],
196+
[
197+
'@docusaurus/plugin-content-docs',
198+
{
199+
id: 'university',
200+
path: 'university',
201+
routeBasePath: 'university',
202+
sidebarPath: require.resolve('./sidebars.js'),
203+
editUrl: 'https://github.com/icerockdev/kmm.icerock.dev/tree/docusaurus/',
204+
remarkPlugins: [require('mdx-mermaid')],
205+
},
188206
]
189207
],
190208
};

university/0-intro.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
sidebar_position: 0
3+
---
4+
5+
# IceRock KMM University
6+
7+
## О курсе
8+
9+
Внутренний университет IceRock проводит обучение начинающих специалистов, желающих освоить разработку под мобильные платформы - Android и iOS, с применением технологии Kotlin Multiplatform Mobile.
10+
11+
Материалы курса доступны публично и его можно проходить самостоятельно, однако для студентов университета компании есть следующие преимущества:
12+
13+
1. Постоянная обратная связь - выполненные практические задачи проверяются и дается развернутая обратная связь
14+
1. Консультации с сотрудниками IceRock - студенты курса являются полноценными сотрудниками компании и имеют доступ ко всем каналам коммуникации, что позволяет получать ценный опыт от сотрудников (в офисе, в Slack или на тематических собраниях)
15+
1. Трудоустройство с первого дня обучения - вы сможете посвятить все свое время учебе, не волнуясь о финансовом вопросе
16+
17+
Важная особенность курса - **нет разделения на Android и iOS разработчиков**. Студенты курса выполняют задачи как на Android так и на iOS (без глубокого погружения в специфику конкретной платформы, особенно в UI) - это позволяет лучше понять в чем платформы похожи, а в чем различаются. Изучение обеих платформ позволяет делать общий код наиболее оптимальным образом, учитывающим особенности и Android и iOS.
18+
19+
После завершения обучения и успешного выполнения выпускного задания студент может выбрать какая платформа будет для него в приоритете и переходит в одну из производственных команд в роли iOS + KMM / Android + KMM разработчика. Уже в производственной команде бывший студент изучит более глубоко выбранную платформу, но уже будет иметь базу по обеим.
20+
21+
## Структура
22+
23+
1. Основы разработки Android приложений
24+
1. Основы разработки iOS приложений
25+
1. Основы разработки Kotlin Multiplatform Mobile
26+
1. Основы мобильной разработки в IceRock
27+
1. Реализация форм ввода данных
28+
1. Передача данных по сети
29+
1. Хранение данных
30+
1. Runtime permissions
31+
1. Push notifications
32+
33+
## Выпускная работа
34+
35+
В завершении прохождения курса выполняется выпускная работа - студент самостоятельно реализует мобильное приложение, с использованием KMM и изученных подходов, в реальных производственных процессах компании.
36+
Проект, который потребуется выполнить, может быть как синтетический, так и реальный (если в нужный момент времени окажется доступен к выполнению реальный проект, а студент будет способен его выполнить).
37+
38+
## Длительность
39+
40+
Все тематические блоки курса потребуют ориентировочно 2 месяца, без учета выпускной работы. Объем выпускной работы оценивается в 2 недели.
41+
42+
## График
43+
44+
Обучение происходит в рабочие часы. Рабочий график - пн-пт с 10 до 19.
45+
46+
## Формат коммуникации
47+
48+
Студенты из Новосибирска первые 2 недели проводят обучение строго в офисе, для быстрой и эффективной коммуникации с наставником.
49+
50+
После первых двух недель можно перейти на удаленную работу, с общением через Slack и Google Meet.
51+
52+
Обратная связь по практическим задачам дается в формате:
53+
54+
1. Комментарии по Code Review в GitLab
55+
1. Документ с списком найденных багов по тестированию приложения
56+
1. Созвон/личная встреча для совместного обсуждения
57+
58+
## Хочу учиться
59+
60+
Заинтересованные в такого рода обучении могут присылать свое резюме на почту training@icerockdev.com, с темой "Обучение в IceRock University".
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"position": 1,
3+
"label": "Основы разработки Android приложений"
4+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
sidebar_position: 0
3+
---
4+
5+
# Основы Android
6+
7+
Для изучения мобильной разработки с использованием Kotlin Multiplatform Mobile важно изучить основы Android разработки - эти знания и опыт помогут писать общий код для Android и iOS с учетом особенностей обеих платформ.
8+
9+
В основы разработки Android приложений мы включаем:
10+
11+
- Систему сборки - Gradle
12+
- Язык программирования - Kotlin
13+
- Базовые компоненты Android приложения
14+
- `Activity`
15+
- `Service`
16+
- `BroadcastReceiver`
17+
- `ContentProvider`
18+
- `Fragment`
19+
- Верстка UI используя xml layout
20+
- Библиотеки AndroidX и Jetpack от Google
21+
- `RecyclerView`
22+
- `LiveData`
23+
- `ViewModel`
24+
- Жизненный цикл `Application`, `Activity`, `Fragment`, `ViewModel`
25+
- `ViewBinding`
26+
- Библиотека Android Navigation Component от Google
27+
- Библиотека Retrofit от Square
28+
- Библиотека Hilt от Google
29+
30+
:::info
31+
Для тех кому всё перечисленное уже знакомо, использовано на практике и есть уверенное понимание о чем речь - можно пропустить ознакомление с теоретическим блоком и сразу перейти к [практической задаче](practice).
32+
:::
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
sidebar_position: 5
3+
---
4+
5+
# Логика приложения
6+
7+
Помимо пользовательского интерфейса любое мобильное приложение содержит логику работы (еще называют бизнес логикой), например:
8+
9+
- Обращения к серверу для получения данных
10+
- Локальное хранение данных
11+
- Валидация форм ввода
12+
- Обращение к системным API для интеграции - получение фото, видео и подобное
13+
- Алгоритмы расчитывающие некие данные на основе ввода пользователя
14+
- ...
15+
16+
Логику приложения принято отделять от пользовательского интерфейса, чтобы была понятная зона ответственности каждого блока кода. Для разделения логики и UI требуется решение для их взаимодействия, ведь совсем независимо они не могут быть.
17+
18+
Ознакомимся с современными подходами построения логики приложений по [материалам Google](https://developer.android.com/courses/pathways/android-architecture). Обязательно в конце проверь себя пройдя небольшой тест.
19+
20+
## ViewModel
21+
22+
Ознакомиться детальнее с ViewModel и LiveData помогут следующие кодлабы:
23+
24+
- [Android Kotlin Fundamentals: 5.1 ViewModel](https://developer.android.com/codelabs/kotlin-android-training-view-model) - не пропуская Summary и тест в Homework
25+
- [Android Kotlin Fundamentals: LiveData and LiveData observers](https://developer.android.com/codelabs/kotlin-android-training-live-data) - не пропуская Summary и тест в Homework
26+
- [Incorporate Lifecycle-Aware Components](https://developer.android.com/codelabs/android-lifecycles) - для закрепления связей жизненного цикла android компонентов и ViewModel, LiveData
27+
28+
## Retrofit
29+
30+
Практически все приложения выполняют работу с сетью. Основной способ выполнения сетевых запросов в Android это библиотека [Retrofit](https://square.github.io/retrofit/).
31+
32+
CodeLab [Get data from the internet](https://developer.android.com/codelabs/basic-android-kotlin-training-getting-data-internet) даст более детальное представление о библиотеке и как её использовать.
33+
34+
## Coroutines
35+
36+
В CodeLab [Get data from the internet](https://developer.android.com/codelabs/basic-android-kotlin-training-getting-data-internet) для выполнения асинхронной задачи (обращения к серверу) использовались [kotlinx.coroutines](https://github.com/Kotlin/kotlinx.coroutines). Это популярная библиотека для выполнения асинхронных и многопоточных задач.
37+
38+
Ознакомимся с библиотекой детальнее используя Hands On [Introduction to Coroutines and Channels](https://play.kotlinlang.org/hands-on/Introduction%20to%20Coroutines%20and%20Channels/).
39+
40+
В дальнейшем (вне текущего курса) для изучения coroutines используй подборку материалов из [раздела Learning](../../learning/libraries/kotlinx/coroutines).
41+
42+
## Dependency Injection
43+
44+
Разные классы приложения должны между собой связываться. Чтобы связанность классов не стала слишком жесткой, что усложнит поддержку кода, используют паттерн Dependency Injection.
45+
46+
Подробнее позволит разобраться статья [Dependency Injection](https://developer.android.com/training/dependency-injection) и CodeLab [Using Hilt in your Android app](https://developer.android.com/codelabs/android-hilt).
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
---
2+
sidebar_position: 1
3+
---
4+
5+
# Первые шаги
6+
7+
## Build your first app
8+
9+
Первые шаги в разработке Android приложений рекомендуем начать с выполнения инструкций на [developer.android.com](https://developer.android.com) в блоке [Build your first app](https://developer.android.com/training/basics/firstapp).
10+
11+
Блок "Создание вашего первого приложения" научит:
12+
- Как развернуть среду разработки Android приложений `Android Studio`
13+
- Как создать простейший проект
14+
- Как собрать Android приложение и запустить на эмуляторе/устройстве
15+
- Как построить UI используя `ConstraintLayout`
16+
- Как использовать строки локализации из ресурсов
17+
- Как делать переходы между `Activity`
18+
19+
## App fundamentals
20+
21+
После первого созданного приложения (молодец!) нужно глубже погрузиться в теорию об устройстве Android приложений. В этом нам поможет все та же официальная документация [developer.android.com](https://developer.android.com) - идем читать [App fundamentals](https://developer.android.com/guide/components/fundamentals).
22+
23+
Документация расскажет:
24+
- Что является компонентами Android приложения
25+
- За что отвечает `Activity`
26+
- Что такое `Service`
27+
- Какие типы `Service` нам доступны и для чего
28+
- Какие задачи решает `BroadcastReceiver`
29+
- Чем полезен `ContentProvider`
30+
- Как запустить каждый из компонентов Android приложения
31+
- Для чего нужен `ContentResolver`
32+
- Состав и предназначение `AndroidManifest.xml`
33+
- Как управлять требованиями приложения к версии Android
34+
- Что такое ресурсы Android приложения
35+
36+
## App resources
37+
38+
Следующий важный блок Android разработки - работа с ресурсами приложения. Документация также есть, но начнем в этот раз с видео от сообщества - так будет проще понять.
39+
40+
<iframe src="//www.youtube.com/embed/ZKevy76vKcY" frameborder="0" allowfullscreen width="675" height="380"></iframe>
41+
<br/>
42+
<br/>
43+
44+
После просмотра видео можно перейти к документации, но только в раздел [Handle configuration changes](https://developer.android.com/guide/topics/resources/runtime-changes), в котором описана одна из важнейших особенностей Android, которая влияет на разрабокту общего кода - изменение конфигурации и автоматическое пересоздание UI компонентов системой.
45+
46+
Раздел документации [App resources](https://developer.android.com/guide/topics/resources/providing-resources) содержит очень детальное и развернутое описание как работать с ресурсами, каких типов они бывают и для чего нужен каждый из них. Об этом стоит прочитать *в будущем*, на данный момент лучше пропустить.
47+
48+
В результате мы должны узнать:
49+
- Что такое изменение конфигурации, в каких случаях происходит и к чему приводит
50+
- Какие типы ресурсов есть в android приложении
51+
- Как реализуется локализация строк и изображений под разные языки
52+
- Как добавлять векторные и растровые изображения в приложение
53+
- Как сделать разную UI верстку для разных экранов
54+
- Что такое dp и ***dpi
55+
- Что такое `qualifier`
56+
- Что такое `R` класс и как его использовать
57+
58+
## Android Manifest
59+
60+
Файл `AndroidManifest.xml` важный и главный источник информации о приложении для Android OS. Пора ознакомиться с его кратким описанием - [App Manifest Overview](https://developer.android.com/guide/topics/manifest/manifest-intro), а к детальному описанию каждого аттрибута можно будет обратиться тогда, когда он попадется на практике.
61+
62+
Про манифест нужно понять:
63+
- Зачем нужен `AndroidManifest.xml`
64+
- Структура файла
65+
- Обязательные атрибуты
66+
- Как добавлять `Activity`/`Service`/`ContentProvider`/`BroadcastReceiver`
67+
- Как объявлять требуемые приложению разрешения
68+
69+
## Немного практики
70+
71+
В приложении созданном на шаге [Build your first app](#build-your-first-app) нужно:
72+
1. Создать новую `Activity` - `RotatingActivity`
73+
1. На UI `RotatingActivity` расположить 2 надписи с текстом "первая" и "вторая"
74+
1. Сделать переход на эту активити с отдельной иконки на рабочем столе (чтобы стало 2 иконки на рабочем столе)
75+
1. Сделать разную верстку для портретного и ландшафтного режима - в портретном надписи должны быть "первая" сверху и "вторая" снизу, а в ландшафтном - слева и справа соответственно
76+
1. Сделать локализацию строк с переводом на английский
77+
1. Добавить векторное изображение и вывести его на любом экране
78+
79+
## Вспомнить главное
80+
81+
- Официальная документация Android - [developer.android.com](https://developer.android.com)

0 commit comments

Comments
 (0)