Intereting Posts
Как добавить пользовательские представления в новый NavigationView Android: Получить представление Ссылка на пункт меню Декодировать объекты HTML в android Ионный номер телефона пользователя Различное поведение для FillType.EVEN_ODD при добавлении CornerPathEffect? Ошибка: выполнение выполнено для задачи ': app: dexDebug'. com.android.ide.common.process.ProcessException Как изменить цвет текста по умолчанию с помощью настраиваемой темы? «Недопустимое состояние» при загрузке видео vimeo из другого приложения для Android Стиль Android 4.4 полупрозрачного статуса и стиля навигации на Android 5.0 Как удалить значение по умолчанию в spinner android? Как сделать ход для 3 сторон для формы в андроиде? Навигация фрагмента Android для планшетов – однократная или многократная работа? Android: Kotlin с Butterknife Android UnsupportedOperationException: невозможно преобразовать в цвет: type = 0x2 Как использовать собственный вид в макете?

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

У меня есть мультипроект (~ 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 } } 

Solutions Collecting From Web of "Создание и запуск приложения через Gradle и Android Studio происходит медленнее, чем через Eclipse"

аппаратные средства

Извините, но модернизация станции разработки на SSD и тонны барана, вероятно, оказывают большее влияние, чем точки ниже комбинированного.

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

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

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

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

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

Append:

 # IDE (eg 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 . Свойства применяются, если вы запускаете задачи градации с консоли или непосредственно из идеи:

Настройки IDE

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

Настройки IDE

Родные мультидексы

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

зависимости

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

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

антивирус

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

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

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

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

Введите описание изображения здесь

Для Windows, работающей под управлением Android Studio 1.5: File -> Settings -> Build, Execution, Deployment -> Build tools -> Gradle -> Check Offline work (as shown in image)

От ~ 30 + сек до ~ 3 с

Искал везде для этого и, наконец, нашел решение, которое работает для нас. Включение параллельных построений (В 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/

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

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

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

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

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

вместо:

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

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

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

  • Multidex build (с поддержкой библиотеки) ~ 40 секунд
  • Proguard build ~ 20sec
  • Строить при ограничении метода <64k ~ 5 секунд

Если разрабатывать на sdk 21+, можно было бы оптимизировать сборку multidex, как указано в документации по Android

 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 } } ... } 

Принятый ответ – для старых версий андроид-студии, и большинство из них работает до сих пор. Обновление студии Android сделало ее немного быстрее. Не беспокойтесь указывать размер кучи, поскольку он будет увеличиваться автоматически с увеличением Xms и Xmx. Вот некоторые изменения в VMoptions

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

     -Xms4096m -Xmx4096m -XX:MaxPermSize=2048m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=utf-8` 
  2. Запустите студию Android. Перейдите в раздел Файл-> Настройки-> Сборка, выполнение, развертывание-> Компилятор

    • Проверять параллельные независимые модули
    • В командной строке Параметры пишут: –offline
    • Проверить Сделать проект автоматически
    • Проверить настройку по требованию

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

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

 open -e /Applications/Android\ Studio.app/Contents/bin/studio.vmoptions 

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

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

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

 org.gradle.daemon=true 

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

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

Ускорение ускорения роста в Android Studio 2

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

Шаг 1. Обновление версии Gradle. Более простой способ выполнить это – перейти к: Открыть настройки модуля (ваш проект)> Структура проекта

Введите описание изображения здесь

ОБНОВИТЬ

Переход на версию для Gradle: 3.1 Изменение в Android Plugin Версия: 2.2.3

Введите описание изображения здесь

Загрузите дистрибутив Gradle Release из https://services.gradle.org/distributions/gradle-3.1-all.zip и скопируйте его в папку Gradle:

Введите описание изображения здесь

Последний шаг – добавить свое объяснение в Настройки> Gradle

Введите описание изображения здесь

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

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

Введите описание изображения здесь

  1. Перейдите в Компилятор из студии android studio и добавьте «- offline» в поле командной строки и нажмите «Скомпилировать независимые модули параллельно».

Введите описание изображения здесь

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

Введите описание изображения здесь

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

 # 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 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 и tweak. Вы можете ускорить сборку, включив инкрементное дешинирование. В файле сборки модуля:

Введите описание изображения здесь

Добавьте этот вариант в свой блок Android:

 dexOptions { incremental true } 

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

 dexOptions { incremental true javaMaxHeapSize "12g" } 

Где «12 г» – 12 ГБ памяти. Дополнительную информацию об этом можно найти здесь google.github.io/android-gradle-dsl/current/. Вы также можете настроить параметры 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: Отключить антивирус Попробуйте исключить файлы проекта и кеша из антивирусного сканирования. Это, очевидно, компромисс с безопасностью. Но если вы переключаетесь между филиалами много, тогда антивирус будет повторно сканировать файлы, прежде чем разрешить использовать процесс градации, что замедляет время сборки (в частности, проект синхронизации Android Studio с файлами градиентов и задачами индексирования). Измерьте время сборки и процесс процессора с антивирусом и без него, чтобы узнать, связано ли это. Надеюсь, это поможет. Оставьте комментарий, если у вас есть какие-либо вопросы или какие-то другие советы по улучшению производительности сборки.

Полезная ссылка

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

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

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

  • Перейдите в Управление версиями в настройках и установите значение Subversion в None. Введите описание изображения здесь

Обновление после Android Studio 2.3

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

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

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

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

Добавьте следующую строку в файл gradle.properties

 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 для более легкой очистки кеша сборки. Вы можете использовать его, введя в своем терминале следующее:

    ./gradlew cleanBuildCache

  • ИЛИ Вы можете очистить кеш для Android studio 2.2, удалив все файлы, хранящиеся в местоположении

    C:\Users\<username>\.android\build-cache

Решили шахту с

File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Offline work

Gradle строит от 8 минут до 3 секунд.

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

Шаг 1:

Настройки (ctrl + Alt + S) ->

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

Компилятор ->

--offline « --offline » в командной строке «Параметры».

Шаг 2:

Установите флажок «Скомпилировать независимые модули параллельно».

И нажмите «Применить» -> «ОК».

Введите описание изображения здесь

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

Недостаток:

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

Важное примечание . При развертывании приложения удалите эти параметры и создайте с помощью последних версий зависимостей.

Следуйте приведенным ниже инструкциям.

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

    /images//RF9uG.png

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

    /images//mvHKJ.png

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

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

Первоначальные сборки все еще могут быть жестоко медленными, но перезапуск приложений теперь, как правило, очень переносим. Я использую неоптимальный ПК: AMD Quad-Core A8-7410 CPU, 8 МБ оперативной памяти, не SSD HD, Win 10. (И это моя первая публикация Stack Overflow ….;)

IN SETTINGS -> GRADLE:

Да для «Офлайновой работы» (это, пожалуй, самая важная настройка).

IN SETTINGS -> COMPILER:

Yes для «Скомпилировать независимые модули параллельно» (не уверен, что это действительно помогает использовать многоядерные процессоры).

В GRADLE SCRIPTS , "build.gradle (Module: app)":

 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 SCRIPTS , «gradle.properties (Свойства проекта)»:

Org.gradle.jvmargs = -Xmx3048m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8

Org.gradle.parallel = true org.gradle.daemon = true

Кроме того , тестирование на физическом устройстве вместо эмулятора хорошо работает для меня; Маленькая таблетка, которая встает, удобна.

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

Я далек от того, чтобы быть экспертом в Gradle, но в моей среде была следующая строка в .gradle / init.gradle

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

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

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

И теперь я, наконец, могу работать без приведения в действие схемы Android Studio & Gradle buildind.

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

Удаление retrolamba зафиксировало это для нас. Надеюсь, это поможет кому-то.

Просто попробуй это первым. Это мой личный опыт.

У меня такая же проблема. То, что я сделал, просто отключает антивирус (Mine был Avast Security 2015). Сразу после отключения антивируса все пошло хорошо. Град завершился успешно. Отныне в течение нескольких секунд град заканчивается (всего 5-10 секунд).

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

 compile 'com.android.support:support-v4:23.1.1' 

В моем приложении Gradle dependency
Но в одной из моих библиотек это было

  compile 'com.android.support:support-v4:23.0.1' 

После изменения все до последней версии моя проблема решена.

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

build.gradle

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

gradle.properties

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

Мой компьютер:

  • Процессор Intel (R) Pentium (R) Процессор G2030 @ 3,00 ГГц, 3000 МГц, 2 процессора, 2 процессора, lógicos
  • x64
  • Microsoft Windows 7 Professional
  • (ОЗУ) 16,0 ГБ

Файлы проекта
– Все, что находится в локальном HD

ИСПОЛЬЗУЙТЕ эту sudo dpkg –add-architecture i386 sudo apt-get update sudo apt-get install libncurses5: i386 libstdc ++ 6: i386 zlib1g: i386

Android Studio не может создать новый проект, приуроченный к работе в режиме slave aapt

Тривиальное изменение (для resoruse xml) все равно заняло 10 минут . Как говорит @rivare в своем ответе, сборка командной строки работает быстрее (это сократилось до 15 секунд ).
Вот несколько шагов, чтобы как минимум сделать тривиальную сборку быстро из командной строки для Windows.

  1. Перейдите в свой проект root (где находится gradlew.bat):

    Cd c: \ android \ MaskActivity

  2. Выполните сборку :

    Gralew assembleDebug

  3. Удалите apk с телефона напрямую (перетащите его, чтобы удалить).

  4. Когда сборка завершена, уничтожьте BIG java-процесс с помощью диспетчера задач Windows.

ИЛИ если у вас есть инструменты unix на вашей машине Windows:

 ps 

«Pid» показаны:

 kill -9 <pid> 
  1. Теперь установите apk:

    Adb -d install C: \ Android \ MaskActivity \ app \ build \ output \ apk \ app-debug.apk

Согласно документации по android , добавьте это в файл gradle модуля приложения.

 android { ... dexOptions { preDexLibraries true maxProcessCount 8 } } 

После этого шаги сделают это в 10 раз быстрее и сократят время сборки на 90%

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

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

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

 org.gradle.daemon=true org.gradle.parallel=true 

И проверьте эти параметры в Android Studio

Введите описание изображения здесь