Programowanie iteracyjne

Jako programista aplikacji mobilnej często opracowujesz interfejs aplikacji krok po kroku, zamiast pisać wszystko od razu. Android Studio wykorzystuje to podejście w Jetpack Compose, udostępniając narzędzia, które nie wymagają pełnej kompilacji do sprawdzania, modyfikowania wartości i sprawdzania końcowego wyniku.

Edycja na żywo

Edycja na żywo to funkcja, która umożliwia aktualizowanie funkcji kompozycyjnych w emulatorach i urządzeniach fizycznych w czasie rzeczywistym. Ta funkcja minimalizuje przechodzenie w kontekście między pisaniem a tworzeniem aplikacji, pozwalając Ci skupić się na pisaniu kodu dłużej bez zakłóceń.

Edytowanie na żywo ma 3 tryby:

  • Ręcznie: zmiany w kodzie są stosowane ręcznie za pomocą kombinacji klawiszy Control+\ (Command+\ w systemie macOS)
  • Ręczne zapisywanie: zmiany w kodzie są stosowane ręcznie, jeśli zapiszesz je ręcznie za pomocą skrótu Control+S (Command+S w systemie macOS).
  • Automatycznie: zmiany są stosowane w urządzeniu lub emulatorze podczas aktualizowania funkcji kompozycyjnej.

Edycja na żywo koncentruje się na zmianach w kodzie związanych z interfejsem użytkownika i wrażeniami użytkownika. Edycja na żywo nie obsługuje zmian takich jak aktualizacja podpisu metody, dodawanie nowych metod czy zmiany hierarchii klas. Więcej informacji znajdziesz na liście ograniczeń funkcji Live Edit.

Ta funkcja nie zastępuje tworzenia i uruchamiania aplikacji ani stosowania zmian. Ma ona natomiast optymalizować przepływ pracy podczas kompilowania, wdrażania i iteracji tworzenia interfejsu Compose.

Sposób postępowania ze sprawdzonymi metodami jest następujący:

  1. Skonfiguruj aplikację w taki sposób, aby mogła zostać uruchomiona.
  2. Tak długo, jak to możliwe, aż musisz wprowadzić zmianę, której nie obsługuje Live Edit, np. dodać nowe metody w czasie działania aplikacji.
  3. Po wprowadzeniu nieobsługiwanej zmiany kliknij Uruchom Ikona Uruchom, aby ponownie uruchomić aplikację i wznowić edycję na żywo.

Wprowadzenie do edycji na żywo

Wykonaj te czynności, aby utworzyć puste działanie tworzenia wiadomości, włączyć w projekcie edycję na żywo, a potem wprowadzić zmiany w ramach tej funkcji.

Skonfiguruj nowy projekt

  1. Zanim zaczniesz, upewnij się, że masz zainstalowaną aplikację Android Studio Giraffe lub nowszą, a poziom interfejsu API urządzenia fizycznego lub emulatora wynosi co najmniej 30.

  2. Otwórz Android Studio i wybierz Nowy projekt w oknie Witamy w Android Studio. Jeśli masz już otwarty projekt, możesz utworzyć nowy, klikając Plik > Nowy > Nowy projekt.

  3. Wybierz szablon Pusta aktywność tworzenia wiadomości dla opcji Telefon i tablet, a następnie kliknij Dalej.

    Wybór szablonów w Android Studio
    Rysunek 1. Szablony do wyboru. W przypadku edycji na żywo wybierz Puste działanie tworzenia wiadomości.
  4. W oknie Nowy projekt podaj wymagane informacje: nazwę, nazwę pakietu, zapisanie lokalizacji, minimalny pakiet SDK i język konfiguracji kompilacji.

    Przykładowe ustawienia projektu z kroku 4 wprowadzone w Android Studio
    Rysunek 2. Przykładowe ustawienia projektu.
  5. Kliknij Zakończ.

Włącz edycję na żywo

  1. Przejdź do ustawień, aby włączyć edycję na żywo.

    • W systemach Windows i Linux wybierz Plik > Ustawienia > Edytor > Edycja na żywo.
    • W systemie macOS otwórz Android Studio > Ustawienia > Edytor > Edycja na żywo.
  2. Wybierz opcję edycji na żywo i tryb, który chcesz uruchomić w ustawieniach.

    W trybie ręcznym zmiany w kodzie są przekazywane po każdym naciśnięciu klawisza Control+\ (Command+\ w systemie macOS). W trybie ręcznym podczas zapisywania zmiany w kodzie są stosowane za każdym razem, gdy zapisujesz ręcznie pliki za pomocą kombinacji klawiszy Control + S (Command + S w systemie macOS). W trybie automatycznym zmiany w kodzie są stosowane w urządzeniu lub emulatorze podczas ich wprowadzania.

    Interfejs pola wyboru edycji na żywo w ustawieniach Android Studio
    Rysunek 3. Ustawienia edycji na żywo.
  3. W edytorze otwórz plik MainActivity, który jest punktem wejścia aplikacji.

  4. Kliknij Uruchom Przycisk UI, aby wdrożyć aplikację.

  5. Gdy włączysz edycję na żywo, w prawym górnym rogu okna narzędzia Uruchomione urządzenia pojawi się zielony znacznik wyboru Aktualizacja:

    Interfejs edycji na żywo z zielonym znacznikiem wyboru

Wprowadź i sprawdź zmiany

Gdy wprowadzisz obsługiwane zmiany w edytorze, wirtualne lub fizyczne urządzenie testowe zostanie automatycznie zaktualizowane.

Na przykład zmień istniejącą metodę Greeting w MainActivity na taką:

@Composable
fun Greeting(name: String) {
    Text(
        text = "Hello $name!",
        Modifier
            .padding(80.dp) // Outer padding; outside background
            .background(color = Color.Cyan) // Solid element background color
            .padding(16.dp) // Inner padding; inside background, around text)
    )
}

Wprowadzone zmiany są od razu widoczne na urządzeniu testowym, jak widać na ilustracji 4.

Zmiany w metodzie powitania zastosowane na urządzeniu
Rysunek 4. Urządzenie testowe wyświetla zmiany podczas edycji na żywo w metodzie Greeting.

Rozwiązywanie problemów z funkcją Live Edit

Jeśli nie widzisz wprowadzonych zmian na urządzeniu testowym, możliwe, że w Android Studio ich nie udało się zaktualizować. Sprawdź, czy wskaźnik edycji na żywo zawiera komunikat Nieaktualny (jak na ilustracji 5), co oznacza błąd kompilacji. Aby uzyskać informacje o błędzie i sugestie dotyczące jego rozwiązania, kliknij wskaźnik.

Ikona nieaktualnej edycji na żywo
Rysunek 5. Wskaźnik stanu edycji na żywo.

Ograniczenia funkcji Live Edit

Poniżej znajduje się lista bieżących ograniczeń.

  • [Dotyczy tylko aplikacji Android Studio Giraffe i nowszych] Edycja na żywo wymaga środowiska wykonawczego tworzenia w wersji 1.3.0 lub nowszej. Jeśli w Twoim projekcie jest używana niższa wersja funkcji Utwórz, edycja na żywo jest wyłączona.

  • [Dotyczy tylko aplikacji Android Studio Giraffe i nowszych] Edycja na żywo wymaga standardu AGP w wersji 8.1 lub nowszej. Jeśli Twój projekt używa starszej wersji interfejsu AGP, edycja na żywo jest wyłączona.

  • Edytowanie na żywo wymaga fizycznego urządzenia lub emulatora z interfejsem API na poziomie 30 lub wyższym.

  • Live Edit obsługuje tylko edytowanie treści funkcji, co oznacza, że nie można zmienić nazwy funkcji ani podpisu, dodawać ani usuwać funkcji ani zmieniać pól niebędących funkcjami.

  • Edycja na żywo resetuje stan aplikacji, gdy po raz pierwszy zmienisz funkcję tworzenia wiadomości w pliku. Dzieje się tak tylko po pierwszej zmianie kodu – stan aplikacji nie jest resetowany przez kolejne zmiany w kodzie funkcji tworzenia wiadomości w tym pliku.

  • Zajęcia zmodyfikowane na żywo, które zostały zmodyfikowane, mogą spowodować obniżenie wyników. Jeśli oceniasz jej wydajność, uruchom aplikację i użyj czystej kompilacji wersji.

  • Musisz wykonać pełne uruchomienie, aby debuger mógł operować na klasach zmodyfikowanych za pomocą edycji na żywo.

  • Uruchomiona aplikacja może ulec awarii, gdy edytujesz ją za pomocą funkcji edycji na żywo. Jeśli tak się stanie, możesz ponownie wdrożyć aplikację za pomocą przycisku Uruchom Przycisk.

  • Live Edit nie wykonuje żadnej operacji na kodzie bajtowym zdefiniowanej w pliku kompilacji projektu. Dotyczy to na przykład operacji związanych z kodami bajtowymi, które zostałyby zastosowane podczas tworzenia projektu za pomocą opcji w menu Kompilowanie lub przez kliknięcie przycisku Kompilacja lub Uruchom.

  • Funkcje inne niż kompozycyjne są aktualizowane na bieżąco w urządzeniu lub emulatorze i aktywowana jest pełna zmiana kompozycji. Pełne przegrupowanie może nie wywoływać zaktualizowanej funkcji. W przypadku funkcji, które nie są kompozycyjne, musisz aktywować nowo zaktualizowane funkcje lub ponownie uruchomić aplikację.

  • Edycja na żywo nie jest wznawiana po ponownym uruchomieniu aplikacji. Musisz ponownie uruchomić aplikację.

  • Funkcja Live Edit obsługuje tylko procesy możliwe do debugowania.

  • Live Edit nie obsługuje projektów, które w konfiguracji kompilacji używają niestandardowych wartości dla moduleName w domenie kotlinOptions.

  • Edycja na żywo nie działa w przypadku wdrożeń z wieloma wdrożeniami. Oznacza to, że nie można jej wdrożyć na jednym urządzeniu, a potem na innym. Edycja na żywo jest aktywna tylko na ostatnim zestawie urządzeń, na których aplikacja została wdrożona.

  • Live Edit działa w przypadku wdrożeń na wielu urządzeniach (wdrożenia na wielu urządzeniach utworzone za pomocą opcji Wybierz wiele urządzeń w menu urządzeń docelowych). Nie jest on jednak oficjalnie obsługiwany i mogą występować problemy. W razie problemów zgłoś je.

  • Stosowanie zmian/stosowanie zmian kodu nie jest zgodne z funkcją Live Edit i wymaga ponownego uruchomienia aplikacji.

Najczęstsze pytania na temat edycji na żywo

  • Jaki jest obecny stan funkcji Edycja na żywo?

    Edycja na żywo jest dostępna w Android Studio Giraffe. Aby go włączyć, w systemie macOS wybierz Plik > Ustawienia > Edytor > Edycja na żywo (Android Studio > Ustawienia > Edytor > Edytowanie na żywo).

  • Kiedy warto korzystać z edycji na żywo?

    Za pomocą edycji na żywo możesz szybko sprawdzić wpływ aktualizacji elementów UX (np. aktualizacji modyfikatorów i animacji) na ogólne działanie aplikacji.

  • Kiedy nie używać funkcji edycji na żywo?

    Edycja na żywo koncentruje się na zmianach w kodzie związanych z interfejsem użytkownika i wrażeniami użytkownika. Nie obsługuje zmian, takich jak aktualizacja podpisu metody, dodawanie nowych metod czy zmiany hierarchii klas. Więcej informacji znajdziesz w sekcji Ograniczenia funkcji Live Edit.

  • Kiedy należy korzystać z podglądu wiadomości?

    Użyj tego narzędzia podczas tworzenia poszczególnych funkcji kompozycyjnych. Podgląd wizualizuje elementy Compose i automatycznie odświeża je, aby zaprezentować efekty zmian w kodzie. Podgląd umożliwia też wyświetlanie elementów interfejsu w różnych konfiguracjach i stanach, takich jak ciemny motyw, język i skala czcionek.

Edytowanie na żywo literałów (wycofane)

Android Studio może aktualizować w czasie rzeczywistym niektóre stałe literały używane w komponentach w podglądzie, emulatorze i na urządzeniu fizycznym. Oto kilka obsługiwanych typów:

  • Int
  • String
  • Color
  • Dp
  • Boolean

Film pokazujący, jak użytkownik zmienia literały w kodzie źródłowym, oraz dynamicznie aktualizowany podgląd

Możesz wyświetlić literały stałe, które wywołują aktualizacje w czasie rzeczywistym bez kroku kompilacji, włączając dekoracje literałów za pomocą wskaźnika edycji na żywo literałów w interfejsie:

Umożliwienie edycji książek na żywo

Apply Changes

Stosowanie zmian umożliwia aktualizowanie kodu i zasobów bez konieczności ponownego wdrażania aplikacji w emulatorze lub urządzeniu fizycznym (z pewnymi ograniczeniami).

Gdy dodajesz, zmieniasz lub usuwasz funkcje kompozycyjne, możesz zaktualizować aplikację bez konieczności jej ponownego wdrażania. Aby to zrobić, kliknij przycisk Zastosuj zmiany w kodzie:

Użytkownik klikający przycisk
„Zastosuj zmiany”