Android Studio-Gradle инкрементная сборка
В последние несколько дней я пытался улучшить время сборки для нашего проекта, но безуспешно. Я не против того, чтобы ждать 1m40s для чистой сборки, но если я вставляю одну строку в один файл java, я получаю то же время сборки, что и в чистой сборке. Я, должно быть, делаю что-то не так, но я просто не могу найти никакой документации или вопрос переполнения стека, который указывает мне в правильном направлении. Мне удалось собрать кучу информации, которую я сосредоточу здесь в надежде, что кто-то с лучшее понимание темы объясните мне, почему я получаю эти ужасные времена сборки.
Вот оно:
-
Я понимаю, что эта опция в моей сборке.файл грэдла - это то, что я ищу.
android { dexOptions { incremental true } ...
Великолепная инкрементная сборка. Однако это не работает для меня, по-видимому, потому что мой проект использует функцию multidex для ретросовместимости с версиями android до Lollipop.
-
Прогуард на помощь! С помощью Proguard я могу минимизировать свой исполняемый файл и удалите все неиспользуемые методы. Я получил пару ошибок с proguard minify, но смог настроить его должным образом и заставить его работать. Отлично! Генерация Dex занимает около 20 секунд для каждой сборки. К сожалению, ничего не дается бесплатно, и задача proguard gradle занимает около 2m50s для запуска. Даже хуже, чем в моем первом случае.
3 ответа:
Наконец-то нашли решение. Это было в официальных документах все время, мне просто нужно было глубже понять процесс сборки, чтобы понять, что было сказано.
Инкрементные сборки и многодексные действительно несовместимы. Однако для sdk версии 21+ инкрементные сборки возможны для многодексных apk путем перестроения только затронутых файлов dex. Дополнительную информацию можно найти здесь:
У меня нет прямого ответа, как решить проблему с Gradle, но у меня есть предложение, которое может помочь вам увеличить скорость ваших сборок.
Недавно я столкнулся с той же проблемой: наша сборка заняла почти 4 минуты. Я пробовал разные варианты сборки, но не получил заметной прибыли.
После некоторых исследований я натыкаюсь на Jrebel для Android. Это что-то вроде "мгновенного бега" на стероидах. Он поддерживает множество типов изменений (пользовательский интерфейс, методы, поля и т. д.) и обновляет приложение в режиме реального времени без воссоздания активности (следовательно, сохранения состояния). Обычно требуется десять-тридцать секунд, чтобы применить любое изменение.Инструмент не является бесплатным, но они предоставляют различные варианты ценообразования и пробный аккаунт, так что вы можете попробовать его. Он работает как обычный плагин для Android Studio или Eclipse и установка очень проста.
Обновить
Теперь у них есть даже бесплатная версия: Ссылка на пост
Я попробовал эту опцию сегодня (13 ноября 2017 года) и получил следующее предупреждение о сборке:
Предупреждение: свойство
android.dexOptions.incremental
устарело и не влияет на процесс сборки.Затем я поискал в гугле сообщение с предупреждением, и ответ подтвердил, что с момента выпуска нового Gradle запись является устаревшей. Смотрите android.дексоптионы.инкрементное свойство устарело