Android Studio 3.1 (marzec 2018 r.)

Android Studio 3.1.0 to duża wersja z wieloma nowymi funkcjami i ulepszeniami.

3.1.4 (sierpień 2018 r.)

Ta aktualizacja Androida Studio 3.1 zawiera te zmiany i poprawki:

  • W pakiecie Kotlin dostępna jest teraz wersja 1.2.50.
  • Nowe projekty są tworzone przy użyciu kotlin-stdlib-jdk* artifacts, a nie za pomocą wycofanych artefaktów kotlin-stdlib-jre*.
  • Ulepszono analizę R8 reguł ProGuard.
  • Naprawiliśmy następujące błędy:
    • Próba uruchomienia klasy Kotlin Main nie powiodła się z powodu błędu: "Error: Could not find or load main class..."
    • Podczas przeprowadzania pewnych optymalizacji model R8 wszedł w nieskończoną pętlę.
    • Użycie polecenia Ponownie uruchom testy zakończone niepowodzeniem w oknie Uruchom czasami powodowało nieprawidłowe wyświetlanie komunikatu „Nie znaleziono testów”.
    • D8 nie obsługiwał poprawnie instancji invoke-virtual, powodując awarię z VerifyError: invoke-super/virtual can't be used on private method
    • Kompilator wiązań danych korzystał ze starej wersji com.android.tools:annotations. Kompilator używa teraz adnotacji narzędzi z projektu podstawowego, gdy są dostępne.
    • Android Studio uległ awarii podczas przenoszenia fragmentów podczas korzystania z programów profilujących.
    • Debuger uległ awarii podczas debugowania układu z polem tekstowym.
    • D8 nie odczytał niektórych plików ZIP ze znakami specjalnymi.

3.1.3 (czerwiec 2018 r.)

Aktualizacja Androida Studio do wersji 3.1 zawiera poprawki tych błędów:

  • Wycieki pamięci spowodowały powolne działanie Android Studio i brak reakcji w przypadku korzystania z edytora układów. Ta aktualizacja zawiera poprawki większości tych problemów. Wkrótce zamierzamy opublikować kolejną aktualizację, która pozwoli rozwiązać dodatkowe wycieki pamięci.
  • Niektóre aplikacje oparte na D8 uległy awarii na niektórych tabletach Verizon Ellipsis.
  • Instalacja aplikacji utworzonych na bazie 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 utworzone w wersji D8, uległy awarii na urządzeniach z Androidem 4.4 (poziom interfejsu API 19).
  • Czasami nie udało się uruchomić Android Studio z ProcessCanceledException podczas inicjowania klasy dla projektu com.intellij.psi.jsp.JspElementType.

3.1.2 (kwiecień 2018 r.)

Aktualizacja Androida Studio do wersji 3.1 zawiera poprawki tych błędów:

  • W niektórych przypadkach aplikacja Android Studio była zawieszona bezterminowo podczas zamykania aplikacji.
  • Kompilacje skonfigurowane za pomocą zbiorów źródłowych zakończyły się wyświetleniem tego komunikatu, gdy włączone było szybkie uruchamianie:

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

  • Gdy szybkie uruchamianie było włączone, kompilacje nowych projektów Kotlin kończyły się niepowodzeniem po aktywowaniu przez polecenie Uruchom.
  • Podczas edytowania pliku build.gradle występowało czasem zauważalne opóźnienie między wpisaniem znaku a pojawieniem się znaku na ekranie.
  • W niektórych projektach o dużej liczbie modułów lub zależności zewnętrznych wystąpiły błędy kompilacji. Pojawił się ten komunikat o błędzie:

    "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

  • Podczas obliczania głównej listy DEX D8 nie brano pod uwagę niektórych wywołań refleksyjnych.

Ta aktualizacja obejmuje też zmiany, które w niektórych scenariuszach znacznie przyspieszają sprawdzanie lint w Gradle.

3.1.1 (kwiecień 2018 r.)

Aktualizacja Androida Studio do wersji 3.1 zawiera poprawki tych błędów:

  • W niektórych przypadkach, gdy projekt utworzony w Android Studio 3.0 został po raz pierwszy otwarty w Androidzie Studio 3.1, zadanie tworzenia Gradle-Aware zostało usunięte z obszaru Przed uruchomieniem w sekcji Konfiguracje uruchamiania/debugowania. W efekcie projekty nie zostały skompilowane po kliknięciu przycisku Uruchom lub Debuguj, co z kolei powodowało błędy, takie jak wdrażanie nieprawidłowych plików APK i awarie podczas korzystania z błyskawicznego uruchomienia.

    Aby rozwiązać ten problem, Android Studio 3.1.1 dodaje zadanie tworzenia Gradle-aware do konfiguracji uruchamiania w przypadku projektów, w których brakuje tego wpisu. Ta modyfikacja zachodzi po pierwszej synchronizacji Gradle podczas wczytywania projektu.

  • Debuger uległ awarii podczas debugowania układu za pomocą pola tekstowego, jeśli włączone było profilowanie zaawansowane.
  • Android Studio zawiesił się po kliknięciu Warianty kompilacji.
  • Pliki AAR (archiwum Androida) zostały wyodrębnione dwukrotnie: raz podczas procesu synchronizacji Gradle i raz w trakcie procesu kompilacji Gradle.
  • W niektórych obiektach rysowalnych w formacie wektorowym zaimportowanych z plików SVG brakuje elementów.
  • Ostrzeżenie dotyczące wycofania konfiguracji zależności compile zostało zaktualizowane o dokładniejsze wskazówki dotyczące konfiguracji implementation i api. Szczegóły migracji z konfiguracji compile znajdziesz w dokumentacji nowych konfiguracji zależności.

Kodowanie/IDE

IntelliJ 2017.3.3

Podstawowe środowisko IDE Android Studio zostało zaktualizowane o ulepszenia wprowadzone w wersji IntelliJ IDEA do wersji 2017.3.3. Ulepszenia obejmują lepszą analizę przepływu kontroli w zbiorach i ciągach tekstowych, ulepszone wnioskowanie o wartości null, nowe szybkie poprawki i wiele innych.

Szczegółowe informacje znajdziesz w informacjach o wersji JetBrains dla IntelliJ IDEA w wersjach 2017.2 i 2017.3, a także informacje o wersji JetBrains zawierające aktualizacje poprawek błędów.

Ulepszenia edycji SQL w funkcji Pokoje

Korzystając z biblioteki bazy danych sal, możesz korzystać z kilku ulepszeń edycji SQL:

  • Uzupełnianie kodu w obrębie obiektu Query rozumie tabele (elementy), kolumny, parametry zapytania, aliasy, złączenia, podzapytania i klauzule WITH.
  • Funkcja podświetlania składni SQL już działa.
  • Możesz kliknąć prawym przyciskiem myszy nazwę tabeli w SQL i zmienić jej nazwę. Spowoduje to również przepisanie odpowiedniego kodu Java lub Kotlin (w tym na przykład typu zwracanego zapytania). Zmiana nazwy działa też w odwrotnym kierunku, dlatego zmiana nazwy klasy lub pola w Javie przepisuje odpowiedni kod SQL.
  • Przypadki użycia SQL są widoczne, gdy używasz opcji Znajdź przypadki użycia (kliknij prawym przyciskiem myszy i wybierz Znajdź przypadki użycia z menu kontekstowego).
  • Aby przejść do deklaracji encji SQL w kodzie Java lub Kotlin, możesz przytrzymać naciśnięty klawisz Control (Command na Macu) i kliknąć element.

Informacje o korzystaniu z SQL z użyciem pokoju znajdziesz w artykule o zapisywaniu danych w lokalnej bazie danych za pomocą funkcji Room.

Aktualizacje wiązania danych

Ta aktualizacja wprowadza kilka ulepszeń w zakresie wiązania danych:

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

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

  • Możesz wyświetlić podgląd nowego kompilatora przyrostowego dla klas wiązań danych. Szczegółowe informacje na temat tego nowego kompilatora i 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 Gradle przed kompilatorem Java.
    • Biblioteki zachowują wygenerowane klasy powiązania podczas kompilowania aplikacji, aby nie były za każdym razem ponownie generowane. Może to znacznie zwiększyć wydajność w przypadku projektów składających się z wielu modułów.

Kompilator i Gradle

D8 to domyślny kompilator DEX

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

Ten nowy kompilator DEX zapewnia kilka korzyści, w tym:

  • Szybsze usuwanie
  • Mniejsze wykorzystanie pamięci
  • Ulepszone generowanie kodu (lepszy przydział rejestrów, inteligentniejsze tabele z ciągami znaków)
  • Lepsze debugowanie podczas analizowania kodu

Aby korzystać z tych korzyści, nie musisz wprowadzać żadnych zmian w kodzie ani w przepływie pracy programistycznym, chyba że wyłączono wcześniej ręcznie kompilator D8.

Jeśli ustawisz android.enableD8 na false w gradle.properties, usuń tę flagę lub ustaw ją na true:

        android.enableD8=true
      

Więcej informacji znajdziesz w artykule Nowy kompilator DEX.

Przyrostowe odurzenie

W projektach, w których używane są funkcje językowe Java 8, domyślnie włączone jest stopniowe odpalanie, co może skrócić czas kompilacji.

Usuwanie cukru konwertuje cukier składniowy do postaci, którą kompilator może przetworzyć wydajniej.

Możesz wyłączyć odładowanie przyrostowe, określając te elementy w pliku gradle.properties projektu:

        android.enableIncrementalDesugaring=false
      

Uproszczone okno danych wyjściowych

Konsola Gradle została zastąpiona oknem kompilacji z kartami Synchronizacja i Kompilacja.

Szczegółowe informacje o tym, jak korzystać z nowego, uproszczonego okna kompilacji, znajdziesz w artykuleMonitorowanie procesu kompilacji.

Aktualizacje zbiorcze i równoczesność indeksowania

Procesy synchronizacji i indeksowania IDE są teraz znacznie wydajniejsze, co skraca czas poświęcany na wiele nadmiarowych operacji indeksowania.

C++ i LLDB

Wprowadziliśmy wiele ulepszeń w zakresie jakości i wydajności na etapach kodowania, synchronizacji, tworzenia i debugowania w C++. Są to między innymi:

  • Jeśli pracujesz z dużymi projektami C++, możesz zauważyć znaczną skrócenie czasu poświęcanego na tworzenie symboli. W przypadku dużych projektów czas synchronizacji jest też znacznie skrócony.

  • Wydajność tworzenia i synchronizacji z CMake została ulepszona przez agresywne wykorzystywanie wyników z pamięci podręcznej.

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

  • LLDB działa teraz tylko z Androidem 4.1 (poziom interfejsu API 16) i nowszym.

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

Kotlin

Kotlin uaktualniony do wersji 1.2.30

Android Studio 3.1 zawiera Kotlin w wersji 1.2.30.

Kod Kotlin został teraz przeanalizowany za pomocą kontroli lintowania wiersza poleceń

Uruchomienie narzędzia lint z poziomu wiersza poleceń analizuje teraz klasy Kotlin.

W każdym projekcie, w którym chcesz uruchomić linter, do pliku build.gradle najwyższego poziomu musisz dodać repozytorium Google Maven. Repozytorium Maven jest już dostępne w projektach tworzonych w Androidzie Studio w wersji 3.0 lub nowszej.

Narzędzia do mierzenia wydajności

Przykładowe natywne procesy C++ z funkcją profilu procesora

Program profilujący procesora zawiera teraz domyślną konfigurację do rejestrowania próbkowanych logów czasu wątków natywnych aplikacji. Aby użyć tej konfiguracji, możesz wdrożyć aplikację na urządzeniu z Androidem 8.0 (poziom interfejsu API 26) lub nowszym, a następnie wybrać Próbkowane (Natywna) w menu konfiguracji nagrywania w programie profilującym CPU. Następnie zarejestruj i zbadaj log czasu 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).

Filtruj ślady procesora, wyniki alokacji pamięci i zrzuty sterty

Program do profilowania procesora i narzędzie do profilowania pamięci zawierają funkcję wyszukiwania, która umożliwia filtrowanie wyników dotyczących rejestrowania śladu metody, alokacji pamięci lub zrzutu stosu.

Aby wyszukać, kliknij Filtr w prawym górnym rogu panelu, wpisz zapytanie i naciśnij Enter.

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

Na karcie Wykres flame w programie profilowym CPU stosy wywołań zawierające metody powiązane z wyszukiwanym hasłem są wyróżnione i przenoszone na lewą stronę wykresu.

Więcej informacji o filtrowaniu według metody, klasy lub nazwy pakietu znajdziesz w artykule Rejestrowanie i sprawdzanie logów czasu metod.

Karta Żądanie w programie profilującym sieci

Program profilujący sieci zawiera teraz kartę Żądanie, która zawiera szczegółowe informacje o żądaniach sieciowych w wybranym okresie. W poprzednich wersjach program profilujący sieci udostępniał tylko informacje o odpowiedziach sieci.

Widok wątku w narzędziu do profilowania sieci

Po wybraniu fragmentu osi czasu w programie profilującym sieci możesz wybrać jedną z tych kart, aby wyświetlić więcej informacji o aktywności sieci w tym okresie:

  • Widok połączenia: zawiera te same informacje co poprzednie wersje Androida Studio – zawiera listę plików wysłanych lub odebranych w wybranym fragmencie osi czasu we wszystkich wątkach procesora aplikacji. W przypadku każdego żądania możesz sprawdzić rozmiar, typ, stan i czas trwania transmisji.
  • Widok wątku: wyświetla aktywność sieciową każdego wątku procesora aplikacji. Ten widok pozwala sprawdzić, które wątki aplikacji są odpowiedzialne za każde żądanie sieciowe.

Inspektor układu

Inspektor układu otrzymał nowe funkcje, w tym te udostępniane wcześniej przez wycofane narzędzia Hierarchy Viewer i Pixel Perfect:

  • Przyciski powiększenia i skróty klawiszowe do poruszania się i sprawdzania układów
  • Nakładka siatki referencyjnej
  • Możliwość wczytania obrazu referencyjnego i użycia go jako nakładki (przydatna podczas porównywania układu z podglądem interfejsu)
  • podgląd drzewa podrzędnego renderowania w celu wyodrębnienia widoku w złożonym układzie,

Edytor układu

Paleta w edytorze układu ma wiele ulepszeń:

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

Możesz teraz łatwo tworzyć ograniczenia do elementów w pobliżu wybranego widoku za pomocą nowych przycisków Utwórz połączenie w inspektorze widoku u góry okna Atrybuty.

Uruchom i błyskawicznie

Działanie opcji Użyj tego samego wyboru przy kolejnych uruchomieniach w oknie Wybierz cel wdrożenia jest bardziej spójne. Jeśli opcja Użyj tego samego wyboru jest włączona, okno Wybierz miejsce docelowe wdrożenia pojawi się tylko przy pierwszym użyciu polecenia Uruchom, dopóki wybrane urządzenie nie będzie połączone.

Jeśli kierujesz aplikację na urządzenie z Androidem 8.0 (poziom interfejsu API 26) lub nowszym, błyskawiczne uruchomienie może wdrażać zmiany w zasobach bez konieczności ponownego uruchamiania aplikacji. Jest to możliwe, ponieważ zasoby są zawarte w podzielonym pakiecie APK.

Emulator

Szczegółowe informacje o zmianach i zmianach w emulatorze od czasu wprowadzenia Androida Studio 3.0 znajdziesz w informacjach o wersji emulatora Androida od 27.0.2 do wersji 27.1.12.

Najważniejsze ulepszenia to między innymi:

  • Szybkie uruchamianie zrzutów służących do zapisywania stanu emulatora i szybszego uruchamiania oraz z możliwością zapisania niestandardowego stanu uruchomienia za pomocą polecenia Save now (Zapisz teraz).
  • Ekran emulatora bez okien.
  • Obrazy systemowe dla Androida 8.0 (poziom interfejsu API 26), Androida 8.1 (poziom interfejsu API 27) i Androida P Developer Preview.

Ulepszenia interfejsu i wygody użytkowania

Więcej etykiet, skrótów klawiszowych i przydatnych komunikatów

W wielu miejscach w Android Studio dodaliśmy etykietki i pomocne nakładki na wiadomości.

Aby wyświetlić skróty klawiszowe dla wielu poleceń, najedź kursorem myszy na przycisk, aż pojawi się etykietka.

Usunięto menu Narzędzia > Android

Usunęliśmy menu Narzędzia > Android. Polecenia, które były wcześniej w tym menu, zostały przeniesione.

  • Wiele poleceń zostało przeniesionych bezpośrednio do menu Narzędzia.
  • Polecenie Zsynchronizuj projekt z plikami Gradle zostało przeniesione do menu Plik.
  • Polecenie Monitorowanie urządzeń zostało usunięte zgodnie z opisem poniżej.

Monitor urządzeń dostępny z poziomu wiersza poleceń

W Android Studio 3.1 Monitor urządzenia pełni w mniejszym stopniu funkcję. W wielu przypadkach funkcje dostępne w Monitorze urządzenia są teraz dostarczane przez nowe, ulepszone narzędzia.

Instrukcje wywoływania Monitora urządzeń z poziomu wiersza poleceń znajdziesz w dokumentacji Monitora urządzeń. Znajdziesz tam też szczegółowe informacje o narzędziach dostępnych w Monitorze urządzeń.