Android studio org gradle jvmargs

Содержание
  1. Exploring the Android build process: demystifying Gradle flags
  2. Gradle properties
  3. DexOptions
  4. Русские Блоги
  5. Настройка Gradle и оптимизация сборки в Android
  6. I. Введение в Gradle
  7. 1. Что такое Gradle?
  8. Сравните с другими инструментами сборки
  9. 3. Установка и настройка Gradle
  10. Структура каталога Gradle проекта
  11. 1. Базовый проект gradle
  12. Структура директории 2.Gradle в андроид студии
  13. В-третьих, файл конфигурации конструкции объяснил
  14. 1、settings.gradle
  15. 2、gradle.properties,local.properties
  16. 3. Корневой каталог build.gradle
  17. 4. построить.гралд в модуле
  18. Предложения по улучшению скорости компиляции
  19. 1. Используйте последний плагин для Android
  20. Избегайте использования мультидекса
  21. 3. Избегайте использования multi-APK (редко используется)
  22. 4. Уменьшите упакованные файлы ресурсов
  23. 5. Отключить сжатие PNG
  24. 6. Используйте Мгновенный запуск
  25. 7. Не определяйте динамические переменные в Gradle
  26. 8. Не используйте динамически зависимые версии
  27. 9. Распределение максимального размера кучи для фоновых процессов Gradle.
  28. 10. Используйте Gradle кеш
  29. 11. Специфическая оптимизация для времени строительства проекта

Exploring the Android build process: demystifying Gradle flags

This is Part 2 of a short series about optimising your build speeds. If you haven’t already, please check out Part 1, which describes the different build caches you can use.

In this post, I’ll explain some other build properties you can tweak. Let’s start with the Gradle ones.

Gradle properties

The following list is just a subset of all available properties — these are the ones I found myself tweaking the most. All of these can be set in the gradle.properties file of your project.

TL;DR — get the best results from Gradle by using:

org.gradle.caching = true
org.gradle.parallel = true
org.gradle.configureondemand = true*
org.gradle.daemon = true
org.gradle.jvmargs=-Xmx m

org.gradle.caching=true — enable the Gradle build cache. For more info about this, please read Part 1 of this blog series.

org.gradle.parallel=true — enable Parallel project execution. This allows the execution of tasks from different projects in parallel. All modules in your Android app count as separate ‘projects’ in Gradle terms, so this feature is especially useful for modularised apps. Run this command to see the different ‘projects’ Gradle sees in your app:

org.gradle.configureondemand=true — enable Configure-on-Demand. This feature can save you a couple of seconds from the Configuration phase of Gradle, as only ‘projects’ (modules in Android terms) related to the current tasks are configured. Only helpful if your app has a large number of modules.
* At the time of writing there is an incompatibility issue between Gradle 4.6/4.7, Android Plugin for Gradle 3.1.1/3.1.2 and this flag. When using the latter versions of both you must switch Configure-on-Demand off, otherwise your project won’t build at all. Switching it off is a two step process — first turn off the flag in gradle.properties and second — uncheck the Configure-on-Demand property in Android Studio -> Preferences -> Build, Execution, Deployment > Compiler .

org.gradle.daemon=true — enable the Gradle Daemon. This is a long-lived Gradle process on your machine. The big improvements come from reusing computations from previous builds. This is enabled by default since Gradle 3.0, so just make sure you haven’t switched it off.

org.gradle.jvmargs=-Xmx m — set the memory allocated for the Gradle daemon.
** It’s not a ‘one-size-fits-all’ situation and more memory is not always better here — just experiment with a few values until you find the best case. Keep this at least 2GB though, as that’s the minimum required to enable the ‘dex-in-process’ optimisation.

Читайте также:  Минимальная версия андроид для вайбера

‘Dex-in-process’ was introduced a while ago with Android Studio 2.1. It allows dex to run within the Gradle daemon process, thus avoiding the costly spinning of new processes for dex. The gain here is quite significant, but this optimisation will not take place if there’s not enough memory in the Gradle daemon process for it (thus the 2GB minimum). Read more about it here.

DexOptions

The Android Plugin for Gradle supports a few extra settings in it’s DSL. We’re mostly interested in the dexOptions section.

TL;DR — with previous versions of Gradle and Android Plugin for Gradle tweaking the dexOptions made sense. When using the latest ones though, in most cases you’ll be better off removing this configuration block completely.

If you still decide to tweak the values — add a dexOptions section in your app’s module build.gradle file:

maxProcessCount — set the number processes to use for dexing if dex-in-process isn’t enabled for the build. This should never happen and you shouldn’t need to set this flag. If you do, tweak org.gradle.jvmargs as discussed above to give enough memory for dex-in-process.

javaMaxHeapSize — set the Java max heap size for the dex process. This used to have positive effects on build speeds before dex-in-process was introduced (combined with the default value of 4 for maxProcessCount), but nowadays it’s best not to use this setting. Still, if you do tweak it — ensure you leave enough memory to allow dex-in-process:

jumboMode — it relates to the number of strings that can be referenced in a DEX file, which is 2¹⁶. Contrary to a few StackOverflow answers, it’s not directly related to maximum allowed app size or number of methods in a DEX file. Enabling jumboMode allows 2³² strings to be referenced. Off by default, but you’ll very rarely need to set this one.

preDexLibraries — pre-dexes all dependencies during the first compilation of the project. This makes clean builds a bit slower, but incremental ones faster as these pre-dexed resources are reused. Works very nice with the Android build cache and it’s turned on by default in Android Plugin for Gradle 3.1.2.

incremental — this option is now deprecated and will be completely removed in the end of 2018! With recent versions of the Android Gradle Plugin dexing is incremental whenever possible (when not using legacy multiDex and always if targeting minSdkVersion 21+).

Hope you find these properties useful. Stay tuned for Part 3, where I’ll discuss a very hot topic in the Android community — whether modularising an app improves build speeds.

Источник

Русские Блоги

Настройка Gradle и оптимизация сборки в Android

I. Введение в Gradle

1. Что такое Gradle?

Gradle — это инструмент для автоматизации проекта, который объявляет параметры проекта на основе языка Groovy, в то же время поддерживая файл kotlin xxx.gradle.kts в качестве языка, указанного в домене (DSL).

Сравните с другими инструментами сборки

Самое прямое сравнение — это сравнение между Gradle и Maven и Ant, но в настоящее время в основном нет проектов, построенных на основе Ant, здесь упоминаться не будет.

Читайте также:  Карты для trainz 12 андроид

Во-первых, Gradle намного проще, чем Maven. Groovy синтаксис гораздо проще писать и читать, чем Xml в Maven.

Во-вторых, пользовательские функции в Gradle намного удобнее, чем в Maven. Вы можете настроить задачу в Gradle, и вам нужно написать плагин для ее реализации в Maven.

3. Установка и настройка Gradle

Установите, настройте переменные среды и проверьте результаты установки. Конкретная ссылка Gradle официальный сайтhttps://gradle.org/install/

Структура каталога Gradle проекта

1. Базовый проект gradle

Создайте новый файл build.gradle и введите командную строку для выполнения команды. gradle build Вы можете создать скрытый файл .gradle. Это основной проект gradle.

выполнение командной строки gradle wrapper Создайте следующую структуру: эта команда используется для сборки разных разработчиков с использованием одной и той же версии сборки Gradle.

Если вы используете многопроектную сборку, вам нужно использовать скрипт сборки, такой как setting.gradle, который будет представлен в gradle в Android.

Структура директории 2.Gradle в андроид студии

Нужно немного здесь. В Android Studio Gradle и Android работают независимо, а это значит, что сборка Android не зависит от IDE и может использоваться с Gradle для завершения построения проекта отдельно. Студия Android просто помогает нам создавать структуру каталогов и взаимодействовать с задачами в Gradle.

Давайте сначала посмотрим на структуру каталогов недавно созданного проекта andorid

В-третьих, файл конфигурации конструкции объяснил

1、settings.gradle

Этот файл представляет собой файл настроек Gradle, расположенный в корневом каталоге проекта, для настройки многомодульной сборки проекта, include ‘:app’, ‘:example_module’ Указывает на использование модуля приложения и модуля example_module в одном каталоге. Также можно указать пути к модулям. Используется следующим образом

2、gradle.properties,local.properties

Этот файл является файлом свойств проекта и может использоваться для сохранения ресурсов значения ключа для использования в проекте.

android studio в gradle.properties автоматически создаст его для нас org.gradle.jvmargs=-Xmx1536m Это свойство является максимальным размером кучи фонового процесса Gradle, минимальное значение составляет 1536 м, мы также можем изменить значение по своему усмотрению. org.gradle.jvmargs = -Xmx2048m 。

Мы также можем настроить другие атрибуты, такие как org.gradle.caching=true Позвольте конфигурации Gralde использовать кэширование, чтобы сократить время компиляции.

На самом деле существует множество свойств, которые можно настроить. См. Среду сборки на официальном сайте Gradle.https://docs.gradle.org/current/userguide/build_environment.html

Локальные пути SDK и NDK будут заполнены в local.properties. Многопользовательская разработка обычно требует добавления .gitignore.

3. Корневой каталог build.gradle

Файл build.gradle уровня проекта находится в корневом каталоге проекта и определяет конфигурацию сборки, которая применяется ко всем модулям в проекте.

4. построить.гралд в модуле

Файл build.gradle уровня модуля находится в каждой папке модуля и используется для настройки параметров сборки, применимых к модулю, в котором он находится, таких как пользовательские параметры упаковки и зависимости, введенные в модуль.

Предложения по улучшению скорости компиляции

1. Используйте последний плагин для Android

Команда разработчиков инструментов Google работает над улучшением скорости компиляции Android Studio. Последний плагин Gradle может быть использован для ускорения компиляции.
После Android Gradle Plugin 3.0.0 Google ввел новый метод зависимости и заставил отказаться от старого метода зависимости, разделив исходный метод закрытия компиляции на реализацию, API для очистки проектных зависимостей.

Реализация действительна только для текущей зависимости модуля. API такой же, как и при компиляции, и транзитивность зависимости существует. Неправильное использование приведет к двойной загрузке зависимостей, что увеличит время компиляции.

Читайте также:  Системные требования whatsapp android

Дополнительные функции после 3.0.0 см. в разделе «Конфигурации зависимостей» в официальном документе.https://developer.android.com/studio/build/dependencies

Избегайте использования мультидекса

Когда minSdkVersion меньше 21 (не включая 21), время компиляции значительно увеличится. Мы можем скомпилировать minSdkVersion до 21, чтобы повысить эффективность разработки, настроив версию для разработки. Конкретная конфигурация следующая:

3. Избегайте использования multi-APK (редко используется)

Этот метод можно использовать, когда вам нужно поддерживать разные ABI или dpi, используйте splts <>, чтобы сгенерировать разные apk для проекта.

При разработке и отладке отключите функцию разбиения. Конкретная конфигурация выглядит следующим образом:

Используйте эту команду при сборке из командной строки:

При сборке с Android Studio вы можете выполнить следующую настройку:

Откройте Preferences-> Build, Execution, Deployment-> Compiler, заполните -PdevBuild после параметра командной строки, как показано на рисунке ниже:

4. Уменьшите упакованные файлы ресурсов

Когда мы разрабатываем и отлаживаем, нет необходимости компилировать все файлы ресурсов. Обычно выбирается только один, чтобы сократить время компиляции. Конкретная конфигурация выглядит следующим образом:

5. Отключить сжатие PNG

При сборке Android сжатие PNG включено по умолчанию. При разработке и отладке вы можете отключить сжатие PNG. Конкретная конфигурация выглядит следующим образом:

6. Используйте Мгновенный запуск

Andorid studio 3.0 значительно оптимизировала мгновенный запуск. Обновленный код в предыдущей версии не работал на телефоне, поэтому он был закрыт. Попробуй это сейчас.

7. Не определяйте динамические переменные в Gradle

В случае разработки и отладки не используйте динамические определения

8. Не используйте динамически зависимые версии

Проект является неопределенным во время процесса сборки, и он может занять слишком много времени для компиляции или сбоя из-за сетевых проблем И Gradle проверяет наличие новых версий зависимостей каждые 24 часа, чтобы увеличить время разрешения зависимостей.

Не используйте следующие зависимости

9. Распределение максимального размера кучи для фоновых процессов Gradle.

Выделение большего объема памяти может сократить время на создание большого проекта, в зависимости от других факторов, таких как конфигурация компьютера. Для получения дополнительной информации см. Официальный веб-сайт Gradle Настройка памяти JVM:https://docs.gradle.org/current/userguide/build_environment.html#sec:configuring_jvm_memory

Настраивается в gradle.properties при настройке новой версии

Не настраивать в build.gradle со старой версией

10. Используйте Gradle кеш

Кэширование Gradle — это новая функция Gradle 3.5. Когда кэширование включено, Gradle будет кэшировать и повторно использовать результаты предыдущих сборок. В частности, добавьте следующую конфигурацию в gradle.properties:

Вышеуказанные пункты относятся к конференции ввода-вывода Google 2017. Подробнее см. В видео конференции.https://www.youtube.com/watch?v=7ll-rkLCtyk

11. Специфическая оптимизация для времени строительства проекта

Для построения каждого проекта конкретная оптимизация не будет одинаковой: мы можем вывести конкретное время строительства нашего проекта в документ и проанализировать, какое время строительства слишком длинное для целевой оптимизации. Конкретные команды следующие:

  • —Profile: включить профилирование
  • —Recompile-scripts: принудительно перекомпилировать сценарии при обходе кэша.
  • —Offline: отключить Gradle от получения онлайн-зависимостей. Это гарантирует, что любая задержка, вызванная Gradle при попытке обновить зависимости, не повлияет на ваши данные анализа. Вы должны были собрать проект один раз, чтобы убедиться, что Gradle загрузил и кэшировал ваши зависимости.
  • —Rerun-tasks: заставить Gradle перезапустить все задачи и игнорировать любые оптимизации задач.
    После завершения сборки откройте сгенерированный профиль в браузере в каталоге _project-root_ / build / reports / profile / profile-timestamp.html, чтобы увидеть конкретные отчеты о времени сборки.

Источник

Оцените статью