У меня есть мультипроект (~ 10 модулей), сборка которого занимает около 20-30 секунд каждый раз. Когда я нажимаю «Выполнить» в Android Studio, мне приходится каждый раз ждать, чтобы перестроить приложение, что крайне медленно.
Можно ли автоматизировать процесс сборки в Android Studio? Или у вас есть какой-нибудь совет, как сделать этот процесс быстрее?
В Eclipse, благодаря автоматическому построению, запуск одного и того же проекта на эмуляторе занимает около 3-5 секунд.
Это мой файл build.gradle (модуль приложения):
buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':libraries:SharedLibs')
compile project(':libraries:actionbarsherlock')
compile project(':libraries:FacebookSDK')
compile project(':libraries:GooglePlayServices')
compile project(':libraries:HorizontalGridView')
compile project(':libraries:ImageViewTouch')
compile project(':libraries:SlidingMenu')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 8
targetSdkVersion 16
}
}
android
gradle
android-studio
build.gradle
froger_mcs
источник
источник
Ответы:
аппаратные средства
Извините, но модернизация станции разработки до SSD и тонны оперативной памяти, вероятно, имеет большее влияние, чем точки ниже вместе взятые.
Версии инструментов
Повышение производительности сборки является основным приоритетом для команд разработчиков, поэтому убедитесь, что вы используете последние версии Gradle и Android Gradle Plugin .
Конфигурационный файл
Создайте файл с именем
gradle.properties
в любом каталоге:/home/<username>/.gradle/
(Linux)/Users/<username>/.gradle/
(Mac)C:\Users\<username>\.gradle
(Windows)Append:
Свойства Gradle работают локально, если вы размещаете их в
projectRoot\gradle.properties
глобально, если вы размещаете их вuser_home\.gradle\gradle.properties
. Свойства применяются, если вы запускаете задачи Gradle из консоли или непосредственно из идеи:Настройки IDE
Можно настроить интеграцию Gradle-IntelliJ из графического интерфейса настроек IDE. Включение «автономной работы» (проверьте ответ из yava ниже) отключит реальные сетевые запросы для каждого «файла синхронизации синхронизации».
Родной мульти-декс
Один из самых медленных шагов сборки apk - преобразование байт-кода Java в один файл dex. Включение нативного мультидекса (minSdk 21 только для отладочных сборок) поможет инструментам сократить объем работы (см. Ответ от Акселя Виллгерта ниже).
зависимости
Предпочитают
@aar
зависимости над подпроектами библиотеки.Найдите пакет aar в mavenCentral , jCenter или используйте jitpack.io для сборки любой библиотеки из github. Если вы не редактируете источники библиотеки зависимостей, вам не следует каждый раз создавать ее из исходных текстов проекта.
антивирус
Подумайте об исключении файлов проекта и файлов кэша из антивирусной проверки. Это, очевидно, компромисс с безопасностью (не пытайтесь сделать это дома!). Но если вы часто переключаетесь между ветками, антивирус повторно сканирует файлы перед тем, как разрешить использовать процесс gradle, что замедляет время сборки (в частности, проект синхронизации AndroidStudio с файлами gradle и задачами индексирования). Измерьте время сборки и обработайте процессор с включенным антивирусом и без него, чтобы увидеть, связан ли он.
Профилирование сборки
Gradle имеет встроенную поддержку профилирования проектов . В разных проектах используются разные комбинации плагинов и пользовательских скриптов. Использование
--profile
поможет найти узкие места.источник
dependencies {compile 'com.android.support:support-v4:21.0.+'}
медленное решение? не уверен, что понялВы можете игнорировать обновления обновлений Gradle.
Для Windows, работающей под управлением Android Studio 1.5:
File -> Settings -> Build, Execution, Deployment -> Build tools -> Gradle -> Check Offline work (as shown in image)
с ~ 30 + сек до ~ 3 сек
источник
gradle
запуске. Это странно.Искал везде и наконец нашел решение, которое работает для нас. Включение параллельных сборок (в OSX:)
preferences -> compiler -> gradle -> "Compile independent modules in parallel"
и включение «автоматически создавать проект» снизили его с ~ 1 минуты до ~ 20 секунд. Благодаря / U / Covalence.http://www.reddit.com/r/androiddev/comments/1k3nb3/gradle_and_android_studio_way_slower_to_build/
источник
Я недавно купил новый твердотельный накопитель и перешел с Windows на Linux. Мои сборочные процессы теперь на порядок быстрее и больше не раздражают.
Хотя он не дает прямого ответа на ваш вопрос о том, почему он медленнее, чем затмение, он показывает, что процесс ограничен диском, и обновление до SSD может оказаться (несколько дорогим) решением. Я предполагаю, что будут люди, гуглящие проблему и заканчивающие здесь, которые могли бы ценить мой опыт.
источник
Ускорьте сборку Gradle в Android Studio 3.2.1
Вы когда-нибудь чувствовали, что ждете завершения сборки в Android Studio в течение нескольких минут? Я тоже. И это довольно раздражает. К счастью, есть несколько способов улучшить это. Android использует Gradle для сборки. Последняя версия 4.6 имеет огромный прирост производительности по сравнению с предыдущими версиями (подробности см. В примечаниях к выпуску).
Шаг 1. Обновление версии Gradle. Более простой способ сделать это - открыть «Настройки модуля» (ваш проект)> «Структура проекта».
ОБНОВИТЬ
Изменить на версию Gradle: 4.6 и Изменить на версию плагина Android: 3.2.1
Загрузите дистрибутив Gradle Release с https://services.gradle.org/distributions/gradle-4.6-all.zip и скопируйте его в папку Gradle:
Последний шаг - добавить дискографию в Настройки> Gradle.
Не забудьте нажать кнопку Применить, чтобы сохранить изменения.
Шаг 2. Включите автономный режим, демон Gradle и параллельную сборку для проекта. Автономный режим говорит Gradle игнорировать проверки обновления до даты. Gradle каждый раз запрашивает зависимости, и наличие этой опции заставляет его использовать то, что уже есть на компьютере, для зависимостей. Перейдите в Gradle из настроек Android-студии и щелкните в автономном режиме работы.
Следующим шагом является включение демона Gradle и параллельной сборки для вашего проекта. Параллельная сборка приведет к тому, что ваши проекты с несколькими модулями (многопроектные сборки в Gradle) будут построены параллельно, что должно ускорить сборку больших или модульных проектов.
Эти параметры можно включить, изменив файл с именем gradle.properties в каталоге скриптов Gradle (т. Е. ~ / .Gradle / gradle.properties). Некоторые из этих параметров (например, модули Complie параллельно) доступны в Android Studio и также включаются там с помощью по умолчанию, но размещение их в файле gradle.properties включит их при сборке из терминала, а также убедится, что ваши коллеги будут использовать те же настройки. Но если вы работаете в команде, иногда вы не можете совершить это.
Использование демона ускорит запуск ваших сборок, так как не нужно будет каждый раз запускать все приложение Gradle. Gradle Daemon не включен по умолчанию, но рекомендуется всегда включать его для машин разработчиков (но оставлять его отключенным для серверов непрерывной интеграции). Часто задаваемые вопросы об этом режиме можно найти здесь https://docs.gradle.org/current/userguide/gradle_daemon.html . Настройка параллельных сборок может быть небезопасной для некоторых проектов. Требование состоит в том, что все ваши модули должны быть разъединены, иначе сборка может завершиться сбоем ( подробности см. Http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects ).
Шаг 3: Включите инкрементные настройки памяти dexign и твик Вы можете ускорить сборку, включив инкрементную индексацию. В файле сборки вашего модуля:
Добавьте эту опцию в свой блок Android:
В этом блоке dexOptions вы также можете указать размер кучи для процесса dex, например:
Где «12g» - это 12 ГБ памяти. Дополнительную информацию об этом можно найти здесь google.github.io/android-gradle-dsl/current/ Вы также можете настроить параметры Gradle в файле настроек, например, увеличить максимальный размер кучи в случае, если у вас большой проект:
См. Весь список параметров здесь: https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_properties для получения подробной информации.
Шаг 4. Отключите антивирус. Рассмотрите возможность исключения файлов проекта и кэша из антивирусной проверки. Это, очевидно, компромисс с безопасностью. Но если вы часто переключаетесь между ветками, антивирус повторно сканирует файлы перед тем, как разрешить использовать процесс gradle, что замедляет время сборки (в частности, проект синхронизации Android Studio с файлами gradle и задачами индексирования). Измерьте время сборки и обработайте процессор с включенным антивирусом и без него, чтобы увидеть, связан ли он. Надеюсь, это поможет. Оставьте комментарий, если у вас есть какие-либо вопросы или другие советы по улучшению производительности сборки.
полезная ссылка
источник
Если вы используете сервисы Google Play, в зависимости от того, какие библиотеки вам нужны, а не весь BLOB-объект, все может быть быстрее.
Если вам нужны только карты, используйте:
вместо:
Последний приносит 20k методов (см. Блог) в classpath, что может уменьшить общее количество методов до 64k.
Это заставит использовать proguard или multidex даже для отладочных сборок. Для одного из моих проектов у меня было следующее время сборки
При разработке на SDK 21+ можно было бы оптимизировать мультидексные сборки, как указано в документации Android
источник
play-service
библиотеки я скомпилировал толькоmaps
иlocations
и отключилmultidex
. Я чувствую большую разницу. Спасибо +1Принятый ответ - для более старых версий Android Studio, и большинство из них работает до сих пор. Обновление Android Studio сделало это немного быстрее. Не пытайтесь указывать размер кучи, так как он будет автоматически увеличиваться с увеличением Xms и Xmx. Вот некоторые модификации с VMoptions
В папке bin находится файл studio.vmoptions для настройки конфигурации среды. В моем случае это studio64.vmoptions Добавьте следующие строки, если они еще не добавлены, и сохраните файл. В моем случае у меня 8 ГБ ОЗУ.
Запустите андроид студию. Перейдите в Файл-> Настройки-> Сборка, Выполнение, Развертывание-> Компилятор
В случае использования Mac, сначала я не мог найти vmoptions. В любом случае, вот хорошая статья о том, как мы можем изменить vmoptions в MAC OSX . Цитирование из этой статьи здесь.
Откройте свой терминал и введите эту команду, чтобы открыть vmoptions в MAC OSX:
источник
Просто создайте файл с именем gradle.properties в следующем каталоге:
Добавьте эту строку в файл:
Для меня скорость теперь равна Eclipse.
Источник: https://www.timroes.de/2013/09/12/speed-up-gradle/
источник
Вы можете сделать процесс быстрее, если вы используете gradle из командной строки. Существует много оптимизации для разработчиков IDE. Но это только ранняя версия.
Для получения дополнительной информации прочитайте эту дискуссию на g + с некоторыми разработчиками.
источник
Если кто-то работает над проектом, который синхронизируется через Subversion, и это все еще происходит, я думаю, это может замедлить процесс работы в Android Studio. Например, если он работает очень медленно: прокрутка в классе, xml и т. Д., В то время как мое приложение все еще работает на моем устройстве.
источник
Обновление после Android Studio 2.3
Все ответы великолепны, и я рекомендую использовать эти методы для повышения скорости сборки.
После выпуска Android 2.2 в сентябре 2016 года, Android выпустила экспериментальную функцию кеша сборки для ускорения
gradle
сборки, которая теперь официально представлена в Android Studio 2.3 Canary. (Официальная информация о выпуске)Он вводит новую функцию кэша сборки, которая включена по умолчанию, может ускорить время сборки (включая полные сборки, инкрементные сборки и мгновенный запуск), сохраняя и повторно используя файлы / каталоги, которые были созданы в предыдущих сборках того же или другого Android проект.
Как пользоваться:
Добавьте следующую строку в ваш
gradle.properties
файлОчистить кеш:
Существует новая задача Gradle, призванная облегчить
cleanBuildCache
очистку кэша сборки. Вы можете использовать его, набрав в своем терминале следующее:./gradlew cleanBuildCache
ИЛИ Вы можете очистить кэш для Android Studio 2.2, удалив все файлы, хранящиеся в папке
C:\Users\<username>\.android\build-cache
источник
После изменения этих настроек продолжительность моей компиляции за 10 минут изменилась до ~ 10 секунд.
Шаг 1:
Шаг 2:
Ссылка - https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio
Недостаток:
Вы не сможете развернуть последние версии зависимостей, указанных в вашем файле build.gradle. Он работает быстрее, потому что использует кэшированный снимок этих импортированных библиотек.
Важное примечание : при развертывании приложения удалите эти параметры и соберите последние версии зависимостей.
источник
Решил мой с
Сборка Gradle продолжалась от 8 минут до 3 секунд.
источник
Вот что помогло этому начинающему программисту Android (бывшему профессиональному программисту много лет назад) ускорить работу Android Studio 2.2. Я знаю, что это перефразировка, но, просто подведение итогов в одном месте.
Начальные сборки все еще могут быть очень медленными, но перезапуски запущенных приложений теперь обычно очень терпимы. Я использую неоптимальный ПК: четырехъядерный процессор AMD A8-7410, 8 МБ ОЗУ, HD-память без SSD, Win 10. (И это моя первая публикация о переполнении стека ....;)
В НАСТРОЙКАХ -> GRADLE:
да для «Автономная работа» (это, пожалуй, самый импортный параметр).
В НАСТРОЙКАХ -> КОМПИЛЕР:
да для «Компилировать независимые модули параллельно» (не уверен, действительно ли это помогает использовать многоядерные процессоры).
В GRADLE SCRIPTS , "build.gradle (Модуль: приложение)":
ТАКЖЕ В GRADLE SCRIPTS , "gradle.properties (Свойства проекта)":
org.gradle.jvmargs = -Xmx3048m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8
org.gradle.parallel = true org.gradle.daemon = true
Кроме того , тестирование на физическом устройстве вместо эмулятора работает хорошо для меня; небольшая таблетка, которая стоит, удобна.
источник
Еще один совет по улучшению производительности:
Android Studio 3.0 включает новый компилятор DEX под названием D8.
«Компилятор dex в основном работает скрытно в повседневной разработке приложений, но он напрямую влияет на время сборки приложения, размер файла .dex и производительность во время выполнения».
«И при сравнении нового компилятора D8 с текущим компилятором DX D8 компилируется быстрее и выводит меньшие файлы .dex, сохраняя при этом такую же или лучшую производительность во время выполнения приложения».
D8 не обязателен - используйте его, мы должны поместить в gradle.properties проекта
Дополнительная информация: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html.
PS. Это сокращает время сборки примерно на 30%.
источник
Эта настройка идет очень быстро для меня (около 2 секунд сборки)
build.gradle
gradle.properties
мой компьютер:
файлы проекта
- все находится в локальном HD
источник
Пожалуйста, выполните следующие шаги.
Включить автономный режим: пожалуйста, проверьте ниже экрана печати.
https://i.stack.imgur.com/RF9uG.png
Включить мгновенный запуск: пожалуйста, проверьте ниже экрана печати.
https://i.stack.imgur.com/mvHKJ.png
Если вы хотите узнать больше о мгновенном запуске, пожалуйста, посетите сайт разработчика Android.
источник
Вы можете попробовать открыть меню Gradle в правой части студии и собрать только модули, которые вы изменили, а затем запустить команду установки. Когда вы нажимаете run, он собирает все, независимо от того, какие изменения вы, возможно, внесли в код, который собираете.
источник
Я далек от того, чтобы быть экспертом по Gradle, но в моей среде была следующая строка в .gradle / init.gradle
Тем не менее, я понятия не имею, почему эта линия была там, но я пытаюсь изменить на
и теперь я наконец могу работать, не ругаясь на Android Studio & Gradle buildind-схему.
источник
В нашем конкретном случае проблема была связана с наличием плагина retrolambda , который заставлял все проекты и подпроекты перекомпилироваться каждый раз, когда мы пытались запустить наше приложение, даже если в наших основных модулях не было изменено ни одного кода.
Удаление ретроламба исправило это для нас. Надеюсь, это кому-нибудь поможет.
источник
Просто попробуйте это в первую очередь. Это мой личный опыт.
У меня такая же проблема. Я просто отключил антивирус (у меня была Avast Security 2015). Сразу после отключения антивируса все прошло хорошо. Gradle закончился успешно. С этого момента в течение нескольких секунд грейдл заканчивается (только 5-10 секунд).
источник
Привет, я знаю, что это очень очень поздно, но, возможно, помочь кому-то
в моем случае я использовал
в моем приложении Gradle зависимость,
но в одной из моих библиотек это было
после изменения всех до последней версии моя проблема решена.
источник
Выполнение шагов сделает его в 10 раз быстрее и сократит время сборки на 90%.
Сначала создайте файл с именем gradle.properties в следующем каталоге:
Добавьте эту строку в файл:
И проверьте эту опцию в Android Studio
источник
ИСПОЛЬЗУЙТЕ это sudo dpkg - add-архитектура i386 sudo apt-get update sudo apt-get install libncurses5: i386 libstdc ++ 6: i386 zlib1g: i386
Android Studio не удается создать новый проект, время ожидания которого истекает во время ожидания ведомого процесса
источник
Тривиальное изменение (в resoruce XML) еще взял 10 минут . Как говорит @rivare в своем ответе, сборка командной строки выполняется намного быстрее (это заняло 15 секунд ).
Вот несколько шагов, чтобы хотя бы быстро выполнить тривиальную сборку из командной строки для Windows.
Перейдите в корневой каталог ваших проектов (где находится gradlew.bat):
cd c: \ android \ MaskActivity
выполнить сборку :
Gradlew собрать Отладка
удалить apk с телефона напрямую (перетащите его, чтобы удалить).
Когда сборка будет завершена, убейте БОЛЬШОЙ процесс Java с помощью диспетчера задач Windows.
ИЛИ если у вас есть инструменты Unix на вашем компьютере с Windows:
"pid" показаны:
Теперь установите ваш apk:
adb -d установить C: \ Android \ MaskActivity \ app \ build \ output \ apk \ app-debug.apk
источник
Согласно документации Android , добавьте это в файл Gradle модуля приложения.
источник
Для запуска среды Android на машине с низкой конфигурацией.
В Android-студии размер кучи по умолчанию составляет 1,2 ГБ, а может уменьшиться до 512 МБ. Справка> Изменить пользовательские параметры виртуальной машины studio.vmoptions -Xmx512m Производительность макетов будет увеличена
Для Gradle, одного из основных компонентов в Android-студии, Mkae наверняка, как и сейчас, 3.0beta является самым последним
Следующие советы могут повлиять на качество кода, поэтому, пожалуйста, используйте с осторожностью:
Studio включает Power Safe Mode, когда он включен, он закрывает фоновые операции, которые мешают выполнению кода и так далее.
Вы можете запустить lintcheck вручную при необходимости ./gradlew lint
Большинство из них используют эмуляторы Android в среднем, они потребляют 2 ГБ ОЗУ, поэтому, если возможно, используйте реальное устройство Android, это уменьшит нагрузку на ваш компьютер. В качестве альтернативы вы можете уменьшить оперативную память эмулятора, и это автоматически уменьшит потребление виртуальной памяти на вашем компьютере. Вы можете найти это в конфигурации виртуального устройства и дополнительных настройках.
Автономный режим Gradle - это возможность для пользователей с ограниченной пропускной способностью отключать загрузку зависимостей сборки. Это уменьшит фоновую работу, что поможет повысить производительность Android-студии.
Студия Android предлагает оптимизацию для одновременной компиляции нескольких модулей. На компьютерах с небольшим объемом ОЗУ эта функция, вероятно, отрицательно повлияет на производительность. Вы можете отключить его в диалоге настроек компилятора.
источник