Подтвердить что ты не робот

Android Studio использует 100% -ый процессор на процессоре i7 для проекта Rebuild

Мой компьютер с Windows 7 имеет четырехъядерный процессор i7. Когда я перестраиваю свой проект, он занимает в среднем 25 секунд. И когда я запускаю приложение, он занимает в среднем 36 секунд (до того, как приложение будет загружено на устройство).

У меня есть 588 файлов в моей папке project/src, которая включает в себя все мои java и xml-коды. У меня есть два файла .so для каждого 5 МБ и 7 банок в папке /libs.

См. прикрепленный снимок экрана. Как вы можете видеть, мой процессор полностью отключен на 100%. Моя музыка iTunes приостанавливается, и я получаю всплывающее окно "Плохая производительность" в нижнем правом углу панели задач Windows. Это так плохо.

Я использую Android Studio 1.2.1.1

Большая часть времени проводится во время операций preDex и dex.

Вот что я пробовал до сих пор (отдельно, я не пробовал их все вместе):

  • добавление gradle.properties → "org.gradle.daemon = true"
  • Энергосбережение
  • Режим Invalidate Caches/
  • Restart Global Gradle Настройки → Offline
  • work Compiler → Сделать проект автоматически

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

Я думаю, мои вопросы:

  • Возможно ли это из-за размера моих банок или таких файлов?
  • Я взял проект, у которого было много вложенных представлений в файлах XML. Может ли это быть проблемой?

Я действительно занимаюсь соломинками, поэтому, если у кого-то есть какая-либо информация, особенно, почему операция dex занимает так много CPU, это было бы потрясающе.

Я думаю, само собой разумеется, что это происходит, если я редактирую XML файл, делаю пересоздание, а затем запускаю приложение. Если нечего чистить и перестраивать... когда я просто делаю проект... среднее время сборки составляет 3 секунды.

enter image description here

4b9b3361

Ответ 1

Вот три улучшения, которые я смог сделать:

Я каждый раз, когда строил проект, я предварительно разбирал свои JAR, поэтому нашел это решение:

dexOptions {
    preDexLibraries = false
}

Я использовал всю библиотеку Служб Google Play:

compile('com.google.android.gms:play-services:+') {
    exclude module: 'support-v4'
}

Когда мне было нужно, Google Cloud Messenger:

compile('com.google.android.gms:play-services-gcm:+') {
    exclude module: 'support-v4'
}

В Eclipse я всегда делал Rebuild, а затем запускал приложение с кнопкой воспроизведения. В Android Studio теперь я просто делаю "Чистое", а затем запускаю приложение с кнопкой воспроизведения. Кроме того, кнопка Run в Android Studio не работает каждый раз сразу после Clean. Это вызывало задержки, потому что ничего не происходило. Итак, теперь я оставляю консоль Gradle открытой, чтобы убедиться, что кнопка запуска работает, а когда это не так, я просто ударил ее второй раз.

Что я имел обыкновение иметь:

Rebuild: 26 seconds
Launch:  36 seconds
Install: 15 seconds

и теперь:

Clean:    8 seconds
Launch:  22 seconds
Install: 15 seconds

что является существенным улучшением! Надеюсь, это поможет кому-то другому.

Ответ 2

Как указано на странице для этой проблемы, команда определила это как проблему:

- параллельные потоки применяются только к параллелизации проекта.

Для задач, которые выполняются параллельно, мы всегда создаем как возможно много потоков

На странице, похоже, они нацелены на выпуск 1.3 для решения этой проблемы (см. комментарий № 13 там).

Тем временем, что помогло мне справиться с Windows 7, это установить близость процессора к процессу Android Studio (и его дочерним процессам), чтобы сэкономить по крайней мере один из ядер (как предложено в комментарии № 9 на страница).

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

Ответ 3

Помимо оптимизаций, специфичных для Gradle (см. Ниже), я рекомендую попробовать отключить антивирусную защиту для каталога кэшей Gradle и каталога проекта Android Studio. Для меня это сокращает время сборки примерно на 50%. Также может помочь исключение тех же каталогов из поиска Windows.

Оптимизация Gradle, которую я использую, в ~/.gradle/gradle.properties.

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx6144m <-- Tweak this based on available RAM
org.gradle.caching=true
org.gradle.parallel=true
kotlin.incremental=true

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

#!/bin/bash

# Clean Android cache
./gradlew cleanBuildCache

# Clean Gradle cache, prompting for each directory
find ~/.gradle/caches -maxdepth 1 -name build-cache* -print -exec rm -rfI {} \;

# Clean Project
./gradlew clean

# Stop Gradle Daemon
./gradlew --stop

Ответ 4

Честно говоря, Android Studio - это лучше, чем Eclipse, благодаря дизайну интерфейса. Недостатком является то, что он использует gradle вместо Ant. gradle также лучше, но медленнее - особенно в Windows. Он работает намного лучше в Linux. Если вы раньше не использовали Linux, не бойтесь. Linux Mint - стабильная ОС, имеющая пользовательский интерфейс, который похож на Windows. Вы скоро будете дома. Он потребляет меньше ресурсов, что позволяет увеличить вычислительную мощность для сборки gradle. Сделайте переключатель. Вы никогда не вернетесь.