Kompilator wbudowany Android Studio pokazuje czerwone błędy, ale kompilacja za pomocą gradle działa dobrze


147

Skonfigurowałem mój projekt w Android Studio do korzystania z biblioteki Square Wire , zgodnie z tym pytaniem .

Build-> Compile Projectdziała dobrze.

2:03:10 PM Compilation completed successfully in 31 sec

Jeśli jednak otworzę jeden z wygenerowanych przeze mnie plików bufora protokołu, pakiet Square nie zostanie rozpoznany.

Błędy kompilacji wbudowanej w Android Studio

Innym objawem jest to, że metody odziedziczone z Messageklasy Square wyświetlają w edytorze błąd kompilacji „Nie można rozwiązać metody”, mimo że kompilują się i działają poprawnie.

Błąd kompilacji jednowierszowej Android Studio

Czy muszę zrobić coś więcej niż tylko dodanie zależności build.gradledla mojego modułu w moim projekcie?


Miałem podobny problem z moimi bibliotekami (nie zewnętrznymi), zobacz, jak udało mi się to naprawić tutaj: stackoverflow.com/a/50569818/373033
— nah0y

Odpowiedzi:


132

Poniższe kroki pomogą

  1. Zamknij projekt, aw folderze projektu usuń project/.idea
  2. Usuń ~/.gradlefolder.

Otwórz projekt ponownie. Wszystko powinno zostać rozwiązane.


1
Spędzanie godzin nad tym problemem. Dzięki. Mój błąd polegał na tym, że właśnie usunąłem .gradle, a nie .idea
— M o

2
Pomogło mi to podczas usuwania plików .gradle i .idea, a następnie unieważnianie i ponowne uruchamianie rozwiązało mój problem. a następnie zsynchronizuj z Gradle.
— Pankaj

Przeniosłem .gradlefolder z C:\Users\Hasnain\.gradledo innego katalogu. Następnie studio android pokazuje błąd w każdej klasie. Następnie postępuję zgodnie z powyższymi krokami, po czym problem zostaje rozwiązany.
— hasnain_ahmad

38
Usunięcie wszystkiego w .ideakatalogu to zły pomysł, ponieważ może zresetować wszystkie ustawienia projektu. Po prostu usunąłem .idea/librariesi .idea/cachesostatecznie rozwiązałem problem po wypróbowaniu wszystkich innych rozwiązań.
— fdermishin

działał bardzo dobrze w AS 3.1.3. Nie musiałem nawet unieważniać pamięci podręcznych. Miejmy nadzieję, że AS będzie teraz budować szybciej!
— Someone Somewhere,

111

Dzięki free3dom za skierowanie mnie tutaj na właściwe tory.

Diagnoza

Wydaje się, że Sync Project with Gradle Filesopcja w Android Studio zapewnia Project Structureaktualność bibliotek.

gradle sync

Jednak w moim przypadku były błędy:

znalezione błędy

Rozszerzenie (niezbyt oczywistego) linku pokazało szczegóły. Moja biblioteka wire-runtime wyświetlała się w nieprawidłowej lokalizacji:

biblioteki

Wydawało się, że to kac po mojej pierwotnej konfiguracji, w której zaimportowałem JAR do folderu libs.

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

Następnie zmieniłem go tak, aby był importowany bezpośrednio z Maven Central ( jak tutaj ) i wydaje się, że stare ustawienie nigdy nie zostało nadpisane nowym.

Poprawka

Poprawka polega na usunięciu zależności biblioteki z Project Structureekranu, a następnie Sync Project with Gradle Filesponownie.

Więcej szczegółów

Możesz również sprawdzić, która ścieżka jest używana do zasobu, otwierając .idea/libraries/wire_runtime_1_2_0.xmlbezpośrednio.

Mój zepsuty był:

  <component name="libraryTable">
  <library name="wire-runtime-1.2.0">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/MY_MODULE/libs/wire-runtime-1.2.0.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />

Po usunięciu i ponownym dodaniu biblioteki zmieniła się root urlna:

      <root url="jar://$USER_HOME$/.gradle/caches/artifacts-26/filestore/com.squareup.wire/wire-runtime/1.2.0/jar/44e7acbd5eb6f29698181dc3d67a60acf7efee80/wire-runtime-1.2.0.jar!/" />

Aktualizacja

Android Studio v0.4.4 najwyraźniej naprawia inne błędy, które mają te same objawy, więc jeśli masz starszą wersję, możesz chcieć zaktualizować.


3
Dziękuję Dan J. Zanim wypróbuję Twoje rozwiązanie, wypróbowałem to łatwiejsze (według mnie) i zadziałało: Otwórz panel Gradle po prawej stronie edytora (powyżej „Maven Projects” i „Commander”) i kliknięcie przycisku odświeżania. To odświeżyło ustawienia modułu. Podziękowania dla @Matteo Danieli (patrz: stackoverflow.com/a/17043001 )
— almighty972

1
potrzebowałem usunąć lokalne zależności jar, które rozwiązały to za mnie, dzięki za inspirację
— jhegedus

Właśnie kliknąłem „Synchronizuj projekt z plikami Gradle” i wszystko jest w porządku! Dziękuję Ci bardzo! Uratowałeś mi dzień haha
— Jorge Gabriel Siqueira

Nie działa dla mnie. Ale usunięcie .gradle i .idea zadziałało
— Golnar

Obecnie ten sam przycisk jest wyświetlany jako ikona słonia ze strzałką w dół.
— tm

87

Proste rozwiązanie

Przejdź przez link i zadziałało.

  1. Wybierz Fileopcję z menu w lewej górnej części studia Android.
  2. Wybierz opcję: Invalidate Cache/RestartOtworzy się okno dialogowe.
  3. Kliknij pierwszy przycisk z opcją: Invalidate and Restart
  4. Spowoduje to zamknięcie Android Studio i ponowne uruchomienie. Rozpocznie się również ponowne indeksowanie projektu.

To rozwiązało mój problem

Przejdź do Plik > Unieważnij pamięć podręczną / Uruchom ponownie > Unieważnij i uruchom ponownie

Źródło tutaj dla youtube


To zadziałało dla mnie; Android Studio pokazywał błędy wszędzie po tym, jak próbowałem programować w miejscu o słabym odbiorze Wi-Fi. (!!!) Następnie upewniłem się, że mam dobre połączenie Wi-Fi i odbudowałem, jednak błędy pozostały. Nawet czysty / build tego nie rozwiązał. Unieważnienie pamięci podręcznych naprawiło to.
— Someone Somewhere,

Używanie Android Studio 2.1.3 w Fedorze. To rozwiązanie zadziałało dla mnie. Dodano narzędzia libgdx, a import wystąpił błąd, ale skompilował się dobrze. Zamykanie i ponowne otwieranie nie działało, ale unieważnianie i ponowne uruchamianie działało dobrze.
— JoeMoe1984,

1
Pracowano w AS 3.1.4! Myślę, że to ze wszystkich sugestii jest właściwym sposobem rozwiązania tego problemu. Jest to polecenie menu Android Studio. Jest to zdecydowanie lepsze niż ręczne resetowanie w środowisku plików.
— Jan Bergström,

Pracował dla mnie 3.5.1
— Neela

44

1) Kliknij ikonę gradle (po prawej stronie w Android Studio)

wprowadź opis obrazu tutaj

2) Kliknij przycisk odświeżania i poczekaj, aż problem zostanie rozwiązany: D

wprowadź opis obrazu tutaj


W Android Studio 3.1 + przejdź do Plik> Unieważnij pamięć podręczną / Uruchom ponownie> Unieważnij i uruchom ponownie.
— DroidDev

17

Wciąż miałem ten sam problem z Android Studio w wersji 3.2.1 i rozwiązałem problem po prostu usuwając te dwa podfoldery .ideafolderu (nie trzeba usuwać całego .ideafolderu), podczas gdy synchronizacja gradle nie działała:

  • ./idea/caches
  • ./idea/libraries

W większości przypadków rozwiązuje moje problemy. W kilku innych może być konieczne „Unieważnienie pamięci podręcznej i ponowne uruchomienie” lub też zmiana wersji Gradle.
— GoRoS


11

Po prostu zrób to na swoim studiu Android:

Plik -> Unieważnij pamięci podręczne / Uruchom ponownie -> Unieważnij i uruchom ponownie

To zadziałało dla mnie. Nie ma potrzeby czyszczenia folderu ./gradle ani ./idea


9

Moja zepsuta poprawka -

  1. Otwórz build.gradleplik
  2. Wytnij wszystko w środku dependencies{}
  3. Wklej w notatniku dla super bezpiecznego tymczasowego przechowywania
  4. Wybierz „Synchronizuj teraz” w build.gradlepliku
  5. Poczekaj, aż synchronizacja się nie powiedzie
  6. Wklej z powrotem swoje zależności
  7. Ponownie „Synchronizuj teraz”

Wypróbowałem wiele rozwiązań i to była dla mnie jedyna poprawka.


7

Miałem ten problem po aktualizacji do Android Studio 3.1. Rozwiązałem problem, aktualizując wszystkie używane przeze mnie komponenty. Więc zmieniłem następujące wpisy w moim build.gradle (aplikacja):

  1. Uaktualnij pakiet SDK (z „compileSdkVersion 25” na „compileSdkVersion 26” lub może nowszy podczas czytania tej notatki):

    // compileSdkVersion 25

    compileSdkVersion 26

    Komentarz: Ta zmiana wymusiła pobranie / zainstalowanie nowego pakietu SDK podczas następnej synchronizacji.

  2. Zaktualizuj appcompat-v7:

    // implementacja „com.android.support:appcompat-v7:25.4.0”

    implementacja „com.android.support:appcompat-v7:26.1.0”

  3. Uaktualnij firebase:

    // implementacja „com.google.firebase: firebase-ads: 11.4.2”

    implementacja „com.google.firebase: firebase-core: 12.0.1”

    implementacja „com.google.firebase: firebase-ads: 12.0.1”

  4. W PROJECT build.gradle zaktualizuj usługi Google:

    // classpath „com.google.gms: google-services: 3.1.0”

    classpath „com.google.gms: google-services: 3.2.0”

  5. Upgrade gradle (z 4.4 do 4.6). Od gradle-wrapper.properties: distributionUrl = https: //services.gradle.org/distributions/gradle-4.6-all.zip

Po tych zmianach wyczyść projekt, unieważnij pamięć podręczną / zrestartuj, usuń zawartość .idea / libraries i zsynchronizuj ponownie (nie jestem pewien co do zamówienia, ale WSZYSTKIE te działania rozwiązały problem).


1
co z innymi komponentami, które nie mają nowszej wersji?
— Amir Dadgari

Nie wiem To są komponenty, które miałem w swoim projekcie.
— Pablo Alfonso

Cześć Amir, zgodnie z oficjalną stroną internetową, najnowszą dostępną wersją jest gradle 4.4 (stan na marzec 2018). Gdzie znalazłeś Gradle 4.6?
— Pablo Alfonso

Znalazłem lokalizację Gradle 4.6. Zaktualizowałem odpowiedź. Dzięki.
— Pablo Alfonso

4
usuń zawartość .idea / libraries, to działa dla mnie. wielkie dzięki
— Tramwaj Nguyen

7

Usunięcie folderu bibliotek w .idea rozwiązało problem. Znajduje się w katalogu głównym projektu / .idea / libraries.

Używam Android Studio 3.1.4


2
To zadziałało, ale musiałem również unieważnić i ponownie uruchomić.
— Dan Anderson

5

Poniżej kroki, gdy projekt został pomyślnie skompilowany, ale z nierozwiązanymi klasami (wszystkie użycie klas będzie miało kolor czerwony we wszystkich plikach)

Krok 1. Usuń plik .gradle

Krok 2. Usuń plik .idea

Krok 3. Otwórz nowe okno Android Studio z innym projektem Android w systemie i zamknij projekt z błędem

Krok 3 . Teraz ponownie otwórz / zaimportuj projekt z paska narzędzi studia Android Studio -> Plik -> Otwórz

Uwaga: Teraz podczas importowania projektu nowe foldery .gradle i nowe .idea zostaną automatycznie wygenerowane z rozwiązanymi zależnościami przez kompilator.


2

Jeśli wszystkie powyższe odpowiedzi nie działają dla Ciebie. Po prostu spróbuj zaktualizować swoje zależności do najnowszej wersji. U mnie to zadziałało.


2

Wypróbowałem większość powyższych poprawek i to, co faktycznie zadziałało, to usunięcie wszystkich folderów konfiguracyjnych .AndroidStudio, a następnie ponowne uruchomienie Android Studio.

  • Lokalizacja: C: \ Users \ twoja.nazwa użytkownika

2

Znalazłem łatwy sposób

  • Otwórz poziom aplikacji build.gradle
  • Usuń zależność, która pokazuje błąd i synchronizuj.
  • Ponownie dodaj zależność i synchronizację.

Błąd zniknął!

Przed

Przed

Po

Po



2

Wydaje się, że każdy stosuje inne podejście do rozwiązywania tych problemów. Zasugeruję inny, który moim zdaniem jest nieco mniej inwazyjny niż inne. Kiedy wprowadzę zmiany z biblioteki aar, którą dołączam, otworzę plik „settings.gradle” dla projektu.

Następnie z listy projektów wytnij główny moduł projektu:

include ':mainproj',

a następnie zsynchronizuj swój projekt. Następnie wklej go z powrotem i ponownie zsynchronizuj projekt. Uważam, że jest to to samo, co w przypadku niektórych ręcznych kroków usuwania, ale pozwala to zrobić to z poziomu IDE nieco szybciej i mniej boleśnie.


U mnie działa dobrze. Dzięki! @Jay Snayder
— Shivam

2

Naprawiono mnie poniższą metodą

Metoda 1

Plik> Unieważnij pamięć podręczną / Uruchom ponownie> Unieważnij i uruchom ponownie

Metoda 2

  • Jeśli napotykasz ten błąd tylko w przypadku konkretnego projektu, zrób to
   1. Close current project
   2. Go to your project path C://User/Android studio project/your project
   3. Delete two files .gradle and .idea
  • Jeśli napotykasz ten błąd we wszystkich projektach, zrób to
1. Close Android studio
2. Go to the file C://Users/your username/
3. Delete files .gradle , .cache ,.android, .AndroidStudio3.5

1

Te rozwiązania nie pomogły mi z tym samym problemem w Android Studio 0.5.8.

Opisałem swoją odpowiedź na to samo pytanie (chyba): https://stackoverflow.com/a/23891829/534698 Właśnie usunąłem katalog ~ / .AndroidStudioPreview (w Ubuntu). Brakowało mi wszystkich ustawień Android Studio, ale działa.


to jedyna rzecz, która działała dla mnie. Android Studio 1.0.2
— Bobby Hargett

1

W moim przypadku z jakiegoś powodu nie ustawiono wersji wtyczki Androida . Próbowałem wyczyścić pamięć podręczną i usunąć .gradle i .idea, ale nie wyszło i po końcu wędrówki godzinami znalazłem to.

Plik> Struktura projektu


0

Miałem wcześniej podobny problem, unieważnienie pamięci podręcznej i ponowne uruchomienie nie rozwiązało go. Właśnie zrobiłem Gradle Sync i wszystko działało dobrze.



0

Dla mnie polecam słoik w bibliotece modułów. Nie może rozpatrzyć symbolu w słoju. Więc znajduję rozwiązanie dla mojej sytuacji. Użyj provideddrogi.

provided fileTree(include: ['xxx.jar'], dir: '../moduleX/libs')


0

Ten sam problem został rozwiązany, wykonując następujące czynności:

  1. zaktualizuj wersję biblioteki w gradle do dowolnej liczby losowej, np .: lib_1.0.0 -> lib_1.0.0.0

  2. gradle sync

  3. synchronizacja pokazuje błąd

  4. cofnij zmianę wersji lib_1.0.0.0 -> lib_1.0.0

  5. gradle sync

Otwórz plik java z importami, aby zobaczyć, czy błąd został usunięty.


0

Żadne z rozwiązań nie zadziałało ... uciekłem się do odinstalowania oprogramowania Java z mojego komputera, uruchomienia Android Studio, aby upewnić się, że wykrył odinstalowanie, a następnie zainstalowałem go ponownie.

Jeśli zdecydujesz się iść tą drogą, spróbuj zmienić ścieżkę jdk i ustawić nową ścieżkę w strukturze projektu. Jeśli to nie zadziała, odinstaluj java .


0

Wykonałem tylko czysty projekt i odbudowałem projekt przed ponownym uruchomieniem Android Studio, rozwiązuje to mój problem. Być może Android Studio faktycznie nie aktualizuje odniesień w interfejsie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.