Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 7 additions & 9 deletions learning/gradle/intro-gradle.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Kotlin, а изучение билд системы Gradle, которая со
## Gradle

[Gradle](https://gradle.org/) это система сборки, имеющая гибкую систему конфигурации через плагины
и позволяющая описывать конфигурацию сборки в виде groovy / kotlin файлов.
и позволяющая описывать конфигурацию сборки в виде kotlin файлов.

Задача Gradle, как и любой системы сборки, скомпилировать исходный код в исполняемое приложение,
либо подключаемую библиотеку. Благодаря ему разработчику не требуется писать команды вызова
Expand Down Expand Up @@ -41,23 +41,21 @@ Gradle имеет обширную, подробную документацию,
## Контекст для понимания дальнейших разделов

1. Gradle при каждом запуске проходит по нескольким фазам - инициализация, конфигурация, выполнение.
2. Файлы gradle могут быть написаны как на groovy (тогда расширение просто `.gradle`, так и на
Kotlin Script `.gradle.kts`). При использовании Kotlin Script IDE предоставляет полноценный
анализ с подсказками, поэтому мы используем только Kotlin Script вариант.
2. Файлы gradle во всех новых проектах написаны на Kotlin Script, расширение файла `.gradle.kts`. При использовании Kotlin Script IDE предоставляет полноценный анализ с подсказками. На старых проектах могут встретиться файлы gradle на groovy (тогда расширение просто `.gradle`).

## Составляющие конфигурации проекта

Проект, использующий Gradle в качестве системы сборки, содержит:

1. `settings.gradle` / `settings.gradle.kts` - настройки проекта, например подключение модулей
1. `settings.gradle.kts` - настройки проекта, например подключение модулей
проекта;
2. `build.gradle` / `build.gradle.kts` - конфигурация конкретного gradle модуля;
2. `build.gradle.kts` - конфигурация конкретного gradle модуля;
3. `gradle.properties` - файл содержащий набор ключ+значение передаваемыми в gradle.

### settings.gradle

Файл с настройками всего проекта (данные настройки влияют на все модули).
Может быть написан на groovy (тогда имя `settings.gradle`) либо на kotlin - `settings.gradle.kts`.
Во всех новых проектах на kotlin - `settings.gradle.kts`, в старых может быть написан на groovy (тогда имя `settings.gradle`).
Подробная информация
в [документации](https://docs.gradle.org/current/userguide/build_lifecycle.html#sec:settings_file)
.
Expand Down Expand Up @@ -100,15 +98,15 @@ include(":sample:mpp-library")
_Является упрощенным вариантом
с [moko-network](https://github.com/icerockdev/moko-network/blob/master/settings.gradle.kts)_.

(!) Основной сценарий когда iOS разработчику нужно работать с файлом `settings.gradle` - разработчик
(!) Основной сценарий когда iOS разработчику нужно работать с файлом `settings.gradle.kts` - разработчик
сам создает новый gradle модуль и нужно подключить его к билдсистеме. То есть
добавляет `include(":mymodule")`.

### build.gradle

Файл с конфигурацией модуля gradle проекта. Определяет всю логику сборки данного модуля (что
собираем, как собираем).
Может быть написан на groovy (тогда имя `build.gradle`) либо на kotlin - `build.gradle.kts`.
В новых проектах на kotlin - `build.gradle.kts`, в старых может быть написан на groovy (тогда имя `build.gradle`).
Подробная информация
в [документации](https://docs.gradle.org/current/userguide/tutorial_using_tasks.html).

Expand Down
15 changes: 10 additions & 5 deletions onboarding/gradle.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,20 @@ sidebar_position: 4
Для iOS разработчиков данная система сборки в принципе в новинку, а для Android разработчиков будет много нового,
что не используется в обычных android проектах (как минимум Kotlin Multiplatform gradle plugin). А также на наших проектах используются современные возможности Gradle, такие как [Composite Build](../learning/gradle/composite-build) и [Version Catalog](../learning/gradle/version-catalogs).

Поэтому, для осознанной работы с Gradle на проектах, ознакомься с материалами в нашей базе знаний - весь блок Gradle:
Поэтому, для осознанной работы с Gradle на проектах, ознакомься с материалами в нашей базе знаний. После ознакомления закрепи полученные знания на [практической задаче](../learning/gradle/check-yourself)

### Нужно изучить сейчас
- [Введение в Gradle](../learning/gradle/intro-gradle)
- [Gradle с нуля](../learning/gradle/from-scratch)
- [Build Environment](../learning/gradle/build-environment)
- [Gradle Wrapper](../learning/gradle/gradle-wrapper)
- [Dependency configurations](../learning/gradle/configuration)
- [Обновление версий](../learning/gradle/updating-versions)
- [Composite builds](../learning/gradle/composite-build)
- [Convention plugins](../learning/gradle/convention-plugins)
- [Version catalogs](../learning/gradle/version-catalogs)
- [Convention plugins](../learning/gradle/convention-plugins)

И закрепи полученные знания на [практической задаче](../learning/gradle/check-yourself)
### Материал со Звездочкой
- [Dependency configurations](../learning/gradle/configuration) - очень хорошо бы понять, но если сходу не получается, вернись к нему позже.

### Может потребоваться в будущем
- [Composite builds](../learning/gradle/composite-build)
- [BuildSrc](../learning/gradle/buildSrc) - давно не используем, но может встретиться на старых проектах.
9 changes: 5 additions & 4 deletions university/1-android-basics/gradle.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,22 @@ sidebar_position: 3

Следующее видео расскажет о том что такое система сборки, зачем она нужна и что предоставляет Gradle (местами есть уход в излишнее на данный момент детали, поэтому не страшно если что-то из видео будет не совсем понятно сразу).

<iframe src="//www.youtube.com/embed/WOBok2u-SL8" frameborder="0" allowfullscreen width="675" height="380"></iframe>
<iframe src="//www.youtube.com/embed/23BJW4w0gkY?list=PL6yFiPOVXVUi90sQ66dtmuXP-1-TeHwl5" frameborder="0" allowfullscreen width="675" height="380"></iframe>
<br/>
<br/>

## Gradle и Kotlin DSL
## Может потребоваться в будущем
### Gradle и Kotlin DSL

В следующем видео можно увидеть как происходит перевод groovy скриптов на kotlin для большей помощи IDE в написании билд скриптов.
В настоящее время проекты создаются сразу с Kotlin, но на старых проектах можно встретиться с groovy скриптами. В следующем видео можно увидеть, как происходит перевод groovy скриптов на kotlin для большей помощи IDE в написании билд скриптов.

<iframe src="//www.youtube.com/embed/bhUy6JrSSr8" frameborder="0" allowfullscreen width="675" height="380"></iframe>
<br/>
<br/>

При возникновении сложностей на практике - пользуйтесь [документацией Gradle о поддержке Kotlin DSL](https://docs.gradle.org/current/userguide/kotlin_dsl.html).

## Gradle детальнее
### Gradle детальнее

<iframe src="//www.youtube.com/embed/Yft6h7JkWo0" frameborder="0" allowfullscreen width="675" height="380"></iframe>
<br/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ Kotlin Serialization - это библиотека, предназначенна

После изучения, для закрепления материала, советуем пройти [кодлабу](https://www.raywenderlich.com/26883403-android-data-serialization-tutorial-with-the-kotlin-serialization-library).
Вы узнаете о возможностях библиотеки и потренируетесь на практике.
Как довести starter project кодлабы до рабочего состояния:
1. В Gradle build поднять Java, jvm -> 17, в Gradle wrapper версию -> 7.2
2. Сделать Upgrade AGP, рекомендуемый Android Studio (7.0.2-> 7.5)
3. Поднять Compile SDK -> 31
4. В Манифесте внести исправления: 1) android:exported="true" под tag <activity, 2) package="com.raywenderlich.android.borednomore" под tag <manifest следующей строкой под xmlns:tools=…

## Вопросы для самопроверки
- Для чего нужны аннотации `@Serializable`, `@Transient`, `@Required`, `@SerialName`?
Expand Down
4 changes: 2 additions & 2 deletions university/3-kotlin-multiplatform-mobile/practice.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ sidebar_position: 6
1. Использовать multiplatform-settings для работы с хранилищем устройства
1. Логика хранения данных должна находиться в common коде
1. Логика работы с сетью должна находиться в common коде
1. Для работы с сетью использовать Ktor Client 1.6.8
1. Для работы с сетью использовать Ktor Client
1. При перезапуске приложения авторизация должна сохраняться
1. Использовать локализацию для всех строк, показываемых пользователю
1. Использовать векторную графику везде, где это возможно
Expand Down Expand Up @@ -220,4 +220,4 @@ class AuthViewController: UIViewController {
1. [Настройке запросов в Ktor Client](https://ktor.io/docs/old/request.html)
1. [multiplatform-settings](https://github.com/russhwolf/multiplatform-settings)
1. [Android Дизайн](https://www.figma.com/file/Mh3ga5XAzyJNCY87NBp01G/Git_test)
1. [iOS Дизайн](https://www.figma.com/file/XmpoCqkdWTGb2NGdR2bgiQ/Git_test-iOS)
1. [iOS Дизайн](https://www.figma.com/file/XmpoCqkdWTGb2NGdR2bgiQ/Git_test-iOS)