Android Instant Run Slow Builds

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

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

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

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

Android Studio 2.1.1, Android-плагин 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

Мы что-то делаем не так, или кто-нибудь нашел обходной путь?

РЕДАКТИРОВАТЬ: несколько разработчиков, кажется, сталкиваются с этим. Я отслеживаю здесь ошибку. Почувствуйте бесплатно отметить его и добавить в обсуждение.


person spierce7    schedule 19.05.2016    source источник
comment
Не то чтобы это был ответ, но мы решили отложить использование функции мгновенного запуска до тех пор, пока не будут устранены некоторые очевидные недостатки. У нас возникали противоречивые вопросы, и они определенно противоречили идее эффективного развития.   -  person zgc7009    schedule 20.05.2016
comment
... как будто он в отличной форме. Добро пожаловать в мир Android Studio PR. Команда AS выпускает новые функции, которые просто не готовы к прайм-тайму, с верой в то, что разработчики просто привыкнут к этому — Instant Run не является исключением (извините за каламбур). По моему опыту, AS с каждым выпуском становится все хуже...   -  person adelphus    schedule 20.05.2016
comment
У ADT была лучшая скорость выполнения, чем у Studio (при создании apk и загрузке проектов). Добавление дополнительных функций в каждый выпуск делает Android Studio, чтобы стать пожирателем памяти.   -  person Maveňツ    schedule 07.12.2016
comment
Я обнаружил, что движение градиента в целом было намного лучше. Мои сборки стали более гибкими, и общее время сборки значительно сократилось. Меня устраивает, что AndroidStudio/IntelliJ потребляет столько памяти, сколько хочет. Вот почему IDE может быть такой быстрой. Память нынче стоит очень дешево. На всех моих компьютерах за последние 5 лет было не менее 16 ГБ оперативной памяти.   -  person spierce7    schedule 07.12.2016


Ответы (1)


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

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

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

person spierce7    schedule 07.12.2016