Поиск…


Профилирование сборки

Прежде чем приступить к настройке сборки Gradle для производительности, вы должны установить базовый уровень и выяснить, какие части сборки занимают больше всего времени. Для этого вы можете профилировать свою сборку , добавив аргумент --profile в команду Gradle:

gradle --profile
./gradlew --profile

После завершения сборки вы увидите отчет профиля HTML для сборки в ./build/reports/profile/ , выглядя примерно так:

Пример отчета в формате HTML

Нажав на вкладки рядом с « Сводкой» , вы увидите более подробную разбивку времени, в которое было потрачено время.

Настройка по требованию

Если профилирование вашей сборки показывает значительные затраты времени на настройку проектов , опция «Настройка по требованию» может повысить вашу производительность.

Вы можете включить режим Configure on Demand, $GRADLE_USER_HOME/.gradle/gradle.properties ( ~/.gradle/gradle.properties по умолчанию) и установив org.gradle.configureondemand .

org.gradle.configureondemand=true

Чтобы включить его только для конкретного проекта, отредактируйте файл gradle.properties этого проекта.

Если параметр «Настроить по требованию» включен, вместо того, чтобы настраивать все проекты спереди, Gradle будет настраивать только проекты, которые необходимы для выполняемой задачи.

Из руководства Gralde :

Режим конфигурации по требованию пытается сконфигурировать только проекты, которые имеют отношение к запрошенным задачам, т. build.gradle Он выполняет build.gradle файл build.gradle проектов, участвующих в сборке. Таким образом, время конфигурации большой многопроектной сборки может быть уменьшено. В долгосрочной перспективе этот режим станет режимом по умолчанию, возможно единственным режимом для выполнения сборки Gradle.

Настройка параметров использования памяти JVM для Gradle

Вы можете установить или увеличить пределы использования памяти (или другие аргументы JVM), используемые для построения Gradle и Gradle Daemon, путем редактирования $GRADLE_USER_HOME/.gradle/gradle.properties ( ~/.gradle/gradle.properties по умолчанию) и установки org.gradle.jvmargs .

Чтобы настроить эти ограничения только для конкретного проекта, отредактируйте файл gradle.properties этого проекта.

Параметры использования памяти по умолчанию для Gradle builds и Gradle Daemon:

org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=256m

Это позволяет общее максимальное распределение памяти (размер кучи) 1 ГБ и максимальное распределение памяти для постоянных «внутренних» объектов размером 256 МБ. Когда эти размеры достигнуты, происходит сборка мусора, которая может значительно снизить производительность.

Предполагая, что у вас есть запасная память, вы можете легко удвоить их так:

org.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m

Обратите внимание, что вы перестанете видеть выгоду от увеличения XX:MaxPermSize раньше, чем при увеличении Xmx .

Использование демона Gradle

Вы можете включить Gradle Daemon для повышения производительности ваших сборников.

Gradle Daemon поддерживает инициализацию и запуск Gradle Framework и кэширует данные проекта в памяти для повышения производительности.

Для единой сборки

Чтобы включить Daemon для одной сборки, вы можете просто передать --daemon аргумент вашей gradle команды или Gradle Упаковочный сценария.

gradle --daemon
./gradlew --daemon

Для всех проектов проекта

Чтобы включить Daemon для всех построек проекта, вы можете добавить:

org.gradle.daemon=true

В файл gradle.properties вашего проекта.

Для всех сборщиков

Чтобы включить Gradle Daemon по умолчанию, для каждой сборки, сделанной вашей учетной записью пользователя в вашей системе, по $GRADLE_USER_HOME/.gradle/gradle.properties ( ~/.gradle/gradle.properties ) и добавьте эту строку:

org.gradle.daemon=true

Вы также можете сделать это в одной команде в системах Mac / Linux / * nix:

touch ~/.gradle/gradle.properties && echo "org.gradle.daemon=true" >> ~/.gradle/gradle.properties

Или в Windows:

(if not exist "%USERPROFILE%/.gradle" mkdir "%USERPROFILE%/.gradle") && (echo org.gradle.daemon=true >> "%USERPROFILE%/.gradle/gradle.properties")

Отключение демона

Вы можете отключить Daemon для конкретной сборки с использованием аргумента --no-daemon или отключить его для конкретного проекта, явно установив org.gradle.daemon=false в файле gradle.properties проекта.

Остановка демона

Если вы хотите остановить процесс Daemon вручную, вы можете либо убить процесс через диспетчер задач операционной системы, либо выполнить команду gradle --stop . Переключатель --stop заставляет Gradle запрашивать, чтобы все запущенные процессы Daemon той же версии Gradle, используемые для запуска команды, завершались. Обычно процессы Daemon автоматически прекращают себя * через * 3 часа бездействия или меньше .

Параллельные сборки Gradle

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

Для создания проектов в параллельном режиме:

gradle build --parallel

Вы также можете сделать построение параллельно по умолчанию для проекта, добавив следующий параметр в файл gradle.properties проекта:

org.gradle.parallel=true

Используйте последнюю версию Gradle

Команда Gradle регулярно работает над улучшением производительности различных аспектов сборки Gradle. Если вы используете старую версию Gradle, вам не хватает преимуществ этой работы. Попробуйте обновиться до последней версии Gradle, чтобы узнать, какое влияние это имеет. Это низкий риск, поскольку между младшими версиями Gradle нарушается очень мало вещей.

Файл свойств для оболочки Gradle можно найти в папке проекта в разделе gradle/wrapper/ и называется gradle-wrapper.properties . Содержимое этого файла может выглядеть так:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-X.X.X.zip

Вы можете вручную изменить номер версии XXX (текущая версия) на YYY (более новая версия), а при следующем запуске оболочки новая версия будет загружена автоматически.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow