9

Я продолжаю слышать мгновенный ход, обсужденный так, как будто он в отличной форме, однако мы с моей командой регулярно сталкиваемся со значительными проблемами с этой функцией и ухудшением качества кодирования из-за этого.Android Instant Run Slow Builds

Перед мгновенным запуском наши чистые сборки были ~ 1 минута 30 секунд, и после этого мы получили сборки, которые составляли ~ 25 секунд или иногда 40 секунд. В то время как мгновенный запуск действительно уменьшает количество сборок иногда до 6-12 секунд, в других случаях это приводит нас к тому, что мы получаем сумасшедшие длинные сборки, которые, как мы видели, занимают до 13 минут, что в значительной степени компенсирует любые выгоды от инкрементного компиляции.

Также кажется, что в большинстве случаев небольшие изменения по-прежнему занимают 40 секунд. Иногда это 6 секунд, но это довольно редко.

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

Android Studio 2.1.1, Android Plugin 2,1

multiDexEnabled true 

dexOptions { 
    preDexLibraries true 
    javaMaxHeapSize "4g" 
    maxProcessCount 4 
    incremental true 
    dexInProcess true 
} 

org.gradle.daemon=true 
org.gradle.parallel=true 
org.gradle.jvmargs=-Xmx6g -XX:MaxPermSize=512m 

ли мы делаем что-то неправильно, или кто-нибудь нашел работу вокруг?

EDIT: Несколько разработчиков, похоже, сталкиваются с этим. Я отслеживаю a bug here. Не стесняйтесь снимать его и добавлять к обсуждению.

+1

Не то, чтобы это был ответ, но мы решили удержаться от использования функции мгновенного запуска до тех пор, пока у них не возникнут некоторые из кажущихся изломов. У нас были непоследовательные проблемы, и они, несомненно, противоречили идее эффективного развития. – zgc7009

+3

* «... как будто он в отличной форме» *. Добро пожаловать в мир Android Studio PR. Команда AS выпускает новые функции, которые просто не готовы к прайм-тайм, с убеждением, что разработчики просто «привыкают к этому» - Instant Run не является исключением (извините за каламбур). Мой опыт в том, что AS, похоже, постепенно ухудшается с каждым выпуском ... – adelphus

+0

У ADT была лучшая скорость выполнения, чем у Studio (при создании проектов apk и загрузки). Добавление дополнительных функций в каждую версию делает [android studio] (http://i.imgur.com/rpNOMyW.png), чтобы стать [ память eater] (http://i.imgur.com/1YwkS8y.png). – Gattsu

ответ

1

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

  1. Мы выяснили, что Lombok вызывал утечку памяти в демоне с мгновенным запуском. Мы идентифицировали утечку памяти, потому что, используя недавно разогретый демон, наша сборка займет около 15 секунд, но через час после создания приложения с изменениями наша сборка начнет принимать> 1 минуту для самых простых изменений. Мы обнаружили, что миграция нашего приложения с ломбока устраняет утечку памяти.
  2. Мы прекратили использование горячего и теплого обмена мгновенными сообщениями. Мы обнаружили, что они часто вызывают ошибки или проблемы, не говоря уже о том, что вам нужно обратить внимание на то, нужно ли перезаписывать Application или нет. Вместо этого мы начали использовать функцию «холодной замены». Холодная свопа запускается кнопкой «Повторить», которая находится на 4 кнопках справа от кнопки воспроизведения/запуска в Android Studio. Это кнопка остановки со стрелкой, выходящей с левой стороны и поднимающейся вверх. Холодная замена кода в мгновенном режиме оказалась более надежной, и она также выполняет полный перезапуск приложения, по существу действуя как обычная сборка, за исключением более быстрого.
  3. Обновление до последней версии плагина Android Studio. Плагин стал лучше. У него все еще есть проблемы, но это лучше. Я ожидаю, что исправлены ошибки с плагином. 2.3

В целом это все еще не идеально. Мне все еще приходится терпеть странные проблемы с сборкой, и иногда они делают чистку. Все еще чувствует себя как бета-версия.