Android Studio 3.5 Canary dodaje opcję „Zastosuj zmiany”, zamiennik funkcji Instant Run

W Android Studio 3.5 wprowadzono Apply Changes, następcę funkcji Instant Run popularnego narzędzia do tworzenia aplikacji.

Android Studio 3.5 (obecnie w kanałach Canary i Dev) oferuje teraz nowy sposób przesyłania zmian w kodzie do aplikacji i sprawdzania ich efektów na bieżąco, bez konieczności ponownego uruchamiania aplikacji. Nazywany po prostu „Zastosuj zmiany” i jest następcą funkcji „Natychmiastowe uruchamianie” z poprzednich wersji Studio Androida.

Google'a Blog programistów Androida mówi co następuje o Zastosuj zmiany:

Zastosuj zmiany umożliwia wypchnięcie zmian w kodzie i zasobach do działającej aplikacji bez ponownego uruchamiania aplikacji, a w niektórych przypadkach bez ponownego uruchamiania bieżącego działania. Apply Changes zastępuje Instant Run zupełnie nowym podejściem do optymalizacji kompilacji. Zamiast przepisywać kod bajtowy pliku APK w czasie kompilacji, Apply Changes na bieżąco definiuje klasy na nowo, wykorzystując instrumentację środowiska wykonawczego obsługiwaną w systemie Android 8.0 (poziom API 26) lub nowszym.

Ponadto Android Studio wyświetla teraz monit o podjęcie decyzji, czy ponownie uruchomić aplikację lub działanie, gdy wykryje, że zmiany nie są zgodne z funkcją Zastosuj zmiany. Ta dodatkowa kontrola powinna zapewnić bardziej spójne i przewidywalne wrażenia w porównaniu z zachowaniem Instant Run.

W dalszej części wpisu na blogu wymieniono pewne ograniczenia nowej funkcjonalności. Na przykład urządzenie, na którym testujesz aplikację, musi przynajmniej działać Android 8.0 Oreo (poziom API 26) istnieją pewne zmiany w kodzie, które nadal będą wymagały ponownego uruchomienia aplikacji. Podobnie jak w przypadku „Natychmiastowego uruchomienia”, „Zastosuj zmiany” wymusi ponowne uruchomienie aplikacji, jeśli:

  • Dodawanie lub usuwanie klasy, metody lub pola
  • Zmiana manifestu
  • Zmiana sygnatur metod
  • Zmiana modyfikatorów metod lub klas
  • Zmiana nazw klas
  • Zmiana dziedziczenia klas
  • Dodawanie lub usuwanie zasobu

W sekcji „Znane problemy” w poście na blogu znajduje się informacja, że ​​ponieważ w przypadku tej nowej funkcji Google początkowo przedłożył stabilność nad wydajnością, czasami zostanie uruchomiona funkcja „Zastosuj zmiany” wolniej niż poprzednia funkcja „Natychmiastowe uruchamianie”. Ponadto obrazy emulatorów x86_x64 nie są obsługiwane, a do celów debugowania dostępny jest tylko system Android Pie (poziom interfejsu API 28) utrzymany. Pełną listę ograniczeń i znanych problemów można zobaczyć pod linkiem źródłowym poniżej.

Aby uzyskać bardziej szczegółowy opis różnicy między „Zastosuj zmiany” a „Natychmiastowym uruchomieniem”, pracownik Google z zespołu Android Studio powiedział to w dniu Reddit:

Robi coś bardzo, bardzo innego. Funkcja Instant Run miała bardzo specyficzny wpływ na kompilację, instrumentując każdą z klas w czasie kompilacji, aby przygotować je do zastąpienia w czasie wykonywania nową wersją klasy. Podzielił także plik APK na kilka plików APK, aby ponownie przesyłać aplikację stopniowo.

Zastosuj zmiany nie robi nic podobnego. Twój plik APK jest bardzo taki sam, niezależnie od tego, czy używasz Zastosuj zmiany, czy nie. Zamiast tego opiera się na nowych możliwościach instrumentacji wykonawczej maszyny ART VM w celu dynamicznego przeładowywania klas i zastępowania ich podczas działania aplikacji. Dlatego wymaga znacznie nowszych wersji Androida.

Oczekuje się, że opcja „Zastosuj zmiany” ostatecznie zastąpi opcję „Natychmiastowe uruchomienie” w wersjach beta i stabilnej, ponieważ Google ulepszy jej wydajność i stabilność.


Źródło: Blog programistów Androida