You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: learning/gradle/build-environment.md
+34-26Lines changed: 34 additions & 26 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,20 +8,21 @@ Gradle предоставляет некоторые механизмы наст
8
8
конкретных проектов.
9
9
10
10
Параметры Gradle можно установить в четырех разных местах:
11
-
- Глобально - глобальные свойства применяются на уровне пользователя или системы. Целью глобальных свойств является применение общих настроек в нескольких проектах Gradle. Например, использование глобально применяемых паролей упрощает обслуживание и устраняет необходимость копирования паролей в несколько областей.
11
+
- Глобально — глобальные свойства применяются на уровне пользователя или системы. Целью глобальных свойств является применение общих настроек в нескольких проектах Gradle. Например, использование глобально применяемых паролей упрощает обслуживание и устраняет необходимость копирования паролей в несколько областей.
12
12
13
-
Такие параметры хранятся в директории `.gradle` папки вашей учетной записи, например на Mac это `~/.gradle/gradle.properties`.
14
-
- В проекте - свойства проекта применяются ко всему проекту Gradle, например, к проекту moko-template.
13
+
Такие параметры хранятся в директории `.gradle` папки вашей учетной записи, например, на Mac это `~/.gradle/gradle.properties`.
14
+
- В проекте — свойства проекта применяются ко всему проекту Gradle, например, к проекту moko-template.
15
15
Используйте свойства на уровне проекта для управления поведением Gradle по всему проекту.
16
16
Например, можно указать необходимые переменные, будет ли кешироваться сборка, ну или включить "отложенную конфигурацию" проекта.
17
17
18
18
Эти параметры хранятся в `gradle.properties` проекта.
19
-
- В module - "модульные" свойства применяются к одному модулю в проекте. Например, вы можете использовать свойства уровня модуля для хранения адресов доступа к api.
19
+
- В модуле — «модульные» свойства применяются к одному модулю в проекте. Например, вы можете использовать свойства уровня модуля для хранения адресов доступа к api.
20
20
21
21
Модульные параметры хранятся в `gradle.properties` конкретного модуля проекта, например, `moko-template/android-app`.
22
-
- В командной строке, например: -Dorg.gradle.java.home, этот флаг указывает директорию используемого jdk. Флаги командной строки имеют приоритет над свойствами и переменными среды.
22
+
- В командной строке, например, `-Dorg.gradle.java.home` — флаг указывает директорию используемого JDK. Флаги командной строки имеют приоритет над свойствами и переменными среды.
23
+
Альтернатива — Gradle Toolchains: в `build.gradle.kts` можно указать `kotlin { jvmToolchain(17) }`, и Gradle сам найдёт подходящий JDK.
23
24
24
-
Файл `gradle.properties` состоит из пар ключ-значение параметров настройки запуска Gradle. Использование `gradle.properties` это альтернатива использованию флагов командной строки для конфигурации проекта.
25
+
Файл `gradle.properties` состоит из пар ключ-значение параметров настройки запуска Gradle. Использование `gradle.properties`— это альтернатива использованию флагов командной строки для конфигурации проекта.
25
26
26
27
:::info
27
28
Также вместо параметров в файле `gradle.properties` вы можете указывать переменные вашего Gradle-окружения.
@@ -32,7 +33,7 @@ Gradle предоставляет некоторые механизмы наст
32
33
Как мы уже выяснили, файл глобальных свойств должен находиться в вашем домашнем каталоге:
33
34
34
35
- В Windows: `C:\Users\<you>\.gradle\gradle.properties`
35
-
- На Mac/Linux: `~\.gradle\gradle.properties`
36
+
- На Mac/Linux: `~/.gradle/gradle.properties`
36
37
37
38
Следующие свойства могут быть использованы для настройки среды сборки Gradle:
38
39
@@ -42,17 +43,16 @@ Gradle предоставляет некоторые механизмы наст
42
43
-***org.gradle.daemon=(true,false)***
43
44
-***org.gradle.daemon.idletimeout=(# of idle millis)***
44
45
45
-
Прочитать об этих параметрах и найти остальные можете [тут](https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties).
46
+
Прочитать об этих параметрах и найти остальные можете [тут](https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties).
46
47
47
-
Параметры, объявленные глобально, будут применены для любого запущенного от текущего пользователя
48
-
Gradle проекта.
48
+
Параметры, объявленные глобально, будут применены для любого запущенного от текущего пользователя Gradle проекта.
49
49
50
50
Рассмотрим пример:
51
51
52
52
```bash
53
-
#~/.gradle/gradle.properties
53
+
# ~/.gradle/gradle.properties
54
54
55
-
# На запуск jvm будет выделено 6 GB памяти
55
+
# На запуск JVM будет выделено 6 GB памяти
56
56
org.gradle.jvmargs=-Xmx6g
57
57
58
58
# максимальное количество "воркеров" делаем равным трем
@@ -69,39 +69,43 @@ org.gradle.workers.max=3
69
69
Например, в нашем [boilerplate-проекте](https://gitlab.icerockdev.com/scl/boilerplate/mobile-moko-boilerplate) используются такие параметры:
70
70
71
71
```bash
72
-
# выделение памяти jvm
72
+
# выделение памяти JVM
73
73
org.gradle.jvmargs=-Xmx4096m
74
-
# параметр отложенной конфигурации
75
-
# это когда градл конфигурирует проект только в тот момент,
76
-
# когда от проекта что-то потребовалось.
77
-
# это должно ускорять работу гредла, но по факту до сих пор слабо поддерживается плагинами
74
+
# параметр отложенной конфигурации (deprecated, вместо него используйте configuration cache)
75
+
# Gradle конфигурирует проект, только когда от него что-то потребовалось
78
76
org.gradle.configureondemand=false
79
77
# параллельное выполнение задач (при возможности)
80
78
org.gradle.parallel=true
81
-
# включение кеширование сборок (для ускорения)
79
+
# включение кэширования сборок (для ускорения)
82
80
org.gradle.caching=true
81
+
# включение configuration cache — даёт наибольший прирост скорости (доступен с Gradle 8.1)
82
+
org.gradle.configuration-cache=true
83
83
84
84
# использовать официальный стандарт кода
85
85
kotlin.code.style=official
86
86
87
87
# плагин Android будет использовать библиотеку AndroidX вместо стандартной библиотеки
88
88
android.useAndroidX=true
89
89
90
-
# отключить предупреждения о том, что технология mpp является экспериментальной
90
+
# формат директорий android source set (version=2 значит src/androidMain/kotlin)
91
+
kotlin.mpp.androidSourceSetLayoutVersion=2
92
+
# отключить предупреждения о нестабильности мультиплатформы (KMP стабилен с 2023 года)
91
93
kotlin.mpp.stability.nowarn=true
92
94
93
-
# отключить предупреждение об использовании ios таргета
95
+
# отключить static framework warning в moko-resources
96
+
moko.resources.disableStaticFrameworkWarning=true
97
+
98
+
# отключить предупреждение об использовании iOS таргета
94
99
# из mobile-multiplatform-gradle-plugin
95
100
mobile.multiplatform.iosTargetWarning=false
96
101
97
102
# указание версии проекта для Android таргета
98
103
# версия iOS таргета меняется в другом месте
99
-
# это единственный кейс версионирования через gradle.properties
100
-
# в проекте
104
+
# это единственный кейс версионирования через gradle.properties в проекте
101
105
VERSION_NAME=0.1.0
102
106
VERSION_CODE=1
103
107
104
-
# переменная, хранящая путь до нашего xcode-проекта
108
+
# переменная, хранящая путь до нашего Xcode-проекта
При настройке этого параметра стоит учитывать количество ОЗУ на вашем устройстве и оставлять пару резервных ГБ. Например, если на устройстве у вас 16 ГБ ОЗУ, то можете спокойно выделять 8 ГБ на работу Java-машины, остальной памяти вам будет достаточно, чтобы комфортно пользоваться устройством во время сборки проекта. Если вы не будете выставлять этот параметр ни в проекте, ни глобально, то Gradle поумолчанию выставит `-Xmx512m`.
149
+
При настройке этого параметра стоит учитывать количество ОЗУ на вашем устройстве и оставлять пару резервных ГБ. Например, если на устройстве у вас 16 ГБ ОЗУ, то можете спокойно выделять 8 ГБ на работу Java-машины – остальной памяти вам будет достаточно, чтобы комфортно пользоваться устройством во время сборки проекта. Если вы не будете выставлять этот параметр ни в проекте, ни глобально, то Gradle по-умолчанию выставит `-Xmx512m`.
146
150
147
151
```bash
148
152
org.gradle.workers.max=3
@@ -157,10 +161,14 @@ org.gradle.workers.max=3
157
161
158
162
## Влияет на скорость сборки
159
163
160
-
Также сильное влияние (помимо персонализированных настроек из предыдущего пункта) на скорость сборки
164
+
Также сильное влияние на скорость сборки (помимо персонализированных настроек из предыдущего пункта)
161
165
оказывают параметры:
162
166
-`org.gradle.parallel=true`
163
167
-`org.gradle.caching=true`
168
+
-`org.gradle.configuration-cache=true` (доступен с Gradle 8.1)
169
+
170
+
Параметр `org.gradle.configureondemand` считается устаревшим (deprecated) — вместо него используйте
171
+
configuration-cache, он даёт гораздо больший прирост скорости.
164
172
165
173
Данные параметры должны быть указаны в проектных настройках, чтобы они применялись у всех разработчиков.
Copy file name to clipboardExpand all lines: learning/gradle/check-yourself.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ sidebar_position: 11
6
6
7
7
## Практические задачи
8
8
9
-
Результатом выполнения следующих задач должен быть репозиторий на https://github.com/
9
+
Результатом выполнения следующих задач должен быть репозиторий на https://github.comили
10
10
https://gitlab.icerockdev.com с 4 ветками (каждое задание в своей ветке).
11
11
12
12
Полное выполнение задач можно посмотреть в видео Gradle с нуля. Более детальная информация в конкретных страницах раздела Gradle (смотрите по названиям).
@@ -25,34 +25,34 @@ https://gitlab.icerockdev.com с 4 ветками (каждое задание
25
25
6. Добавить AuthViewModel и ProfileViewModel (с использованием moko-mvvm) в соответствующие фичи
26
26
7. Сделать в mpp-library фабрику для создания этих вьюмоделей
27
27
8. Вызвать из android-app создание вьюмоделей
28
-
9. Сделать компиляцию mpp-library в ios framework
29
-
10. Сделать ios-app xcode проект
28
+
9. Сделать компиляцию mpp-library в iOS framework
29
+
10. Сделать ios-app Xcode проект
30
30
11. Настроить интеграцию ios-app с mpp-library через cocoapods
31
31
12. Вызвать в ios-app создание вьюмоделей
32
-
13. Сделать gradle task которая выводит все sourceSet’ы проекта (задача должна быть доступна во всех подпроектах)
32
+
13. Сделать gradle task, которая выводит все sourceSet’ы проекта (задача должна быть доступна во всех подпроектах)
33
33
14. Сделать sh скрипт для максимально быстрой проверки компилируемости обоих приложений и мультиплатформы
34
34
15. Сделать sh скрипт для максимально быстрой проверки компилируемости андроид приложения
35
35
16. Сделать sh скрипт для максимально быстрой проверки компилируемости ios приложения
36
36
37
37
### Задача N2
38
38
39
39
1. Взять проект-результат задачи N1
40
-
2. Вынести зависимости (моко мввм и другие подключенные, если есть) в Deps объект внутри buildSrc
41
-
3.Тамже завести Modules объект с указанием путей до всех модулей
42
-
4. Подключить новые константы вместо хардкод-строк и убедиться что все работает
40
+
2. Вынести зависимости (moko-mvvm и другие подключенные, если есть) в Deps объект внутри buildSrc
41
+
3.Там же завести Modules объект с указанием путей до всех модулей
42
+
4. Подключить новые константы вместо хардкод-строк и убедиться, что все работает
43
43
44
44
### Задача N3
45
45
46
46
1. Взять проект-результат задачи N1
47
47
2. Выделить повторяющуюся между подпроектами логику в convention плагины внутри composite build’а (не buildSrc)
48
-
3. Подключить convention плагины и убедиться что все работает
48
+
3. Подключить convention плагины и убедиться, что все работает
49
49
50
50
### Задача N4
51
51
52
52
1. Взять проект-результат задачи N1
53
53
2. Вынести зависимости в version catalog, а подпроекты связать через projects accessors
54
-
3. Подключить вместо хардкод строк новые константы и убедиться что все работает
54
+
3. Подключить вместо хардкод строк новые константы и убедиться, что все работает
0 commit comments