Создание и запуск приложения с помощью Gradle и Android Studio происходит медленнее, чем с помощью Eclipse

У меня есть мультипроект (~10 модулей), сборка которого занимает около 20-30 секунд каждый раз. Когда я нажимаю Run в Android Studio, мне приходится каждый раз ждать, пока приложение перестроится, что очень медленно.

Возможно ли автоматизировать процесс сборки в Android Studio? Или у вас есть совет, как сделать этот процесс быстрее?

В Eclipse, благодаря автоматической сборке, запуск одного и того же проекта на эмуляторе занимает около 3-5 секунд.

Вот мой файл build.gradle (модуль app):

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
    }
}
Комментарии к вопросу (12)
Решение

Hardware

Я'извиняюсь, но модернизация станции разработки до SSD и тонны оперативной памяти, вероятно, оказывает большее влияние, чем пункты ниже вместе взятые.

Версии инструментов

Повышение производительности сборки является основным приоритетом для команд разработчиков, поэтому убедитесь, что вы используете последнюю версию Gradle и Android Gradle Plugin.

Файл конфигурации

Создайте файл с именем gradle.properties в любом каталоге:

  • /home//.gradle/ (Linux)
  • /Users//.gradle/ (Mac)
  • C:\Users\\.gradle (Windows)

Добавить:

# IDE (e.g. Android Studio) users:
# Settings specified in this file will override any Gradle settings
# configured through the IDE.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# The Gradle daemon aims to improve the startup and execution time of Gradle.
# When set to true the Gradle daemon is to run the build.
# TODO: disable daemon on CI, since builds should be clean and reliable on servers
org.gradle.daemon=true

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e#.krd1mm27v
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true

# Enables new incubating mode that makes Gradle selective when configuring projects. 
# Only relevant projects are configured which results in faster builds for large multi-projects.
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
org.gradle.configureondemand=true

# Set to true or false to enable or disable the build cache. 
# If this parameter is not set, the build cache is disabled by default.
# http://tools.android.com/tech-docs/build-cache
android.enableBuildCache=true

Свойства Gradle работают локально, если вы разместите их в projectRoot\gradle.properties и глобально, если вы разместите их в user_home\.gradle\gradle.properties. Свойства применяются, если вы запускаете задачи gradle из консоли или непосредственно из идеи:

Настройки IDE

Есть возможность настроить интеграцию Gradle-IntelliJ из графического интерфейса настроек IDE. Включение "автономной работы" (проверьте ответ от yava ниже) отключит реальные запросы к сети при каждой "синхронизации gradle-файла".

Native multi-dex

Одним из самых медленных этапов сборки apk является преобразование байткода java в один файл dex. Включение нативного multidex (minSdk 21 только для отладочных сборок) поможет инструментарию сократить количество работы (проверьте ответ от Aksel Willgert ниже).

Зависимости

Предпочитайте зависимости @aar, а не библиотечные подпроекты.

Найдите пакет aar на mavenCentral, jCenter или используйте jitpack.io для сборки любой библиотеки с github. Если вы не редактируете исходные тексты зависимой библиотеки, вам не следует собирать ее каждый раз с исходными текстами вашего проекта.

Антивирус

Рассмотрите возможность исключения файлов проекта и кэша из антивирусного сканирования. Очевидно, что это компромисс с безопасностью (не пытайтесь сделать это дома!). Но если вы часто переключаетесь между ветками, то антивирус будет пересканировать файлы, прежде чем разрешить процессу gradle использовать их, что замедляет время сборки (в частности, AndroidStudio синхронизирует проект с файлами gradle и задачами индексирования). Измерьте время сборки и CPU процесса с включенным антивирусом и без него, чтобы понять, связано ли это.

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

Gradle имеет встроенную поддержку профилирования проектов. Различные проекты используют различные комбинации плагинов и пользовательских скриптов. Использование --profile поможет найти узкие места.

Комментарии (19)

Вы можете игнорировать обновление до даты Gradle в чеки.

Для Windows под управлением Android студия 1.5: зайти в файл -и gt; Настройки -> создание, оформление, развертывание -> Инструменты -&ГТ построения; ш < br / > - > Регистрация автономной работы (как показано на изображении)

вниз от ~30+ сек до ~3 сек.

Комментарии (6)

Искали это везде и наконец нашли решение, которое работает для нас. Включение параллельной сборки (на OSX: preferences -> compiler -> gradle -> "Compile independent modules in parallel") и включение 'make project automatically' сократило время с ~1 минуты до ~20 секунд. Спасибо /u/Covalence.

http://www.reddit.com/r/androiddev/comments/1k3nb3/gradle_and_android_studio_way_slower_to_build/

Комментарии (3)

Недавно я купил новый SSD и пошел с Windows на Linux.Мой раз строить теперь на порядок быстрее, и больше не раздражает.

Хотя это не прямо ответить на ваш вопрос, почему это'ы медленнее, чем в Eclipse, он показывает, что процесс диска ограничена и обновление до SSD может быть (немного дороже) решение. Я'м предполагаем, что будут люди погуглил этот вопрос и попал сюда, кто может оценить мой опыт.

Комментарии (5)

Ускорить Gradle В Android Студия 3.2.1

Когда-нибудь чувствовали, как вас ждут строит для завершения в Android Studio на минуты? Мне тоже. И это очень раздражает. К счастью, есть несколько способов, которые вы можете использовать, чтобы улучшить это. Android использует Gradle в для строительства. Последняя версия 4.6 имеет огромный прирост производительности по сравнению с предыдущими версиями (см. заметки о выпуске для деталей).

Шаг 1: Gradle в обновление версии Более простой способ выполнить это состоит в том, чтобы перейти к: откройте Настройки модуля (проект) > структура проекта

Обновление

Изменение Gradle версии: 4.6 и Изменение Андроид плагин версия: 3.2.1

Скачать Gradle в дистрибутив релиз от https://services.gradle.org/distributions/gradle-4.6-all.zip И скопируйте его в папку Gradle в:

Последний шаг-это добавление вашего discribution в Настройки > Gradle в

Не забудьте нажать кнопку Применить, чтобы сохранить изменения.

Шаг 2: включить автономный режим, демон Gradle и параллельно строить по проекту Автономный режим говорит Gradle для игнорирования обновление до даты проверки. Просит Gradle в зависимости каждый раз, и имея этот параметр делает его просто использует то, что уже на автомате зависимостей. Перейти на Gradle в из настройках Android Studio и нажмите в окне автономной работы.

  1. Перейти к компилятору настройках Android Studio и добавить “— в сети” в командной строке и нажмите кнопку компиляции независимых модулей параллельно.

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

Эти параметры могут включить modifiing Gradle в файл.свойства в каталог скрипты Gradle(т. е. ~/.среда Gradle/Gradle в.свойствах).Некоторые из этих параметров (например, соблюдение модулей параллельно) доступны из Android Studio, а также разрешена по умолчанию, но класть их в Gradle в.файл свойств позволило им при строительстве терминала, а также убедившись в том, что ваши коллеги будут использовать те же параметры. Но если вы работаете в команде, иногда вы не можете совершить это.

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit org.gradle.parallel=true
# When set to true the Gradle daemon is used to run the build. For local developer builds this is our favorite property.
# The developer environment is optimized for speed and feedback so we nearly always run Gradle jobs with the daemon.
 org.gradle.daemon=true

Используя демон сделает ваши сборки запуск быстрее, так как он не будет иметь для запуска всего приложения Gradle в любое время. Демон Gradle не включена по умолчанию, но рекомендую включить его на машинах разработчиков (но оставив его инвалидом на серверах непрерывной интеграции). Часто задаваемые вопросы об этом режиме можно найти здесь https://docs.gradle.org/current/userguide/gradle_daemon.html. Параллельной сборки установка может быть небезопасным для некоторых проектов. Требование заключается в том, что все ваши модули должны быть отделены или построить не может (см. http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects для подробностей).

Шаг 3: включение добавочных dexignбыл и настроить параметры памяти Вы можете ускорить ваши сборки путем включения добавочного дэсин. В файл build вашего модуля:

Добавить эту опцию в свой блок андроид:

dexOptions {
    incremental true
}

В этой dexOptions блоке можно также указать размер кучи для процесса Декс, например:

dexOptions {
    incremental true
    javaMaxHeapSize "12g"
}

Где “12г” - это 12 ГБ памяти. Дополнительную информацию об этом можно найти здесь в Google.на GitHub.Ио/андроид-Gradle в-гнездо DSL/текущее/ Вы также можете настроить параметры Gradle в Файл Параметры, например, увеличить максимальный размер кучи в случае, если у вас большой проект:

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Увидеть весь список параметров здесь: https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_properties для получения подробной информации.

Шаг 4: Отключить Антивирус Рассмотрим для исключения проекта и кэш-файлы из антивирусной проверки. Очевидно, что это компромисс с безопасностью. Но если вы переключаетесь между веток много, то антивирус будет сканировать файлы, прежде чем разрешить процесс Gradle в, чтобы использовать его, который замедляет время сборки (в частности проект студии синхронизации с Gradle файлы и задачами индексирования). Измерить время сборки и обработки процессора с и без антивируса включен, чтобы увидеть, если это связано. Я надеюсь, что это помогает. Оставьте комментарий, если у вас возникли вопросы или некоторые другие советы для повышения скорости построения.

полезные ссылки

Комментарии (0)

Если вы используете сервисы Google Play, в зависимости от только необходимые библиотеки, а не весь Blob может сделать вещи быстрее.

Если только нужно карты, использовании:

compile 'com.google.android.gms:play-services-maps:6.5.+'

вместо:

compile 'com.google.android.gms:play-services:6.5.+'

Последняя приносит 20к методов (см. блог) в classpath, который может склонить чашу общее количество метод более 64К.

Что бы принудительно использовать программы ProGuard или multidex даже для отладочных сборок. Для одного из моих проектов я имела следующий раз строить

  • multidex строить (с supportlibrary) ~40сек
  • должны построить ~20сек
  • строить, когда способ ограничить < 64К ~5сек

Если развивается на СДК 21+, его можно было бы оптимизировать multidex строит, как сказано в документации Android]3

android {
    productFlavors {
        // Define separate dev and prod product flavors.
        dev {
            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
            // to pre-dex each module and produce an APK that can be tested on
            // Android Lollipop without time consuming dex merging processes.
            minSdkVersion 21
        }
        prod {
            // The actual minSdkVersion for the application.
            minSdkVersion 14
        }
    }
    ...
}
Комментарии (1)

Принято отвечать на старых версиях Android Studio и большинство из них работает до сих пор. Обновление Android Studio сделали его немного быстрее. Дон'т беспокоить, чтобы указать размер кучи, как это'МР увеличивается автоматически с увеличением xms и Xmx значение. Здесь's некоторые модификации с VMoptions

  1. В папку bin там'ы студию.файл vmoptions для установки конфигурации среды. В моем случае это studio64.vmoptions Добавьте следующие строки, если они'повторно не так уже добавил, и сохраните файл. В моем случае я'вэ 8 ГБ оперативной памяти.

-Xms4096m -Xmx4096m -Начала XX:MaxPermSize=2048m -На XX:+CMSClassUnloadingEnabled -ХХ:+CMSPermGenSweepingEnabled -На XX:+HeapDumpOnOutOfMemoryError Единственный способ иметь установленный.кодировка=кодировка UTF-8`

  1. Запускаем Android студия. Перейдите в файл-и gt; Настройки-> создание, выполнение, развертывание-> компилятор
  • Проверить компиляцию независимых модулей параллельно
  • В параметрах командной строки пишем: --оффлайн
  • Проверить, чтобы проект автоматически
  • Проверить настроить по требованию

В случае использования Мак, сначала я не мог'т найти vmoptions. В любом случае, здесь'ы хорошая статья о том, как мы можем изменить vmoptions в Mac и OSX. Цитирую из этой статьи здесь.

Откройте терминал и поставить эту команду на открытие vmoptions в Mac и OSX:

open -e /Applications/Android\ Studio.app/Contents/bin/studio.vmoptions
Комментарии (2)

Просто создайте файл с именем градля.свойства в следующем каталоге:

/home//.gradle/ (Linux)
/Users//.gradle/ (Mac)
C:\Users\\.gradle (Windows)

Добавьте эту строку в файл:

org.gradle.daemon=true

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

Источник: https://www.timroes.de/2013/09/12/speed-up-gradle/

Комментарии (3)

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

Для получения дополнительной информации прочитайте это обсуждение на g+ с некоторыми из разработчиков.

Комментарии (1)

Если кто-то работает проект, который синхронизируется через Subversion и это все еще происходит, я думаю, это может замедлить процесс документооборота в Android студия. Например, если он работает очень медленно при прокрутке в классе,XML и т. д., В то время как мое приложение работает на моем устройстве.

  • Перейти в систему управления версиями на предпочтения и набор из Subversion нет.
Комментарии (2)

После Обновления Андроид Студио 2.3

Все ответы великолепны, и я рекомендую использовать эти методы с этим, чтобы улучшить скорость.

После выхода Android 2.2 на сентябрь 2016 года, Андроид экспериментальная построить функцию кэш для ускорения `Gradle в построить представление, которое сейчас официальная с Android 2.3 студии Канарейка. (Официальный релиз Примечание)

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

Как использовать:

Добавьте следующую строку в ваш градля.свойства файла

android.enableBuildCache = true
# Set to true or false to enable or disable the build cache. If this parameter is not set, the build cache is enable by default.

Очистить кэш:

  • Есть новые задачи Gradle под названием cleanBuildCache для вас, чтобы легче очистить кэш строить. Вы можете использовать его, введя следующую команду в вашем терминале:

./cleanBuildCache gradlew

  • Или вы можете очистить кэш для Android 2.2 студии, удалив все файлы на месте

C:\Users\<имя пользователя>\.\сборки Android-кэш

Комментарии (0)

После изменения этой настройки составляем продолжительность 10 минут поменяли на ~10 секунд.

Шаг 1:

и gt; Настройки(сочетание клавиш Ctrl+АЛТ+с) ->

создание,выполнение,развертывание ->

компилятор -и GT;

тип "`в--в оффлайне" в командной строке "Параметры".

Шаг 2:

проверки “составляют независимые модули в параллельный флажок”.

& нажмите кнопку "Применить" - и GT; ОК

Ссылка - https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio

Недостатки:

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

Важное примечание: при развертывании приложения снять этом настройки & построить с последними версиями зависимостей.

Комментарии (0)

Моя решена с

и GT; файл - &и gt; Настройки -> создание, выполнение, развертывание -> Инструменты -&построить ГТ;

`Gradle в -> в автономном режиме работы

Gradle в строит пошел от 8 минут до 3 секунд.

Комментарии (0)

Только другой совет и ветра:

Студия Android 3.0 включает новый Декс компилятор называется Д8.

на "компилятор Декс в основном работает под капотом в ваш день-в-день разработки приложений, но это напрямую влияет на ваше приложение's сборки время .размер файла Декс, и во время выполнения.&и"

"и при сравнении нового компилятора Д8 с текущим компилятором ДХ, Д8 компилирует быстрее и выходов меньше .DeX файлы, в то время как имеющие одинаковое или лучшее приложение во время выполнения.&и"

Д8 необязательно - использовать его мы должны вложить в проект'ы градля.свойства

android.enableD8=true

Больше информаций: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

ПС. Это улучшить мое время сборки на 30%.

Комментарии (0)

Здесь's что помог этот начинающий программист Андроид (бывший профессиональный программист, лет назад) в ускорении студия Android 2.2. Я знаю, что это перепев, но просто резюмируя в одном месте.

Первоначальный строит еще можно зверски медленно, но перезапуск запущенных приложений теперь, как правило, весьма терпимо. Я'м с помощью суб-оптимальный ПК: четырехъядерный процессор АМД А8-7410 ЦП, 8 МБ ОЗУ, без SSD в качестве HD, выиграть 10. (И, это мой первый переполнение стека проводки.... ;)

В настройки -> Gradle в:

да и"работать автономно" и (это, пожалуй, самая импорта).

В настройки -> компилятор:

да и"компиляции независимых модулей параллельно с" (не уверен, если это действительно поможет использование многоядерных процессоров).

В Gradle скрипты, "и построить.(модуль: приложения) и quot градля;:

defaultConfig {
    ...
   // keep min high so that restarted apps can be hotswapped...obviously, this is hugely faster.
   minSdkVersion 14
   ...
    // enabling multidex support...does make big difference for me.
    multiDexEnabled true

Также в Gradle скрипты "Ну градля.(свойства проекта) и quot свойств;:

орг.градля.jvmargs=-Xmx3048m -начала XX:MaxPermSize=512m памяти -начала XX:+HeapDumpOnOutOfMemoryError -единственный способ иметь установленный.кодировка=кодировка UTF-8

орг.градля.параллельно=истина орг.градля.демон=истина

Дополнительно, тестирование на физическое устройство, а не эмулятор хорошо работает для меня, маленький планшет, который встает удобно.

Комментарии (0)

Эта установка идет очень быстро для меня (около 2 секунд сборка)

сборки.Gradle в

android {

    dexOptions {
        incremental true
        preDexLibraries = false
        jumboMode = false
        maxProcessCount 4
        javaMaxHeapSize "6g"
    }
}

градля.свойства

org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx8192M

мой PC:

  • Процессор Интел(Р) Пентиум(Р) процессора G2030 @ 3.00 Ггц, 3000 МГц, 2 procesadores принципалов, 2 procesadores лógicos
  • х64
  • Для Microsoft Windows 7 Профессиональная
  • (ОЗУ) 16,0 ГБ

файлы проекта

  • Все находится в местной HD качестве
Комментарии (0)

Пожалуйста, выполните следующие действия.

  1. Включить автономный режим : пожалуйста, проверьте ниже экрана печати.

протокол HTTPS://i.stack.imgur.com/RF9uG.png

  1. Возможность мгновенного запуска : пожалуйста, проверьте ниже экрана печати.

протокол HTTPS://i.stack.imgur.com/mvHKJ.png

Если вы хотите узнать больше о мгновенном запуске, пожалуйста, посетите сайт разработчика Android.

Комментарии (0)

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

Комментарии (0)

Используйте это судо команды dpkg --добавить архитектуру i386 судо apt-получить обновление судо apt-получить установку libncurses5:для i386 с libstdc++6:zlib1g для i386:i386 в

https://stackoverflow.com/questions/30111443/android-studio-fails-to-build-new-project-timed-out-while-wating-for-slave-aapt/31095817#31095817

Комментарии (0)

Я'м далеко не знаток, но Gradle в моем окружении имели следующую строку .Gradle в/инит.Gradle в

gradle.projectsLoaded {
    rootProject.allprojects {
        repositories {
            mavenRepo name: 'libs-repo', url: 'http://guest-vm/artifactory/repo'
        }
    }
}

Но я понятия не имею, почему эта линия была там, но я попробуйте

gradle.projectsLoaded {
    rootProject.allprojects {
        repositories {
            mavenCentral()
        }
    }
} 

и вот наконец, я могу работать без ругани в Android студия & схема buildind Градля.

Комментарии (1)