Znane problemy z Androidem Studio i wtyczką Android Gradle

Ta strona zawiera informacje o znanych problemach z Android Studio Ladybug i wtyczką Androida do obsługi Gradle w wersji 8.7.0. Jeśli napotkasz problem, którego nie ma na liście, zgłoś błąd.

Przejdź na wersję podglądową: każda wersja Android Studio i wtyczki Gradle do Androida ma na celu poprawę stabilności i wydajności oraz dodanie nowych funkcji. Aby już teraz korzystać z zalet nadchodzących wersji, pobierz i zainstaluj wersję testową Android Studio.

Znane problemy z Android Studio

W tej sekcji opisujemy znane problemy występujące w najnowszej stabilnej wersji Android Studio.

Opcja „Zastosuj zmiany i ponowne uruchomienie aktywności” nie uruchamia ponownie aktywności na urządzeniach z poziomem interfejsu API 35 ani na emulatorach

Gdy wdrożysz zmiany kodu na urządzeniu z API 35 za pomocą opcji „Zastosuj zmiany i ponowne uruchomienie aktywności”, aplikacja nie zostanie ponownie uruchomiona i nie zobaczysz efektu zmian. Jeśli uruchomisz aplikację ponownie, zobaczysz efekt zmian w kodzie. Nasz zespół intensywnie pracuje nad rozwiązaniem tego problemu.

okno pomocy Firebase wyświetla komunikat o błędzie.

Jeśli w oknie Asystenta Firebase (Narzędzia > Firebase w menu głównym) pojawi się komunikat o błędzie, nieważ dane w pamięci podręcznej i ponownie uruchom Android Studio, aby usunąć błąd.

Nie można wyodrębnić widoku za pomocą narzędzia Layout Inspector

Możliwość wyodrębnienia widoku za pomocą wbudowanego inspektora układu jest tymczasowo niedostępna. Pracujemy nad rozwiązaniem tego problemu w kolejnej wersji.

Nie wszystkie węzły w Compose można sprawdzić za pomocą narzędzia Layout Inspector

Jeśli zauważysz, że nie wszystkie węzły w Compose są dostępne do inspekcji podczas korzystania z Inspektora układu, jest to prawdopodobnie spowodowane błędem, który został naprawiony w wersji Compose 1.5.0-alpha04. Jeśli masz ten problem, zaktualizuj Compose do wersji 1.5.0-alpha04 lub nowszej.

Błąd podczas renderowania podglądu w edytorze

Począwszy od wersji Android Studio Chipmunk, jeśli w panelu problemów widzisz problemy java.lang.NoSuchFieldError: view_tree_saved_state_registry_owner lub java.lang.ClassNotFoundException: androidx.savedstate.R$id, pamiętaj, aby w module uwzględnić zależność debugImplementation od androidx.lifecycle:lifecycle-viewmodel-savedstate.

Jeśli w panelu problemów widzisz java.lang.NoSuchFieldError: view_tree_lifecycle_owner, pamiętaj, aby w module uwzględnić zależność debugImplementation od androidx.lifecycle:lifecycle-runtime.

Jeśli w panelu problemów widzisz java.lang.NoClassDefFoundError: Could not initialize class androidx.customview.poolingcontainer.PoolingContainer lub java.lang.NoClassDefFoundError: androidx/customview/poolingcontainer/PoolingContainerListener w modułach, uwzględnij w nich zależność debugImplementation od androidx.customview:customview-poolingcontainer.

Błąd podczas używania różnych haseł do klucza i sklepu z kluczami

Począwszy od wersji 4.2, Android Studio działa na platformie JDK 11. Ta aktualizacja powoduje zmianę działania związaną z kluczami podpisywania.

Gdy klikniesz Generuj > wygeneruj podpisany pakiet / APK i spróbujesz skonfigurować podpisywanie aplikacji w przypadku pakietu aplikacji lub pliku APK, podanie różnych haseł dla klucza i sklepu z kluczami może spowodować ten błąd:

Key was created with errors:
Warning: Different store and Key passwords not supported for PKCS12 Key stores

Aby obejść ten problem, wpisz to samo hasło do klucza i keystore.

Android Studio nie uruchamia się po zainstalowaniu wersji 4.2

Studio próbuje zaimportować poprzednie .vmoptions i oczyścić je, aby mogły współpracować z odbieraczem śmieci używanym przez JDK 11. Jeśli ten proces zakończy się niepowodzeniem, IDE może się nie uruchomić w przypadku niektórych użytkowników, którzy skonfigurowali niestandardowe opcje maszyny wirtualnej w pliku .vmoptions.

Aby obejść ten problem, zalecamy dodanie komentarza do opcji niestandardowych w pliku .vmoptions (za pomocą znaku „#”). Plik .vmoptions możesz znaleźć w tych miejscach:

Windows

C:\Users\YourUserName\AppData\[Local|Roaming]\Google\AndroidStudio4.2\studio64.exe.vmoptions

macOS

~/Library/Application Support/Google/AndroidStudio4.2/studio.vmoptions

Linux

~/.config/Google/AndroidStudio4.2/studio64.vmoptions

Jeśli po zastosowaniu tego obejścia Studio nadal się nie uruchamia, nie uruchamia się po uaktualnieniu.

Aplikacje korzystające z Database Inspector ulegają awarii na emulatorze Androida 11

Aplikacje korzystające z Database Inspector mogą się zawieszać podczas działania na emulatorze Androida 11. W logcat może pojawić się błąd podobny do tego:

 Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)

Aby rozwiązać ten problem, uaktualnij emulator Androida 11 do wersji 9 lub nowszej, klikając Narzędzia > Menedżer pakietu SDK. Na karcie Platformy pakietu SDK zaznacz pole Pokaż szczegóły pakietu i wybierz wersję 9 lub nowszą emulatora Androida 11.

Studio nie uruchamia się po uaktualnieniu

Jeśli po uaktualnieniu Studio nie uruchamia się, problem może być spowodowany nieprawidłową konfiguracją Android Studio zaimportowaną z poprzedniej wersji Android Studio lub niezgodnym wtykiem. Aby obejść ten problem, spróbuj usunąć (lub zmienić nazwę w celu utworzenia kopii zapasowej) katalog poniżej (w zależności od wersji Android Studio i systemu operacyjnego) i ponownie uruchom Android Studio. Spowoduje to zresetowanie Android Studio do stanu domyślnego z usuniętymi wszystkimi wtyczkami innych firm.

W Android Studio 4.1 i nowszych:

  • Windows: %APPDATA%\Google\AndroidStudio<version>
    Przykład: C:\Users\your_user_name\AppData\Roaming\Google\AndroidStudio4.1

  • macOS: ~/Library/Application Support/Google/AndroidStudio<version>
    Przykład: ~/Library/Application Support/Google/AndroidStudio4.1

  • Linux: ~/.config/Google/AndroidStudio<version>~/.local/share/Google/AndroidStudio<version>
    Przykład: ~/.config/Google/AndroidStudio4.1~/.local/share/Google/AndroidStudio4.1

W Android Studio 4.0 i starszych:

  • Windows: %HOMEPATH%\.AndroidStudio<version>\config
    Przykład: C:\Users\your_user_name\.AndroidStudio3.6\config

  • macOS: ~/Library/Preferences/AndroidStudio<version>
    Przykład: ~/Library/Preferences/AndroidStudio3.6

  • Linux: ~/.AndroidStudio<version>/config
    Przykład: ~/.AndroidStudio3.6/config

Pamiętaj, że katalog konfiguracji w wersjach Canary i Beta Android Studio to PreviewX.Y, a nie X.Y, jak w przypadku <version>. Na przykład kompilacje Android Studio 4.1 Canary używają katalogu AndroidStudioPreview4.1 zamiast katalogu AndroidStudio4.1, który jest używany w przypadku wersji kandydatów i wersji stabilnych.

Problem z kompilacją w projektach wieloplatformowych Kotlina

W kodzie Kotlin MPP mogą wystąpić błędy kompilacji z powodu braku symboli. Problem powinien zostać rozwiązany przez uaktualnienie wtyczki Kotlin do wersji 1.4.

Konflikty mapowania klawiszy w systemie Linux

W Linuxie niektóre skróty klawiszowe są niezgodne z domyślnymi skrótami klawiszowymi systemu Linux i popularnych menedżerów okien, takich jak KDE i GNOME. Te sprzeczne skróty klawiszowe mogą nie działać zgodnie z oczekiwaniami w Android Studio.

Więcej informacji o tym problemie (w tym o możliwych obejściach) znajdziesz w narzędziu do śledzenia błędów IntelliJ.

Mały tekst interfejsu w ChromeOS

Na ChromeOS tekst może być znacznie mniejszy niż w poprzednich wersjach. Aby obejść ten problem:

  1. Otwórz okno Ustawienia, klikając Plik > Ustawienia.
  2. Kliknij Wygląd i zachowanie > Wygląd.
  3. Wybierz Użyj niestandardowej czcionki.
  4. Zwiększ rozmiar czcionki.
  5. W oknie Ustawienia kliknij Edytor > Font.
  6. Zwiększ rozmiar czcionki.
  7. Kliknij OK.

Edytowanie kodu

W tej sekcji opisano znane problemy związane z edytorem kodu.

Zamrożony wprowadzanie tekstu na klawiaturze – problemy z „iBus” w Linuksie

Istnieją pewne znane interakcje między demonem iBus w systemie Linux a Android Studio. W niektórych przypadkach środowisko IDE przestaje reagować na dane wprowadzane z klawiatury lub zaczyna generować losowe znaki. Ten błąd jest spowodowany brakiem synchronizacji między iBus a XLib + AWT. Został już zgłoszony do źródeł w JetBrainsiBus. Obecnie istnieją 3 sposoby obejścia tego problemu:

  • Obejście 1: wymuś tryb synchroniczny w iBus. Zanim uruchomisz Android Studio, wykonaj na wierszu poleceń następujące polecenie:
    $ IBUS_ENABLE_SYNC_MODE=1 ibus-daemon -xrd
  • Rozwiązanie 2: wyłącz w Android Studio dane wejściowe iBus. Aby wyłączyć metody wprowadzania iBus tylko w Android Studio, wykonaj to polecenie w wierszu poleceń:
    $ XMODIFIERS= ./bin/studio.sh
    To obejście problemu wyłącza tylko metody wprowadzania w Android Studio, a nie w innych aplikacjach, które mogą być uruchomione. Pamiętaj, że jeśli ponownie uruchomisz demona podczas działania Android Studio (np. przez uruchomienie ibus-daemon -rd), wyłączysz metody wprowadzania danych we wszystkich innych aplikacjach. Może to też spowodować awarię JVM w Android Studio z błędem segmentacji.
  • Rozwiązanie 3: sprawdź ponownie skróty, aby upewnić się, że skrót do następnego pola tekstowego nie jest ustawiony na Ctrl+Spacja, ponieważ jest to też skrót do funkcji uzupełniania kodu w Android Studio. W Ubuntu 14.04 (Trusty) domyślnym skrótem jest Super+Spacja, ale ustawienia z poprzednich wersji mogą być nadal dostępne. Aby sprawdzić przypisania skrótów, uruchom ibus-setup w wierszu poleceń, aby otworzyć okno Preferencje IBus. W sekcji Skróty klawiszowe zaznacz Następna metoda wprowadzania. Jeśli jest ustawione na Ctrl + spacja, zmień je na Super + spacja lub inny skrót.

Konfiguracja projektu

W tej sekcji opisano znane problemy związane z konfiguracją projektu i synchronizacją Gradle.

Nie udało się zsynchronizować Gradle: Broken Pipe

Problem polega na tym, że demon Gradle próbuje używać IPv4 zamiast IPv6.

  • Sposób obejścia problemu 1: w Linuksie wpisz w pliku ~/.profile lub ~/.bash_profile:
    export _JAVA_OPTIONS="-Djava.net.preferIPv6Addresses=true"
  • Sposób obejścia problemu 2: w pliku vmoptions w Android Studio zmień wiersz -Djava.net.preferIPv4Addresses=true na -Djava.net.preferIPv6Addresses=true. Więcej informacji znajdziesz w przewodniku użytkownika dotyczącym IPv6.

Błędy „peer not authenticated” (urządzenie nie jest uwierzytelnione) w synchronizacji Gradle lub Menedżerze pakietu SDK

Główną przyczyną tych błędów jest brak certyfikatu w pliku $JAVA_HOME/jre/lib/certificates/cacerts. Aby naprawić te błędy:

  • Jeśli korzystasz z serwera proxy, spróbuj połączyć się bezpośrednio. Jeśli połączenie bezpośrednie działa, aby połączyć się przez serwer proxy, może być konieczne użycie polecenia keytool w celu dodania certyfikatu serwera proxy do pliku cacerts.
  • Zainstaluj ponownie obsługiwaną, niemodyfikowaną wersję JDK. Istnieje znany problem, który dotyczy użytkowników Ubuntu i powoduje pusty ekran /etc/ssl/certs/java/cacerts. Aby obejść ten problem, uruchom w wierszu poleceń następujące polecenie:
    sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

Wdrażanie

W tej sekcji opisano znane problemy związane z wdrażaniem aplikacji na urządzeniu połączonym z internetem.

[Tylko Mac OS] Aktualizacje przyrostowe nie są stosowane z powodu problemu z monitorowaniem plików Gradle w przypadku projektów zapisanych w folderze /System/Volumes/Data

Problem Gradle 18149 dotyczy wersji wtyczki Android Gradle w wersji 7.0 lub nowszej, ponieważ wymagają one Gradle w wersji 7.0 lub nowszej. Począwszy od Gradle 7.0, monitorowanie plików jest domyślnie włączone. Jeśli pracujesz na Mac OS, a Twój projekt jest zapisany w folderze /System/Volumes/Data, śledzenie zmian plików w Gradle nie będzie działać prawidłowo. W efekcie system kompilacji nie zauważy żadnych zmian w plikach i nie zaktualizuje plików APK. Kod cząstkowego wdrożenia nie będzie wtedy nic robić, ponieważ stan lokalnego pliku APK jest taki sam jak na urządzeniu.

Aby obejść ten problem, przenieś katalog projektu do katalogu użytkownika, czyli do /Users/username. System kompilacji zostanie powiadomiony o zmianach w plikach przez obserwowanie plików w Gradle, a zmiany przyrostowe zostaną zastosowane.

Android Emulator HAXM w systemie macOS High Sierra

Aby zapewnić najlepszą zgodność i stabilność emulatora Androida na macOS High Sierra (10.13), wymagana jest wersja HAXM 6.2.1 lub nowsza. W systemie macOS 10.13 proces instalowania rozszerzeń jądra, takich jak HAXM, jest bardziej skomplikowany. Musisz ręcznie zezwolić na zainstalowanie rozszerzenia jądra w ten sposób:

  1. Najpierw spróbuj zainstalować najnowszą wersję HAXM za pomocą Menedżera pakietu SDK.
  2. Na komputerze Mac otwórz Preferencje systemowe > Ochrona i prywatność.
  3. Jeśli zobaczysz alert, że wczytywanie oprogramowania systemowego od dewelopera „Intel Corporation” zostało zablokowane, kliknij Zezwól:

Więcej informacji i obejść można znaleźć na tej stronie Apple oraz w problemie 62395878.

Apply Changes

W tej sekcji opisaliśmy znane problemy związane z opcją Zastosuj zmiany.

Nowa nazwa aplikacji nie została zastosowana

Jeśli zmienisz nazwę aplikacji, a potem spróbujesz zastosować tę zmianę, zaktualizowana nazwa może nie zostać uwzględniona. Aby obejść ten problem, kliknij Uruchom Ikona uruchomienia i ponownie wdrożyć aplikację, aby sprawdzić zmiany.

Problem w środowisku wykonawczym Androida powoduje błąd

Jeśli używasz urządzenia z Androidem 8.0 lub 8.1, podczas próby zastosowania pewnych zmian (zwłaszcza jeśli używasz Kotlina) może pojawić się komunikat „VERIFICATION_ERROR”. Ten komunikat jest spowodowany problemem z platformą Android Runtime, który został rozwiązany w Androidzie 9.0 i nowszych. Chociaż problem uniemożliwia zastosowanie zmian, możesz ponownie uruchomić Ikona uruchomieniaaplikację, aby zobaczyć zmiany. Zalecamy jednak zaktualizowanie urządzenia do Androida 9.0 lub nowszego.

Debugowanie i testowanie

W tej sekcji opisaliśmy znane problemy związane z debugowaniem i testowaniem aplikacji.

testy JUnit z brakami zasobów w ścieżce klas, gdy są uruchamiane z Android Studio;

Jeśli w modułach Java masz określone foldery zasobów, nie zostaną one znalezione podczas uruchamiania testów z IDE. Uruchamianie testów za pomocą Gradle z poziomu wiersza poleceń powinno zadziałać. Możesz też uruchomić zadanie Gradle check w IDE. Więcej informacji znajdziesz w problemie 64887.

Ten problem występuje, ponieważ od wersji IntelliJ 13 wymagane jest, aby classpath zawierał tylko jeden folder. Budujący IntelliJ kopiuje wszystkie zasoby do folderu kompilacji, ale Gradle nie kopiuje zasobów.

  • Sposób obejścia problemu 1: zamiast uruchamiać test jednostkowy, uruchom zadanie Gradle check z IDE.
  • Rozwiązanie 2. Zaktualizuj skrypt kompilacji, aby ręcznie kopiować zasoby do folderu kompilacji. Więcej informacji znajdziesz w komentarzu 13.

Uruchamianie testów JUnit może skompilować kod 2 razy.

Podczas tworzenia nowego projektu konfiguracja szablonu JUnit może zostać utworzona z 2 etapami „Przed uruchomieniem”: Make i Make z uwzględnieniem Gradle. Ta konfiguracja jest następnie propagowana do wszystkich utworzonych konfiguracji uruchomienia JUnit.

  • Aby rozwiązać problem w bieżącym projekcie, kliknij Uruchom > Edytuj konfiguracje i zmień domyślną konfigurację JUnit, aby zawierała tylko krok Make obsługujący Gradle.
  • Aby rozwiązać problem w przyszłych projektach, kliknij Plik > Zamknij projekt. Powinien pojawić się ekran powitalny. Następnie kliknij Konfiguracja > Ustawienia projektu > Konfiguracje uruchomień i zmień konfigurację JUnit, aby zawierała tylko krok Make obsługujący Gradle.

Niektóre konfiguracje testów nie działają

Nie wszystkie konfiguracje uruchomień, które są dostępne po kliknięciu prawym przyciskiem myszy metody testu, są prawidłowe. Nieprawidłowe są w szczególności te konfiguracje:

  • Konfiguracje uruchomienia Gradle (których ikona to logo Gradle) nie działają.
  • Konfiguracje uruchomień JUnit (mające ikonę bez zielonego Androida) nie mają zastosowania do testów pomiarowych, których nie można uruchomić na lokalnej maszynie JVM.
Android Studio zapamiętuje też konfigurację uruchomienia utworzoną w danym kontekście (np. po kliknięciu prawym przyciskiem myszy konkretnej klasy lub metody) i nie będzie w przyszłości proponować uruchomienia w innej konfiguracji. Aby to naprawić, kliknij Uruchom > Edytuj konfiguracje i usuń nieprawidłowo utworzone konfiguracje.

Dodawanie punktów przerwania w Javie podczas debugowania kodu natywnego

Gdy aplikacja jest wstrzymana na punkcie przerwania w natywnym kodzie, debugery AutoDual mogą nie od razu rozpoznać nowych punktów przerwania w języku Java. Aby uniknąć tego problemu, dodaj punkty przerwania w języku Java przed rozpoczęciem sesji debugowania lub gdy aplikacja jest wstrzymana w punkcie przerwania w języku Java. Więcej informacji znajdziesz w problemie 229949.

Wychodzenie z debugera natywnego

Jeśli podczas debugowania kodu Java i natywnego używasz debugera Auto lub Dual, a chcesz przejść do natywnej funkcji z kodu Java (np. debuger wstrzymuje wykonywanie kodu na linii kodu Java, która wywołuje funkcję natywną, a Ty klikasz Step Into ), aby wrócić do kodu Java, kliknij Resume Program (zamiast Step Out lub Step Over ). Proces aplikacji nadal będzie wstrzymany, więc aby go wznowić, kliknij Resume Program na karcie your-module-java. Więcej informacji znajdziesz w problemie 224385.

Debuger natywny zawiesza się podczas wczytywania bibliotek

Podczas pierwszego korzystania z narzędzia do debugowania natywnego po przejściu na Android Studio 4.2 lub nowszą wersję może ono przestać odpowiadać podczas wczytywania bibliotek z urządzenia z Androidem. Ten problem jest trwały i pojawia się nawet wtedy, gdy zatrzymasz i ponownie uruchomisz debuger. Aby rozwiązać ten problem, usuń pamięć podręczną LLDB na stronie $USER/.lldb/module-cache/.

Narzędzia do debugowania natywnego ulegają awarii z komunikatem „Debugger process finished with exit code 127”

Ten błąd występuje na platformach opartych na Linuksie podczas uruchamiania debugera natywnego. Wskazuje, że jedna z bibliotek wymaganych przez natywny debuger nie jest zainstalowana w systemie lokalnym. Nazwa brakującej biblioteki może być już wydrukowana w pliku idea.log. Jeśli nie, możesz użyć terminala, aby przejść do katalogu instalacji Android Studio i wykonać wiersz poleceń bin/lldb/bin/LLDBFrontend --version, aby dowiedzieć się, których bibliotek brakuje. Zwykle brakująca biblioteka to ncurses5, ponieważ niektóre najnowsze dystrybucje Linuksa zostały już zaktualizowane do wersji ncurses6.

Profilatory

W tej sekcji opisaliśmy znane problemy związane z profilatorami.

Narzędzia do profilowania pamięci: profilowanie niedostępne podczas uruchamiania aplikacji

Narzędzie Native Memory Profiler jest obecnie niedostępne podczas uruchamiania aplikacji. Ta opcja będzie dostępna w kolejnej wersji.

Aby obejść ten problem, możesz użyć samodzielnego narzędzia do profilowania w wierszu poleceń Peretto do rejestrowania profili uruchamiania.

Błędy związane z czasem oczekiwania w CPU Profiler

Po wybraniu konfiguracji Przykładowe metody Java lub Śledzenie metod Java w profilu CPU w Android Studio mogą wystąpić błędy „Nie udało się zatrzymać nagrywania”. Często są to błędy związane z przekroczeniem limitu czasu, zwłaszcza jeśli w pliku idea.log widzisz ten komunikat o błędzie:

Wait for ART trace file timed out

Błędy limitu czasu zwykle dotyczą metod śledzonych bardziej niż metod próbkowych, a dłuższych nagrań bardziej niż krótszych. Aby tymczasowo rozwiązać problem, możesz nagrywać krótsze filmy.

Jeśli w Profilerze wystąpią problemy z przekroczeniem limitu czasu, zgłoś błąd, podając markę i model urządzenia oraz wszystkie istotne wpisy z idea.log i logcat.

Wyjątek ADB podczas debugowania lub profilowania

Gdy używasz Platform Tools 29.0.3, debugowanie natywne i profilowanie w Android Studio mogą nie działać prawidłowo. Po wybraniu Help > Show Log (Pomoc > Pokaż dziennik) w pliku idea.log może pojawić się błąd „AdbCommandRejectedException” lub „Failed to connect port” (Nie udało się połączyć z portem). Aktualizacja Platform Tools do wersji 29.0.4 lub nowszej rozwiązuje oba problemy.

Aby uaktualnić Platform Tools:

  1. Otwórz Menedżera pakietu SDK w Android Studio, klikając Narzędzia > Menedżer pakietu SDK lub klikając Menedżer pakietu SDK na pasku narzędzi.
  2. Zaznacz pole wyboru obok Android SDK Platform-Tools. W kolumnie po lewej stronie powinna pojawić się ikona pobierania .
  3. Kliknij Zastosuj lub OK.

Wtyczka uniemożliwia działanie okna danych wyjściowych

Użycie wtyczki CMake simple highlighter zapobiega wyświetlaniu treści w oknie „Wyjście kompilacji”. Kompilacja jest uruchamiana i wyświetla się karta Wyjście kompilacji, ale nie jest wyświetlany żaden wynik (problem #204791544).

Kolejność instalacji uniemożliwia uruchomienie

Zainstalowanie nowszej wersji Android Studio przed zainstalowaniem starszej może uniemożliwić uruchomienie starszej wersji. Jeśli na przykład najpierw zainstalujesz wersję Canary Android Studio, a potem spróbujesz zainstalować i uruchomić wersję stabilną, ta ostatnia może się nie uruchomić. W takich przypadkach musisz wyczyścić pamięć podręczną, aby uruchomić stabilną (starszą) wersję. W systemie macOS, aby wyczyścić pamięć podręczną, usuń katalog Library/ApplicationSupport/Google/AndroidStudioversion_number. Aby wyczyścić pamięć podręczną w systemie Windows, użyj funkcji Oczyszczanie dysku.

Espresso Test Recorder nie działa z Compose

Nagrywarka testów Espresso nie działa z projektami, które obejmują Compose. Aby utworzyć testy interfejsu użytkownika dla projektów, które obejmują Compose, zapoznaj się z artykułem Testowanie układu Compose.

Skrót logcat jest w konflikcie z układami klawiatury w językach innych niż angielski

Jeśli używasz układu klawiatury w języku innym niż angielski, domyślny skrót klawiaturowy Logcat może wchodzić w kolizję z układem i uniemożliwiać wpisywanie niektórych znaków podczas edycji tekstu w Android Studio. Aby obejść ten problem, usuń lub ponownie mapuj konfliktowy układ klawiszy Logcat. Aby edytować mapy klawiszy Logcat w Android Studio, kliknij Android Studio > Ustawienia > Mapa klawiszy i na liście map klawiszy wyszukaj Logcat. Więcej informacji znajdziesz w problemie 263475910.

Ten problem zostanie rozwiązany przez usunięcie skrótu Logcat w Android Studio Electric Eel Patch 1.

Znane problemy z wtyczką Androida do obsługi Gradle

W tej sekcji opisaliśmy znane problemy występujące w najnowszej stabilnej wersji wtyczki Gradle dla Androida.

Nie wszystkie zależności biblioteki funkcji dynamicznych są sprawdzane przez lint

Podczas uruchamiania lint z checkDependencies = true w module aplikacji zależności biblioteki funkcji dynamicznych nie są sprawdzane, chyba że są też zależnościami aplikacji (problem #191977888). Aby obejść ten problem, można uruchomić zadanie lint dla tych bibliotek.

Podpisywanie pliku o nazwie zawierającej znaki powrotu karetki

Podpisywanie plików JAR (schemat v1) nie obsługuje nazw plików zawierających znaki tabulacji (problem #63885809).

Modyfikowanie wyników wariantów w czasie kompilacji może nie działać.

Korzystanie z interfejsu Variant API do manipulowania wyjściami wariantów nie działa w nowym wtyczce. Nadal można go używać do wykonywania prostych zadań, takich jak zmiana nazwy pliku APK podczas kompilacji:

// If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

Bardziej skomplikowane zadania, które wymagają dostępu do obiektów outputFile, nie będą już jednak działać. Dzieje się tak, ponieważ zadania związane z wariantami nie są już tworzone na etapie konfiguracji. W efekcie wtyczka nie zna wszystkich swoich danych wyjściowych z góry, ale szybciej się konfiguruje.

manifestOutputFile nie jest już dostępny

Metoda processManifest.manifestOutputFile() jest niedostępna i po jej wywołaniu pojawia się ten błąd:

A problem occurred configuring project ':myapp'.
   Could not get unknown property 'manifestOutputFile' for task
   ':myapp:processDebugManifest' of type
   com.android.build.gradle.tasks.ProcessManifest.

Zamiast wywoływać funkcję manifestOutputFile(), aby pobrać plik manifestu dla każdej wersji, możesz wywołać funkcję processManifest.manifestOutputDirectory(), aby zwrócić ścieżkę do katalogu zawierającego wszystkie wygenerowane pliki manifestu. Następnie możesz zlokalizować plik manifestu i zastosować do niego swoją logikę. Przykład poniżej dynamicznie zmienia kod wersji w pliku manifestu:

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.processManifest.doLast {
            // Stores the path to the maifest.
            String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"
            // Stores the contents of the manifest.
            def manifestContent = file(manifestPath).getText()
            // Changes the version code in the stored text.
            manifestContent = manifestContent.replace('android:versionCode="1"',
                    String.format('android:versionCode="%s"', generatedCode))
            // Overwrites the manifest with the new text.
            file(manifestPath).write(manifestContent)
        }
    }
}

Problemy z obsługą AIDL w wersji AGP 7.3.0 i Kotlin 1.7.x

Użycie AGP 7.3.0 z KAPT w Kotlinie 1.7.x powoduje usunięcie zestawów źródeł AIDL dla określonych wariantów kompilacji. Nadal możesz używać innych zbiorów danych AIDL, w tym tych dotyczących main/, typów kompilacji, wersji produktu i ich kombinacji. Jeśli musisz używać zestawów źródeł AIDL dla poszczególnych wariantów, nadal używaj Kotlina w wersji 1.6.21.

Rozwiązane znane problemy

W tej sekcji opisano znane problemy, które zostały rozwiązane w ostatniej wersji. Jeśli napotkasz któryś z tych problemów, zaktualizuj Android Studio do najnowszej stabilnej lub wersji podglądowej.

Rozwiązano w Android Studio 2021.1.1

  • Brak wyjścia lint: w pliku stdout nie jest wyświetlany żaden tekst lint, gdy zadanie lint ma wartość UP-TO-DATE (problem #191897708). Naprawiono w AGP 7.1.0-alpha05.
  • Problemy z testowaniem jednostkowym projektu aplikacji, który korzysta z wtyczki Hilt: classpath testu jednostkowego zawiera nieprzetworzone klasy aplikacji, co oznacza, że Hilt nie przekształca klas aplikacji, aby obsługiwać wstrzyknięcie zależności podczas wykonywania testów jednostkowych (problem 213534628). Rozwiązano w wersji AGP 7.1.1.

Rozwiązano w Android Studio 2020.3.1

  • Wyjątki lint w projektach Kotlina: w projektach Kotlina, które ustawiającheckDependencies = true, mogą wystąpić wyjątki lub błędy związane z wskaźnikiem null (problem #158777858).

Rozwiązano w Android Studio 4.2

  • IDE zawiesza się w systemie macOS Big Sur: Android Studio 4.1 może zawiesić się podczas otwierania okna dialogowego.

Rozwiązano w Android Studio 4.1

  • Uruchom ponownie, aby zastosować ustawienia pamięci z poprzedniej wersji IDE: po zaktualizowaniu Android Studio musisz je ponownie uruchomić, aby zastosować ustawienia pamięci przeniesione z wcześniejszej wersji IDE.
  • Klasa manifestu z niestandardowymi ciągami znaków uprawnień nie jest już generowana domyślnie: jeśli chcesz wygenerować klasę, ustaw wartość android.generateManifestClass = true.

Rozwiązano w Android Studio 3.6

  • Błąd instalacji pliku APK w systemie LineageOS: wdrożenie aplikacji na urządzeniach z określonymi wersjami LineageOS lub CyanogenMod może się nie udać i wyjątek INSTALL_PARSE_FAILED_NOT_APK.

    W wersji Android Studio 3.6 Beta 1 i wyższych IDE obsługuje tę wyjątek, wykonując pełną instalację aplikacji podczas wdrażania jej na urządzeniach z LineageOS lub CyanogenMod, co może wydłużyć czas wdrażania.

Rozwiązano w Android Studio 3.5.2

  • Błędny styl kodu XML: podczas edytowania kodu XML IDE zastosowało nieprawidłowy styl kodu po wybraniu Kod > Zmień format kodu na pasku menu.

Rozwiązano w Android Studio 3.3.1

  • Błędy braku pamięci podczas skanowania projektów opartych na C++: gdy Gradle skanuje projekt, który ma kod C++ w więcej niż 1 miejscu na tym samym dysku, skanowanie obejmuje wszystkie katalogi poniżej pierwszego wspólnego katalogu. Skanowanie dużej liczby katalogów i plików może spowodować wystąpienie błędów związanych z brakiem pamięci.

    Więcej informacji o tym problemie znajdziesz w błędzie z nim powiązanym.