Android Studio Dolphin | 1.3.2021 r. (wrzesień 2022 r.)

Oto nowe funkcje w Android Studio Dolphin.

Nowość w sekcji Utwórz

Oto nowe funkcje i ulepszenia Jetpack Compose w Android Studio.

Tworzenie koordynacji animacji

Jeśli Twoje animacje są opisane w podglądzie kompozycyjnym, możesz teraz sprawdzać i koordynować je wszystkie naraz za pomocą funkcji Podgląd animacji. Możesz też zablokować konkretną animację.

GIF przedstawiający inspekcję w interfejsie wszystkich animacji

Tworzenie adnotacji w wielu podglądzie

Możesz teraz zdefiniować klasę adnotacji, która zawiera wiele definicji podglądu i użyć tej nowej adnotacji do jednoczesnego generowania tych podglądów. Użyj tej nowej adnotacji, aby wyświetlić podgląd wielu urządzeń, czcionek i motywów jednocześnie, nie powtarzając tych definicji dla każdego elementu kompozycyjnego.

Interfejs adnotacji w wielu podglądzie

Tworzenie liczników zmian kompozycji w Inspektorze układu

Podczas debugowania układów tworzenia wiadomości warto wiedzieć, czy elementy kompozycyjne tworzą, a które nie rekomponują, ponieważ pozwala to zrozumieć, czy interfejs użytkownika jest poprawnie zaimplementowany. Jeśli na przykład będzie zbyt wiele razy komponować, może to oznaczać, że przetwarza więcej zadań, niż jest to konieczne. Z drugiej strony komponenty, które nie tworzą się ponownie w oczekiwany sposób, mogą prowadzić do nieoczekiwanych zachowań.

Inspektor układu pozwala teraz sprawdzić, kiedy odrębne lub pomijane elementy kompozycyjne w hierarchii układu zostały utworzone lub pominięte. Te informacje są widoczne, gdy używasz aplikacji. Na początek upewnij się, że aplikacja korzysta z funkcji Utwórz w wersji 1.2.0-alpha03 lub nowszej. Następnie wdróż aplikację w zwykły sposób.

Nowa kompozycja i licznik pominięć w Inspektorze układu

Otwórz okno Inspektor układu i połącz się z procesem swojej aplikacji. W drzewie komponentów obok hierarchii układu powinny pojawić się 2 nowe kolumny. Pierwsza kolumna zawiera liczbę kompozycji w każdym węźle. W drugiej kolumnie wyświetla się liczba pominięć w każdym węźle. Podobne informacje możesz też znaleźć w panelu Atrybuty po wybraniu elementu kompozycyjnego w drzewie komponentów lub widoku układu.

Jeśli chcesz zresetować licznik, kliknij Resetuj u góry panelu Drzewo składowe. Zresetowanie licznika pomoże Ci zrozumieć rekompozycje i pominięcia podczas określonej interakcji z aplikacją.

Włącz kompozycję i licznik pomijania w Inspektorze układu

Zaktualizowany asystent parowania emulatora Wear OS

Począwszy od Androida Studio Dolphin Canary 3, asystent parowania emulatora Wear OS ma ulepszone funkcje, które ułatwiają zarządzanie emulatorami Wear i ich podłączanie. Teraz możesz wykonać te czynności:

  • Listę urządzeń Wear znajdziesz w Menedżerze urządzeń.
  • Parowanie kilku urządzeń Wear z 1 telefonem wirtualnym lub fizycznym
  • Automatycznie podłączaj wcześniej sparowane urządzenia po ich uruchomieniu. Android Studio zapamiętuje i ponownie paruje ostatnią konfigurację pary.

Jeśli chcesz korzystać z tych nowych funkcji, upewnij się, że emulatory telefonu obsługują interfejs API na poziomie 30 lub wyższym i musisz mieć zainstalowany Sklep Google Play. Sprawdź też, czy emulatory Wear obsługują interfejs API na poziomie 28 lub wyższym. Aby zaktualizować emulowane urządzenia do najnowszych obrazów systemu, kliknij Narzędzia > Menedżer pakietów SDK.

Więcej informacji znajdziesz w artykule Korzystanie z asystenta parowania emulatora Wear OS.

Zaktualizowany pasek narzędzi emulatora Wear OS

Począwszy od Androida Studio Dolphin Canary 2, w przypadku emulatorów Wear z interfejsem API na poziomie 28 lub wyższym na pasku narzędzi emulatora znajdują się teraz przyciski symulujące fizyczne przyciski i typowe działania na urządzeniu. Nowe przyciski to: Przycisk 1 i Przycisk 2 (przycisk 2 dostępny tylko na poziomie API 30 i wyższym), przycisk Palma oraz przycisk Pochylenie. Oto niektóre z czynności, które możesz wykonać, korzystając z nowych przycisków w emulatorze Wear:

  • Aby ustawić na urządzeniu tryb nieaktywny, kliknij przycisk Palma.
  • Aby przywrócić na urządzeniu ostatni ekran, na którym było przed trybem nieaktywnym, kliknij przycisk Pochyl.

Więcej informacji znajdziesz w artykule o wykonywaniu typowych działań w emulatorze.

Emulator Wear z przyciskami związanymi tylko z Wear

Nowe konfiguracje uruchamiania na Wear OS

Dodaliśmy nowe konfiguracje uruchamiania i debugowania typowe dla Wear OS, np. tarcze zegarka, karty i widżety. Nowe konfiguracje możesz tworzyć w oknie dialogowym Konfiguracja uruchamiania/debugowania podczas uruchamiania aplikacji.

Więcej informacji znajdziesz w artykule Konfiguracje uruchamiania i debugowania na Wear OS.

Konfiguracje nowych wersji Wear OS

Nowy logcat

Usługa Logcat została zaktualizowana, aby ułatwić analizowanie, wysyłanie zapytań i śledzenie logów.

Nowy formater

Logcat formatuje teraz logi, aby ułatwić skanowanie przydatnych informacji, takich jak tagi i wiadomości, oraz identyfikować różne typy logów, takie jak ostrzeżenia i błędy.

Nowe formatowanie logów w Logcat

Utwórz wiele okien Logcat

W Logcat możesz teraz utworzyć wiele kart, aby łatwo przełączać się między różnymi urządzeniami i zapytaniami. Kliknięcie karty prawym przyciskiem myszy pozwala zmienić jej nazwę, a także przeciągać karty, aby zmieniać ich kolejność.

Aby ułatwić sobie porównywanie 2 zbiorów logów, możesz teraz podzielić widok na karcie. W tym celu kliknij go prawym przyciskiem myszy i wybierz Podziel w prawo lub Podziel w dół. Aby zamknąć podział, kliknij prawym przyciskiem myszy i wybierz Zamknij. Każdy podział pozwala określić własne połączenie z urządzeniem, wyświetlać opcje i zapytać.

Utwórz wiele okien logcat za pomocą podziałów

Przełączanie się między gotowymi ustawieniami widoku

Logcat umożliwia teraz szybkie przełączanie się między różnymi trybami widoku: standardowy, kompaktowy i niestandardowy przez kliknięcie Selektor trybu widoku. Każdy tryb widoku ma inne ustawienie domyślne, które pozwala wyświetlać więcej lub mniej informacji, takich jak sygnatury czasowe, tagi i identyfikatory procesów (PID). Możesz też dostosować każdy z tych domyślnych trybów widoku oraz tryb widoku niestandardowego, wybierając Modyfikuj widok.

Zrzut ekranu przedstawiający przełączanie się między różnymi trybami widoku

W poprzedniej wersji Logcat można było użyć wyszukiwania ciągów znaków (z obsługą wyrażeń regularnych) lub utworzyć nowy filtr, wypełniając różne pola za pomocą interfejsu Logcat. Pierwsza opcja utrudniła wyszukiwanie, a druga utrudniła udostępnianie i konfigurowanie zapytań. Uprościliśmy proces poprzez wprowadzenie wyszukiwania według par klucz-wartość bezpośrednio z głównego pola zapytania.

Zrzut ekranu przedstawiający nową składnię zapytania z autouzupełnianiem

Ten nowy system zapytań pozwala dokładnie odpowiadać na Twoje zapytania bez konieczności korzystania z wyrażeń regularnych, a także zapamiętywać wcześniejsze zapytania z historii i udostępniać je innym. Dodatkowo nadal możesz używać wyrażeń regularnych i wykluczać logi na podstawie par klucz-wartość. Oto kilka przykładów korzystania z nowego systemu zapytań. Aby zobaczyć sugestie, możesz też po prostu zacząć wpisywać tekst w polu zapytania:

  • Identyfikatory PID dla projektu aplikacji lokalnej: package:mine
  • Określone wartości:
    • package:<package-ID>
    • tag:<tag>
    • level:[VERBOSE | INFO | ASSERT |DEBUG | WARN | ERROR ]
  • Wyklucz konkretną wartość, poprzedzając klucz -:
    • -tag:<exclude-tag>
  • Aby używać wyrażeń regularnych z danym kluczem, umieść ~ po kluczu:
    • tag~:<regular-expression-tag>
    • Połącz z tagiem wykluczającym: -tag~:<exclude-regular-expression-tag>

Możesz też wyświetlić historię zapytań, klikając Selektor historii zapytań w polu zapytania i wybierając je z menu. Aby dodać zapytanie do ulubionych, tak aby pozostało na górze listy we wszystkich projektach Studio, kliknij Zapytanie o ulubione na końcu pola zapytania.

Zrzut ekranu historii zapytań z ulubionymi

Śledzenie logów awarii i ponownych uruchomień aplikacji

Nowy Logcat ułatwia teraz śledzenie logów z aplikacji w przypadku awarii i ponownego uruchamiania aplikacji, dzięki czemu nie przegapisz ważnych logów dotyczących tych zdarzeń. Gdy Logcat zauważy, że proces aplikacji został zatrzymany i uruchomiony ponownie, w danych wyjściowych pojawi się komunikat, np. PROCESS ENDED i PROCESS STARTED, jak pokazano poniżej:

Zrzut ekranu przedstawiający ponowne uruchomienia procesu w usłudze Logcat

Ponowne uruchomienie Logcat zachowuje konfigurację sesji, takie jak podziały kart, filtry i opcje widoku, dzięki czemu możesz łatwo kontynuować sesję.

Urządzenia zarządzane przez Gradle

Aby zwiększyć spójność, wydajność i niezawodność podczas korzystania z urządzeń wirtualnych z Androidem do zautomatyzowanych testów z instruktażem, wprowadzamy urządzenia zarządzane przez Gradle. Ta funkcja, dostępna dla interfejsów API na poziomie 27 i wyższych, umożliwia konfigurowanie wirtualnych urządzeń testowych w plikach Gradle projektu. System kompilacji korzysta z konfiguracji do pełnego zarządzania, czyli tworzenia, wdrażania i dezaktywowania urządzeń podczas przeprowadzania zautomatyzowanych testów.

Ta funkcja zapewnia Gradle wgląd nie tylko w prowadzone testy, ale także do cyklu życia urządzeń, co pozwala poprawić jakość testów na następujące sposoby:

  • Rozwiązuje problemy związane z urządzeniem, aby mieć pewność, że testy zostaną wykonane
  • Wykorzystuje zrzuty emulatora, aby skrócić czas uruchamiania urządzenia i wykorzystanie pamięci oraz przywrócić urządzenia do nienaruszonego stanu między testami
  • Buforuje wyniki testów i ponownie uruchamia tylko te testy, które prawdopodobnie dadzą różne wyniki
  • Zapewnia spójne środowisko do przeprowadzania testów między uruchomieniami testów lokalnych i zdalnych

Dodatkowo urządzenia zarządzane przez Gradle wprowadzają nowy typ emulatora zwanych automatycznymi urządzeniami testowymi (ATD), które są zoptymalizowane pod kątem poprawy wydajności podczas testów instrumentacji. Dzięki obsłudze fragmentacji testów możesz eksperymentować z rozdzielaniem pakietu testów na wiele instancji ATD, by skrócić ogólny czas wykonywania testów. Więcej informacji o urządzeniach zarządzanych przez Gradle i powiązanych z nimi funkcjach znajdziesz w artykule na temat skalowania testów przy użyciu urządzeń zarządzanych przez Gradle.

Obsługa R8 z użyciem plików mapowania na podstawie przesunięcia instrukcji DEX

Podczas optymalizowania informacji o wierszach R8 może teraz kodować informacje w udostępnionych obiektach informacji debugowania za pomocą tabel wierszy na podstawie przesunięcia instrukcji. W znacznym stopniu zmniejsza to nakład pracy związany z przekazywaniem informacji. W efekcie wiersze w metodach nie występują już po sobie, ale mogą przechodzić w odstępach czasowych w zależności od rozmiaru instrukcji. Pamiętaj, że niektóre narzędzia nie uwzględniają tego udostępnionego kodowania.

Dodatkowo maszyny wirtualne z Androidem od O (poziom interfejsu API 26) obsługują przesunięcia instrukcji drukowania w zrzutach stosu, jeśli metoda nie zawiera informacji o numerze wiersza. W przypadku kompilacji przy użyciu pakietu minSdk w wersji 26 lub nowszej i bez informacji o pliku źródłowym R8 całkowicie usuwa informacje o numerze wiersza.

Bezstanowe lambda nie są już wycofywane jako single

Bezstanowe lambda nie są już przydzielane jako singleton podczas odciągania. Reprezentacja jako singleton zwiększa narzut rozmiaru kodu ze względu na dodane pole i inicjator klas, a także narzut początkowy z powodu statycznego inicjowania klas. Bezstanowe lambda są teraz przydzielane w witrynach używanych w taki sam sposób jak stanowe lambda (lambda z przechwytywaniem).

R8 pozwala uniknąć opóźnienia weryfikacji w środowiskach wykonawczych Androida

Aby wyeliminować problemy z wydajnością w środowiskach wykonawczych Androida (Dalvik i ART), R8 (nie D8) wprowadza teraz wycinki biblioteki i opisuje wywołania metod biblioteki w przypadku klas i metod biblioteki, które mogą nie występować w czasie działania. Eliminuje to wiele problemów z weryfikacją i zwiększa wydajność środowiska wykonawczego. Ta funkcja jest zawsze włączona.

Obsługa interfejsów API JDK-11 z odładowaniem interfejsów API w języku Java 8 lub nowszym

W przypadku użycia zależności CoreLibraryDesugaring można teraz korzystać z biblioteki implementacji opartej na JDK-11. Więcej informacji znajdziesz w desugar_jdk_libs historii zmian.

Wersje poprawek

Poniżej znajduje się lista wersji poprawek w Android Studio Dolphin.

Android Studio Dolphin | Poprawka 1 w wersji 2021.3.1 (październik 2022 r.)

W wersji poprawki 1 Android Studio Dolphin obsługuje teraz wtyczkę Kotlin w wersji 1.7.20. Ta drobna aktualizacja zawiera też następujące poprawki błędów:

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Uruchomienie instrumentowanych testów na Androidzie za pomocą narzędzia Gradle nie powoduje prawidłowego zastosowania deugaryzacji
AGP 7.3.0 wyłącza synchronizację Gradle w projektach platformy Gradle
Dexer (D8)
Dodaj publiczny interfejs API do rozwiązywania konfliktów podczas scalania pliku DEX (dla bazy danych, która umożliwia duplikowanie klas)
Importowanie/synchronizacja
Importowanie projektu Gradle kończy się niepowodzeniem po uaktualnieniu z poprawki Chipmunk Patch 2 (2021.2.1)
Informacje
NPE w AarResourceRepositoryCache.createCachingData (AS Dolphin+)
Koszulka (R8)
Metadane Kotlin nie są kopiowane, gdy typ zastępuje pola
Nieoczekiwana konwersja nieprecyzyjnego typu: TOP (wszystko)
Gradle 7.3.0 powodująca błąd kompilacji pliku APK com.android.tools.r8.CompilationFailedException
Usuń martwe domyślne konstruktory w trybie compat.
Konflikt z JetBrains Markdown
Obsługa ThreadLocal.withInitial(java.util.function.Vendor
AGP 7.3 generuje pliki .dex dla klas z uszkodzonym konstruktorem.
Nieoczekiwana próba określenia, czy kod inny niż CF wymaga odblasku
narzędzie do weryfikacji na stronie narzędzia narzędzi do weryfikacji
Podczas przetwarzania okio-jvm 3.2.0 wystąpiła nieokreślona wartość napotkana podczas kompilacji
Niepowodzenie kompilacji z obiektu wbudowanego w klasę z pośrednimi instancjami użytkowników
java.lang.IllegalAccessError with R8 (3.3.75)