Android Studio 3.5 Canary додає «Застосувати зміни», заміну Instant Run

Android Studio 3.5 представляє Apply Changes, наступницю функції Instant Run популярного інструменту розробки програм.

Android Studio 3.5 (наразі на каналах Canary та Dev) тепер пропонує новий спосіб надсилати зміни коду до вашої програми та спостерігати їхні наслідки на льоту без необхідності перезапускати програму. Названа просто «Застосувати зміни», вона є наступником функції «Миттєвий запуск» у попередніх версіях Android Studio.

Google Блог розробників Android говорить наступне про застосування змін:

Застосувати зміни дає змогу надсилати зміни коду та ресурсів у запущену програму без перезапуску програми, а в деяких випадках і без перезапуску поточної діяльності. Apply Changes замінює Instant Run на абсолютно новий підхід до оптимізації збірки. Замість того, щоб переписувати байт-код вашого APK під час збирання, Apply Changes перевизначає класи на льоту, використовуючи засоби виконання, які підтримуються в Android 8.0 (рівень API 26) або вище.

Крім того, Android Studio тепер запропонує вам вирішити, чи перезапускати програму або активність, коли виявляє, що зміни несумісні з Apply Changes. Цей додатковий елемент керування має забезпечити більш послідовний і передбачуваний досвід порівняно з поведінкою Instant Run.

У дописі в блозі перелічуються деякі обмеження нової функції. Наприклад, пристрій, на якому ви тестуєте свою програму, має бути запущено Android 8.0 Oreo (рівень API 26) і є певні зміни коду, які все одно вимагатимуть перезапуску програми. Як і у випадку з «Миттєвим запуском», «Застосувати зміни» примусово перезапустить вашу програму, якщо ви:

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

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

Для більш детального опису різниці між «Застосувати зміни» та «Миттєвий запуск» співробітник Google з команди Android Studio сказав це на Reddit:

Він робить щось дуже, дуже інше. Миттєвий запуск мав дуже специфічний вплив на збірку, інструментуючи кожен з ваших класів під час компіляції, щоб підготувати їх до заміни новою версією класу під час виконання. Він також розділив ваш файл .apk на кілька файлів .apk, щоб поступово завантажувати вашу програму.

Застосувати зміни нічого не подобається. Ваш файл .apk майже не відрізняється незалежно від того, використовуєте ви Apply Changes чи ні. Замість цього він покладається на нові інструментальні можливості ART VM для динамічного перезавантаження класів і заміни їх під час роботи програми. Ось чому для цього потрібні набагато новіші версії Android.

Очікується, що «Застосувати зміни» згодом замінить «Миттєвий запуск» у бета-версії та стабільному каналі, оскільки Google покращує продуктивність і стабільність.


Джерело: блог розробників Android