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.)

Aktualizacja Android Studio 3.1 obejmuje następujące zmiany i poprawki:

  • Dołączony Kotlin ma teraz wersję 1.2.50.
  • Nowe projekty są tworzone z użyciem kotlin-stdlib-jdk* artifacts, a nie z użyciem artefaktów kotlin-stdlib-jre*, które zostały wycofane.
  • Ulepszono analizowanie reguł ProGuard w wersji R8.
  • Naprawiliśmy 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 wiązań danych był oparty na starszej wersji com.android.tools:annotations. Kompilator korzysta teraz z uwag narzędzi w projekcie bazowym, 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ć Androida Studio z komunikatem ProcessCanceledException podczas inicjowania klasy dla 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 podczas zamykania Android Studio zawieszało się na czas nieokreślony.
  • 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łączone było błyskawiczne uruchamianie, kompilacje nowych projektów Kotlin nie powiodły się po aktywowaniu polecenia Run.
  • 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 Kompiluj wersje.
  • 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 rysunkowych 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

Podstawowe środowisko programistyczne Android Studio zostało zaktualizowane o ulepszenia z IntelliJ IDEA do 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 sal, możesz korzystać z kilku ulepszeń dotyczących edycji SQL:

  • Uzupełnianie kodu w elemencie Query rozpoznaje tabele (encje), kolumny, parametry zapytań, aliasy, złączenia, zapytania podrzędne i klauzule WITH.
  • Wprowadzono wyróżnianie składni SQL.
  • Możesz kliknąć prawym przyciskiem myszy nazwę tabeli w SQL i zmienić jej nazwę, co spowoduje również przepisanie odpowiedniego kodu Java lub Kotlin (w tym na przykład zwracany typ zapytania). Zmiana nazwy działa też w drugą stronę, więc zmiana nazwy klasy lub pola Java powoduje zmodyfikowanie 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:

  • Możesz teraz używać obiektu LiveData jako obserwowalnego pola w wyrażeniach wiązania danych. 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
  • Ulepszona generacja kodu (lepsza alokacja rejestrów, inteligentniejsze tabele ciągów znaków)
  • ulepszone debugowanie podczas przechodzenia po kodzie,

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

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

        android.enableD8=true
      

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

Przyrostowe 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 ulepszenia do postaci, którą kompilator może przetworzyć wydajniej.

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

        android.enableIncrementalDesugaring=false
      

Uproszczone okno wyjściowe

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 z Androidem 4.1 (poziom interfejsu API 16) i nowszym.

Uwaga: debugowanie natywne w Android Studio 3.0 lub nowszym nie działa w 32-bitowym systemie Windows. 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 poziomu wiersza poleceń analizuje teraz klasy Kotlin.

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, wdróż aplikację na urządzeniu z Androidem 8.0 (poziom interfejsu API 26) lub nowszym, a następnie wybierz Próbkowane (natywne) w menu konfiguracji rejestrowania procesora w programie profilującym. Następnie zapisz i sprawdź log czasu w zwykły sposób.

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

Aby przełączyć się z powrotem na śledzenie wątków Java, wybierz konfigurację próbkowana (Java) lub instrumentowana (Java).

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

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 program profilujący sieci dostarczał tylko informacje o odpowiedziach sieciowych.

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 wybranym fragmencie osi czasu we wszystkich wątkach procesora aplikacji. W przypadku każdej prośby 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 umożliwia sprawdzenie, które wątki Twojej aplikacji odpowiadają za poszczególne żądania sieci.

Narzędzie do inspekcji 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ększenia i skróty klawiszowe do poruszania się 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);
  • Renderowanie podglądu podrzędnego drzewa w celu wyizolowania widoku w złożonym 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.

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

Uruchamianie i uruchamianie błyskawiczne

Bardziej spójny jest sposób działania opcji Używaj tego samego wyboru w przypadku przyszłych uruchomień w oknie Wybierz miejsce docelowe wdrożenia. Jeśli włączona jest opcja Użyj tych samych, okno Wybierz cel wdrożenia otworzy się tylko przy pierwszym użyciu polecenia Uruchom i będzie widoczne do momentu odłączenia wybranego urządzenia.

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 są zawarte 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 do 27.1.12.

Główne usprawnienia to między innymi:

  • 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 Androida P w wersji dla deweloperó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ń.