Android Studio 3.1 (marzec 2018 r.)

Android Studio 3.1.0 to ważna wersja, która zawiera wiele nowych funkcji i ulepszeń.

3.1.4 (sierpień 2018 r.)

Ta aktualizacja Android Studio 3.1 zawiera te zmiany i poprawki:

  • Dołączony Kotlin ma teraz wersję 1.2.50.
  • Nowe projekty są tworzone za pomocą artefaktów kotlin-stdlib-jdk* artifacts, a nie kotlin-stdlib-jre*, które są wycofywane.
  • Ulepszyliśmy analizowanie reguł ProGuard w wersji R8.
  • Naprawiono te błędy:
    • Próba uruchomienia klasy głównej Kotlina zakończyła się niepowodzeniem z powodu błędu: "Error: Could not find or load main class..."
    • R8 wchodził w nieskończoną pętlę podczas wykonywania pewnych optymalizacji.
    • Użycie polecenia Ponowne uruchomienie nieudanych testów w oknie Uruchom czasami nieprawidłowo zwracało komunikat „Nie znaleziono żadnych testów”.
    • D8 nie obsługiwało poprawnie instancji invoke-virtual, co powodowało awarię z błędem VerifyError:invoke-super/virtual can't be used on private method
    • Kompilator powiązań danych był zależny od starszej wersji com.android.tools:annotations. Kompilator korzysta teraz z uwag narzędzi z projektu bazowego, jeśli są dostępne.
    • Android Studio ulega awarii podczas przechodzenia między fragmentami podczas korzystania z profilujących.
    • Podczas debugowania układu z polem tekstowym wystąpił błąd debugera.
    • D8 nie może odczytać niektórych plików ZIP zawierających znaki specjalne.

3.1.3 (czerwiec 2018 r.)

Ta aktualizacja Android Studio 3.1 zawiera poprawki tych błędów:

  • Wycieki pamięci powodowały, że po użyciu Edytora układu Android Studio działało wolno i nie reagowało. Ta aktualizacja zawiera poprawki dla większości z tych problemów. Wkrótce udostępnimy kolejną aktualizację, która obejmie dodatkowe wycieki pamięci.
  • Niektóre aplikacje utworzone za pomocą D8 ulegały awarii na niektórych tabletach Verizon Ellipsis.
  • Instalacja aplikacji skompilowanych za pomocą D8 nie powiodła się z powodu błędu INSTALL_FAILED_DEXOPT na urządzeniach z Androidem 5.0 lub 5.1 (poziom interfejsu API 21 lub 22).
  • Niektóre aplikacje, które korzystały z biblioteki OkHttp i zostały skompilowane za pomocą D8, ulegały awarii na urządzeniach z Androidem 4.4 (poziom interfejsu API 19).
  • Czasami nie można było uruchomić Android Studio, ponieważ wystąpił błąd ProcessCanceledException podczas inicjowania klasy com.intellij.psi.jsp.JspElementType.

3.1.2 (kwiecień 2018 r.)

Ta aktualizacja Android Studio 3.1 zawiera poprawki tych błędów:

  • W niektórych przypadkach aplikacja Android Studio zawieszała się na czas nieokreślony podczas zamykania.
  • Kompilacje skonfigurowane za pomocą zbiorów źródeł zakończyły się niepowodzeniem z komunikatem o następującej treści, gdy włączona była funkcja Instant Run:

    "The SourceSet name is not recognized by the Android Gradle Plugin."

  • Gdy włączona była funkcja Instant Run, kompilacja nowych projektów w Kotlinie kończyła się niepowodzeniem, gdy została uruchomiona za pomocą polecenia Uruchom.
  • Podczas edytowania pliku build.gradle czasami występowało zauważalne opóźnienie między wpisaniem znaku a jego wyświetleniem na ekranie.
  • W niektórych projektach z dużą liczbą modułów lub zewnętrznych zależności wystąpiły błędy kompilacji podczas dekodowania. Wyświetlany był następujący komunikat o błędzie:

    "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

  • Obliczenie głównej listy DEX w D8 nie uwzględniało niektórych wywołań przez odbicie.

Ta aktualizacja zawiera też zmiany, które w niektórych sytuacjach znacznie przyspieszają sprawdzanie kodu za pomocą Gradle.

3.1.1 (kwiecień 2018 r.)

Ta aktualizacja Android Studio 3.1 zawiera poprawki tych błędów:

  • W niektórych przypadkach, gdy projekt utworzony w Android Studio 3.0 został otwarty po raz pierwszy w Android Studio 3.1, zadanie Make obsługujące Gradle zostało usunięte z obszaru Przed uruchomieniem w sekcji Konfiguracje uruchamiania/debugowania. W efekcie projekty nie były kompilowane po kliknięciu przycisku Uruchom lub Debugowanie, co z kolei powodowało błędy, takie jak wdrażanie nieprawidłowych plików APK i awarie podczas korzystania z Instant Run.

    Aby rozwiązać ten problem, w Android Studio 3.1.1 dodano zadanie Make uwzględniające Gradle do konfiguracji uruchomienia w przypadku projektów, w których brakuje tego wpisu. Ta modyfikacja następuje po pierwszej synchronizacji Gradle, gdy projekt jest wczytywany.

  • Debuger ulegał awarii podczas debugowania układu z polem tekstowym, jeśli włączone było zaawansowane profilowanie.
  • Android Studio zawiesiło się po kliknięciu Wersje kompilacji.
  • Pliki AAR (archiwum Androida) zostały wyodrębnione dwukrotnie: raz podczas procesu synchronizacji Gradle i raz podczas procesu kompilacji Gradle.
  • W niektórych wektorowych obiektach zaimportowanych z plików SVG brakowało elementów.
  • Ostrzeżenie dotyczące wycofania konfiguracji zależności compile zostało zaktualizowane i zawiera teraz lepsze wskazówki dotyczące konfiguracji implementationapi. Szczegółowe informacje o przechodzeniu z konfiguracji compile znajdziesz w  dokumentacji dotyczącej nowych konfiguracji zależności.

Kodowanie/IDE

IntelliJ 2017.3.3

Główne środowisko programistyczne Android Studio zostało zaktualizowane o ulepszenia z IntelliJ IDEA w wersji 2017.3.3. Ulepszenia obejmują m.in. lepszą analizę przepływu sterowania w przypadku kolekcji i ciągów znaków, ulepszone wnioskowanie o możliwości wystąpienia wartości null, nowe szybkie poprawki i wiele innych.

Szczegółowe informacje znajdziesz w informacjach o wersji JetBrains dotyczących IntelliJ IDEA w wersjach 2017.22017.3, a także w informacjach o wersji JetBrains dotyczących aktualizacji z poprawkami błędów.

Ulepszenia edytora kodu SQL w pokoju

Korzystając z biblioteki bazy danych Room, możesz korzystać z kilku ulepszeń edytowania kodu SQL:

  • Wskazówki kodu w ramach Query rozumieją tabele SQL (elementy), kolumny, parametry zapytań, aliasy, złączenia, podzapytania i klauzule WITH.
  • Wyróżnianie składni SQL działa.
  • Możesz kliknąć prawym przyciskiem myszy nazwę tabeli w SQL i zmienić jej nazwę, co spowoduje też przepisanie odpowiedniego kodu Java lub Kotlin (w tym m.in. typu zwracanego przez zapytanie). Zmiana nazwy działa też w drugą stronę, więc zmiana nazwy klasy lub pola w języku Java powoduje przepisanie odpowiedniego kodu SQL.
  • Użycia kodu SQL są wyświetlane po kliknięciu Znajdź użycia (kliknij prawym przyciskiem myszy i w menu kontekstowym wybierz Znajdź użycia).
  • Aby przejść do deklaracji elementu SQL w kodzie Java lub Kotlin, możesz kliknąć element, przytrzymując klawisz Control (Command na Macu).

Informacje o używaniu SQL w Room znajdziesz w artykule Zapisywanie danych w lokalnej bazie danych za pomocą Room.

Zmiany w wiązaniu danych

Ta aktualizacja zawiera kilka ulepszeń dotyczących wiązania danych:

  • W wyrażeniach powiązań danych możesz teraz używać obiektu LiveData jako pola obserwowalnego. Klasa ViewDataBinding zawiera teraz nową metodę setLifecycle(), której używasz do obserwowania obiektów LiveData.

  • Klasa ObservableField może teraz przyjmować inne obiekty Observable w swoim konstruktorze.

  • Możesz wyświetlić podgląd nowego kompilatora przyrostowego dla klas wiązania danych. Szczegółowe informacje o tym nowym kompilatorze oraz instrukcje jego włączania znajdziesz w artykule Kompilator powiązań danych w wersji 2.

    Zalety nowego kompilatora:

    • Klasy ViewBinding są generowane przez wtyczkę Androida do obsługi Gradle przed kompilatorem Javy.
    • Biblioteki zachowują wygenerowane klasy wiązania po skompilowaniu aplikacji, zamiast generować je za każdym razem. Może to znacznie poprawić wydajność projektów wielomodułowych.

Kompilator i Gradle

D8 to domyślny kompilator DEX

Kompilator D8 jest teraz domyślnie używany do generowania kodu bajtowego DEX.

Nowy kompilator DEX zapewnia kilka korzyści, w tym:

  • Szybsze dekodowanie
  • Mniejsze wykorzystanie pamięci
  • Ulepszone generowanie kodu (lepsza alokacja rejestrów, inteligentniejsze tabele ciągów znaków)
  • ulepszone debugowanie podczas przechodzenia po kodzie,

Aby skorzystać z tych korzyści, nie musisz wprowadzać żadnych zmian w kodzie ani w procesie programowania, chyba że wcześniej ręcznie wyłączysz kompilator D8.

Jeśli w elementach gradle.propertiesgradle.properties flaga android.enableD8 ma wartość false, usuń tę flagę lub ustaw ją na true:

        android.enableD8=true
      

Szczegółowe informacje znajdziesz w artykule Nowy kompilator DEX.

Przyrostowy desugaring

W przypadku projektów, które korzystają z funkcji języka Java 8, domyślnie włączone jest stopniowe usuwanie cukru, co może skrócić czas kompilacji.

Desugaring konwertuje syntaktyczne udogodnienia do postaci, którą kompilator może przetworzyć wydajniej.

Możesz wyłączyć przyrostowe usuwanie cukru, określając w pliku gradle.properties projektu te opcje:

        android.enableIncrementalDesugaring=false
      

Uproszczone okno danych wyjściowych

Konsola Gradle została zastąpiona oknem Generowanie, które zawiera karty SynchronizacjaGenerowanie.

Szczegółowe informacje o używaniu nowego, uproszczonego okna Generowanie znajdziesz w artykule Monitorowanie procesu generowania.

Aktualizacje zbiorcze i indeksowanie równoległość

Procesy synchronizacji Gradle i indeksowania IDE są teraz znacznie wydajniejsze, co pozwala zaoszczędzić czas tracony na zbędne operacje indeksowania.

C++ i LLDB

Wprowadziliśmy wiele ulepszeń jakości i wydajności na etapach kodowania, synchronizacji, kompilowania i debugowania w ramach rozwoju w C++. Wprowadziliśmy następujące udoskonalenia:

  • Jeśli pracujesz nad dużymi projektami C++, zauważysz znaczne skrócenie czasu potrzebnego na tworzenie symboli. Czas synchronizacji jest też znacznie krótszy w przypadku dużych projektów.

  • Poprawiliśmy wydajność kompilacji i synchronizacji za pomocą CMake dzięki bardziej agresywnemu ponownemu używaniu wyników z pamięci podręcznej.

  • Dodanie formaterów („ładnych drukarek”) dla większej liczby struktur danych C++ ułatwia odczytywanie danych wyjściowych LLDB.

  • LLDB działa teraz tylko na Androidzie 4.1 (poziom interfejsu API 16) i nowszych.

Uwaga: debugowanie natywne w Android Studio w wersji 3.0 lub nowszej nie działa w systemie Windows w wersji 32-bitowej. Jeśli używasz 32-bitowej wersji systemu Windows i musisz debugować kod natywny, użyj Android Studio 2.3.

Kotlin

Kotlin został uaktualniony do wersji 1.2.30

Android Studio 3.1 zawiera Kotlin w wersji 1.2.30.

Kod Kotlina jest teraz analizowany za pomocą kontroli lint w wierszu poleceń

Uruchamianie lint z wiersza poleceń analizuje teraz klasy Kotlina.

W przypadku każdego projektu, w którym chcesz uruchomić lint, w pliku build.gradle najwyższego poziomu musisz uwzględnić repozytorium Maven firmy Google. Repozytorium Maven jest już uwzględnione w przypadku projektów utworzonych w Android Studio 3.0 lub nowszej wersji.

Narzędzia do pomiaru skuteczności

Przykładowe rdzenne procesy C++ z profilowaniem procesora

Narzędzie Profilowanie procesora zawiera teraz domyślną konfigurację do rejestrowania próbkowanych śladów wątków natywnych aplikacji. Aby użyć tej konfiguracji, wdrożyć aplikację na urządzeniu z Androidem 8.0 (poziom interfejsu API 26) lub nowszym, a potem w menu rozwijanym konfiguracji nagrywania w Profilu procesora wybrać opcję Z próbkowaniem (natywna). Następnie nagraj i przejrzyj ślad w zwykły sposób.

Możesz zmienić ustawienia domyślne, takie jak interwał próbkowania, tworząc konfigurację nagrywania.

Aby wrócić do śledzenia wątków Javy, wybierz konfigurację Sampled (Java) lub Instrumented (Java).

Filtrowanie śladów procesora, wyników alokacji pamięci i zrzutów sterty

Profilowanie procesoraprofilowanie pamięci zawierają funkcję wyszukiwania, która umożliwia filtrowanie wyników z rejestrowania śledzenia metody, alokacji pamięci lub zrzutu stosu.

Aby przeprowadzić wyszukiwanie, w prawym górnym rogu okna kliknij Filtr , wpisz zapytanie i naciśnij klawisz Enter.

Wskazówka: pole wyszukiwania możesz też otworzyć, naciskając Ctrl + F (Command + F na Macu).

Na karcie Wykres słupkowy w profilu CPU stosy wywołań zawierające metody związane z Twoim zapytaniem wyszukiwania są wyróżnione i przesuwane na lewą stronę wykresu.

Więcej informacji o filtrowaniu według nazwy metody, klasy lub pakietu znajdziesz w artykule Rejestrowanie i przeglądanie dzienników metod.

Karta Request (Żądanie) w profilu sieci

Narzędzie Network Profiler zawiera teraz kartę Request (Żądanie), która zawiera szczegółowe informacje o żądaniach sieci w wybranym okresie. W poprzednich wersjach Network Profiler udostępniał tylko informacje o odpowiedziach sieci.

Widok wątku w Profilerze sieci

Po wybraniu fragmentu osi czasu w profilu sieci możesz wybrać jedną z tych kart, aby zobaczyć więcej szczegółów dotyczących aktywności sieci w wybranym przedziale czasowym:

  • Widok połączenia: zawiera te same informacje co poprzednie wersje Android Studio. Wyświetla listę plików, które zostały wysłane lub odebrane w wybranej części osi czasu na wszystkich wątkach procesora Twojej aplikacji. W przypadku każdej prośby możesz sprawdzić rozmiar, typ, stan i czas trwania transmisji.
  • Widok wątku: wyświetla aktywność sieci w przypadku każdego wątku procesora aplikacji. Ten widok umożliwia sprawdzenie, które wątki Twojej aplikacji odpowiadają za poszczególne żądania sieci.

Inspektor układu

Inspektor układu zyskał nowe funkcje, w tym niektóre funkcje wcześniej dostępne w wycofanych narzędziach Hierarchy Viewer i Pixel Perfect:

  • przyciski powiększania i skróty klawiszowe służące do nawigacji i sprawdzania układów;
  • Nakładka siatki referencyjnej
  • możliwość załadowania obrazu referencyjnego i używania go jako nakładki (przydatne do porównywania układu z makupem interfejsu);
  • Wyświetl podgląd poddrzewa, aby wyodrębnić widok w skomplikowanym układzie.

Edytor układu

PaletaEdytorze układu została znacznie ulepszona:

  • Reorganizacja kategorii widoków i układów.
  • Nowa kategoria Ogólne z widokami i schematami, do której możesz dodawać elementy za pomocą polecenia Ulubione.
  • Ulepszone wyszukiwanie widoków i układów.
  • Nowe polecenia dotyczące otwierania dokumentacji dotyczącej konkretnego widoku lub elementu układu.

Aby przekonwertować widok lub układ na inny typ widoku lub układu, możesz użyć nowego polecenia Konwertuj widok w drzewie komponentów lub edytorze projektu.

Teraz możesz łatwo tworzyć ograniczenia dotyczące elementów znajdujących się w pobliżu wybranego widoku, korzystając z nowych przycisków w inspektorze widoku u góry okna Atrybuty.

Uruchamianie i uruchamianie błyskawiczne

Zwiększono spójność działania opcji Użyj tego samego wyboru w przyszłych wersjach w oknie Wybieranie celu wdrożenia. Jeśli włączona jest opcja Użyj tych samych opcji, okno Wybieranie celu wdrożenia otworzy się tylko przy pierwszym użyciu polecenia Uruchom i będzie się otwierać za każdym razem, gdy wybrane urządzenie będzie odłączone.

Jeśli kierujesz aplikację na urządzenie z Androidem 8.0 (poziom interfejsu API 26) lub nowszym, Instant Run może wdrażać zmiany w zasobach bez konieczności jej ponownego uruchamiania. Jest to możliwe, ponieważ zasoby znajdują się w podzielonym pliku APK.

Emulator

Informacje o nowościach i zmianach w emulatorze od wersji Android Studio 3.0 znajdziesz w notatkach do wersji 27.0.2, 27.1.12 i później.

Najważniejsze ulepszenia:

  • migawki Szybkiego uruchamiania, które służą do zapisywania stanu emulatora i szybszego uruchamiania, z możliwością użycia polecenia Zapisz teraz do zapisania niestandardowego stanu uruchamiania.
  • Ekran emulatora bez okna
  • Obrazy systemowe dla Androida 8.0 (poziom interfejsu API 26), Androida 8.1 (poziom interfejsu API 27) i wersji zapoznawczej Androida P dla programistów.

Ulepszenia dotyczące interfejsu i wrażeń użytkownika

więcej etykiet, skrótów klawiszowych i przydatnych wiadomości;

Dodaliśmy etykietki narzędzi i przydatne komunikaty w wielu miejscach w Android Studio.

Aby zobaczyć skróty klawiszowe do wielu poleceń, najedź kursorem na przycisk, aż pojawi się podpowiedź.

Usunięcie menu Narzędzia > Android

Menu Narzędzia > Android zostało usunięte. Polecenia, które wcześniej były dostępne w tym menu, zostały przeniesione.

  • Wiele poleceń zostało przeniesionych bezpośrednio do menu Narzędzia.
  • Polecenie Synchronizuj projekt z plikami Gradle zostało przeniesione do menu Plik.
  • Polecenie Device Monitor zostało usunięte, jak opisano poniżej.

Monitorowanie urządzenia dostępne z poziomu wiersza poleceń

W Android Studio 3.1 Monitor urządzenia pełni mniejszą rolę niż wcześniej. W wielu przypadkach funkcje dostępne w Monitorze urządzeń są teraz obsługiwane przez nowe i ulepszone narzędzia.

Więcej informacji o uruchamianiu Monitora urządzeń z wiersza poleceń oraz o narzędziach dostępnych w tym narzędziu znajdziesz w dokumentacji Monitora urządzeń.