В Android Studio 3.5 Canary добавлена ​​функция «Применить изменения», замена Instant Run.

В Android Studio 3.5 представлена ​​функция «Применить изменения», преемница функции «Мгновенный запуск» популярного инструмента разработки приложений.

В Android Studio 3.5 (в настоящее время на каналах Canary и Dev) появился новый способ внесения изменений кода в ваше приложение и мгновенного просмотра их эффектов без необходимости перезапускать приложение. Названная просто «Применить изменения», она является преемницей функции «Мгновенный запуск» в предыдущих версиях. Android-студия.

Google Блог разработчиков Android говорит следующее о применении изменений:

Применить изменения позволяет вносить изменения кода и ресурсов в работающее приложение без перезапуска приложения, а в некоторых случаях и без перезапуска текущего действия. Применить изменения заменяет Instant Run совершенно новым подходом к оптимизации сборки. Вместо переписывания байт-кода APK во время сборки функция «Применить изменения» переопределяет классы «на лету», используя инструменты среды выполнения, поддерживаемые в Android 8.0 (уровень API 26) или более поздних версиях.

Кроме того, Android Studio теперь предлагает вам решить, стоит ли перезапускать приложение или действие, когда обнаруживает, что изменения несовместимы с функцией «Применить изменения». Этот дополнительный элемент управления должен предоставить вам более последовательный и предсказуемый опыт по сравнению с поведением Instant Run.

Далее в блоге перечисляются некоторые ограничения новой функциональности. Например, устройство, на котором вы тестируете свое приложение, должно как минимум работать. Android 8.0 Oreo (уровень API 26) и есть определенные изменения кода, которые все равно потребуют перезапуска вашего приложения. Как и в случае с «Мгновенным запуском», «Применить изменения» заставит ваше приложение перезапуститься, если вы:

  • Добавление или удаление класса, метода или поля
  • Изменение манифеста
  • Изменение сигнатур методов
  • Изменение модификаторов методов или классов
  • Переименование классов
  • Изменение наследования классов
  • Добавление или удаление ресурса

В разделе «Известные проблемы» в блоге говорится, что, поскольку Google изначально отдавал приоритет стабильности над производительностью в этой новой функции, иногда запускается «Применить изменения». медленнее, чем его предшественница с функцией «Мгновенный бег». Кроме того, образы эмулятора x86_x64 не поддерживаются, а в целях отладки можно использовать только Android Pie (уровень API 28). поддерживается. Полный список ограничений и известных проблем можно увидеть по ссылке на источник ниже.

Для более подробного описания разницы между «Применить изменения» и «Мгновенным запуском» сотрудник Google из команды Android Studio рассказал следующее: Реддит:

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

Применить изменения не делает ничего подобного. Ваш APK практически одинаков, независимо от того, используете ли вы «Применить изменения» или нет. Вместо этого он полагается на новые возможности инструментария среды выполнения виртуальной машины ART для динамической перезагрузки классов и их замены во время работы приложения. Вот почему для этого требуются гораздо более новые версии Android.

Ожидается, что «Применить изменения» в конечном итоге заменит «Мгновенный запуск» в бета-версии и стабильной версии, поскольку Google улучшает ее производительность и стабильность.


Источник: Блог разработчиков Android.