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?

Dan J
źródło
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.

Bioz Nguyen
źródło
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ć.

Dan J
źródło
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

Manmohan Soni
źródło
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

DroidDev
źródło
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
GoRoS
źródło
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
12

Dla mnie usunięcie folderu .gradle i .idea projektu rozwiązało problem.

kvadityaaz
źródło
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

Arun Yogeshwaran
źródło
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.

jnutttzzz
źródło
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).

Pablo Alfonso
źródło
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

Kamen Stoykov
źródło
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.

Sumith.Pattar
źródło
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.

Cuong Nguyen
źródł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
DIEGO FEDER
źródło
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

Khemraj
źródło
2

Usunięcie .idea/cachesi .idea/librariespowinno rozwiązać wszystkie błędy.

Karan_powered_by_RedBull
źródło
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.

Jay Snayder
źródło
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
Dineshkumar Niet
źródło
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.

DmitryDzz
źródło
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

Jainam Jhaveri
źródło
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.

Mina Samy
źródło
0

Rozwiązano problem, czyszcząc projekt Build->Clean Project

Ganesh P.
źródło
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')
Victor Choy
źródło
0

Wszystkie powyższe odpowiedzi nie działają dla mnie. Mój problem polegał na tym, że miałem 3 moduły, z których 2 miały tę samą nazwę pakietu .

To było w porządku dla Android Studio <= 3.2.1.

W przypadku Android Studio> 3.2.1 ressouce był czerwony.

Rozwiązałem to tak, jak ta wzmianka tutaj (właśnie stworzyłem różne nazwy pakietów dla każdego modułu): Każda wersja Android Studio> 3.2.1 pokazuje czerwony zasób, ale nadal się kompiluje

Z3nk
źródło
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.

Deepak PK
źródło
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 .

Kai Lean
źródło
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

Abner Hernandez
źródło