Android Studio sagt "Symbol kann nicht aufgelöst werden", aber das Projekt wird kompiliert

97

Ich importiere twitter4j in AndroidStudio und verwende Folgendes in meinem build.gradle:

dependencies {
  compile 'com.android.support:support-v4:18.0.+'
  compile files('libs/twitter4j-core-3.0.4.jar')
}

Das Projekt lässt sich gut kompilieren und ich kann problemlos Twitter-Objekte erstellen. In Android Studio wird jedoch alles, was auf diese Bibliothek verweist, "Symbol kann nicht aufgelöst" angezeigt und rot angezeigt. Was muss ich tun, damit Android Studio die Bibliothek erkennt?

Ich habe bereits versucht, das Projekt neu zu erstellen, ./gradlew sauber zu machen und mein Projekt zu schließen und erneut zu öffnen.

TG-T
quelle
Jahr 2018, Android Studio 3+: Manchmal stimmen Android Studio und Gradle nicht überein. Lösung hier: stackoverflow.com/questions/50313885/…
user1506104
Ich hatte das gleiche Problem, nachdem ich ein Übungsprojekt in Android Studio importiert hatte. Beim Import gab mir Android Studio Warnungen und schlug vor, die SDK-Version zu aktualisieren, also folgte ich den Ratschlägen. Danach war etwas nicht mehr kompatibel, daher schlug Android Studio vor, eine andere Version von etwas anderem zu ändern. Nachdem ich all diesen Ratschlägen gefolgt war, hatte ich die gleichen Probleme mit dem Symbol "Symbol kann nicht gefunden werden". Ich habe die Änderung rückgängig gemacht, das Projekt erneut importiert und diesmal nicht den Hinweisen von Android Studio gefolgt. Danach waren die Fehler verschwunden. Seien Sie vorsichtig, wenn Sie den Vorschlägen dieses Programms blind folgen.
David
In Verbindung stehender Beitrag - Android Studio kann Symbole plötzlich nicht mehr auflösen
RBT

Antworten:

237

Keine Ahnung, ob dies funktionieren wird oder nicht, aber mein einziger Gedanke bisher: Klicken Sie mit der rechten Maustaste auf die JAR-Datei im Dateibaum in AS und wählen Sie "Als Bibliothek hinzufügen ...".

BEARBEITEN: Sie können "Datei" -> "Caches ungültig machen ..." ausführen und die Option "Ungültig machen und neu starten" auswählen, um dies zu beheben.

BEARBEITEN 2: Dieser Fix sollte für alle ähnlichen Vorfälle funktionieren und ist keine twitter4j-spezifische Lösung.

doydoy
quelle
Ich bekomme das nicht als Option, wenn ich mit der rechten Maustaste auf das Glas klicke. Ich laufe 0.2.13.
TG-T
Dies bedeutet wahrscheinlich, dass Sie dies bereits getan haben. Versuchen Sie Datei> Projektstruktur und bestätigen Sie, dass die JAR-Datei im Modulknoten angezeigt wird.
Doydoy
11
Das Ungültigmachen der Caches und der Neustart funktionieren bei mir nicht. Ich habe auch versucht, Android Studio neu zu installieren und das Projekt erneut zu importieren. Das ist sehr ärgerlich ...
Uhrmacher
3
Die "Datei" -> "Caches ungültig machen ..." hat mir gerade den Tag gerettet. Ich habe so viel Zeit mit diesem Thema verschwendet. Warum war diese Antwort kein Top-Suchergebnis? Ich danke dir sehr!
Eric Cochran
1
in meiner Dankbarkeit werfen
Jewgeni Simkin
33

Versuchen Sie, die Reihenfolge der Abhängigkeiten unter Datei> Projektstruktur> (wählen Sie Ihr Projekt aus)> Abhängigkeiten zu ändern.

Ungültige Caches haben bei mir nicht funktioniert, aber das Verschieben meines Builds vom Ende der Liste nach oben hat funktioniert.

Nauraushaun
quelle
Das Ändern der Reihenfolge der Abhängigkeiten hilft mir. Ich habe alle in den Antworten angegebenen Lösungen ausprobiert. Nur Ihre helfen mir, danke.
wqycsu
Nur eine Abhängigkeit nach oben zu verschieben, hat mir geholfen! (Android Studio 3.0.1).
Sébastien
Ja, es ist nicht wichtig, welche Abhängigkeit Sie verschieben. Ändern Sie einfach die Reihenfolge aller Personen. Dies funktioniert auch für Android Studio 3.3.
Karique
12

Das hat bei mir funktioniert.

Klicken Sie im Projektfenster mit der rechten Maustaste auf den Projektnamen und wählen Sie Open Module Settingsaus dem Popup-Menü.

dann ändern Sie die Compile SDK Version auf die verfügbare Mindestversion (die im Projekt festgelegte SDK-Mindestversion). Warten Sie, bis Android Studio alles geladen hat.

Es wird Ihnen einige Fehler geben, ignorieren Sie diese.

Gehen Sie jetzt zu Ihrer Java-Datei und Android Studio schlägt vor, dass Sie importieren

android.support.v4.app.FragmentActivity importieren;

Importieren Sie es und kehren Sie dann zu zurück Open Module Settings und ändern Sie die kompilierte SDK-Version wieder auf den vorherigen Stand.

Warten Sie, bis die Dinge geladen sind und voila.

Georgi Dimitrov
quelle
Es ist eine brillante Arbeit. In meinem Fall hat Android Studio mir gemeldet, dass alle SDK-Klassen nicht aufgelöst werden können (einschließlich String, Integer, TextView usw.). Zuvor sagte mir aStudio auch, dass sie das Android-14-SDK, mit dem ich meine Projekte kompiliert habe, nicht herausfinden kann. Ich habe das ignoriert, also sind die Probleme aufgetreten. Schließlich fand ich diese Antwort und folge, ändere die Kompilierungs-SDK-Version und funktioniere dann. Danke, dass du mir Zeit sparst.
VinceStyling
Now go to your java file and android studio will suggest you importNicht in meinem Fall
NineCattoRules
9

Für meins wurde durch das importierte Bibliotheksprojekt verursacht, geben Sie etwas in build.gradle ein und löschen Sie es erneut und drücken Sie jetzt auf Synchronisieren, der Fehler ist verschwunden.

Jk sein
quelle
6

Ich hatte auch dieses Problem mit meiner Android-App, abhängig von einigen meiner eigenen Android-Bibliotheken (mit Android Studio 3.0 und 3.1.1).

Immer wenn ich eine Bibliothek aktualisiert und zur App zurückgekehrt bin und eine Gradle-Synchronisierung ausgelöst habe, konnte Android Studio die Codeänderungen, die ich an der Bibliothek vorgenommen habe, nicht erkennen. Die Kompilierung funktionierte einwandfrei, aber Android Studio zeigte bei einigen Codes mit der lib rote Fehlerlinien.

Nach Nachforschungen stellte ich fest, dass gradle immer wieder auf eine alte kompilierte Version meiner Bibliotheken verweist. Wenn Sie zu yourProject / .idea / library / gehen, wird eine Liste der XML-Dateien angezeigt, die den Link zur kompilierten Version Ihrer Bibliotheken enthält. Diese Dateien beginnen mit Gradle__artifacts _ *. Xml (wobei * der Name Ihrer Bibliotheken ist).

Damit Android Studio die neueste Version Ihrer Bibliotheken verwenden kann, müssen Sie diese Gradle__artifacts _ *. Xml-Dateien löschen. Android Studio generiert sie neu und verweist auf die neueste kompilierte Version Ihrer Bibliotheken.

Wenn Sie dies nicht jedes Mal manuell tun möchten, wenn Sie auf "Gradle-Synchronisierung" klicken (wer würde das tun wollen ...), können Sie diese kleine Gradle-Aufgabe in die Datei build.gradle Ihrer App einfügen.

task deleteArtifacts {
    doFirst {
        File librariesFolderPath = file(getProjectDir().absolutePath + "/../.idea/libraries/")
        File[] files = librariesFolderPath.listFiles({ File file -> file.name.startsWith("Gradle__artifacts_") } as FileFilter)

        for (int i = 0; i < files.length; i++) {
            files[i].delete()
        }
    }
}

Damit Ihre App diese Aufgabe immer ausführen kann, bevor Sie eine Gradle-Synchronisierung durchführen, müssen Sie nur zum Gradle-Fenster gehen, die Aufgabe "deleteArtifacts" unter yourApp / Tasks / other / suchen, mit der rechten Maustaste darauf klicken und "Execute" auswählen Vor der Synchronisierung "(siehe unten).

Gradle-Fenster zum Konfigurieren der Aufgabenausführung

Jedes Mal, wenn Sie eine Gradle-Synchronisierung durchführen, muss Android Studio die neueste Version Ihrer Bibliotheken verwenden.

nah0y
quelle
5

Als ich dieses Problem (rote Farbcodes, aber sie funktionieren korrekt) in meinem Projekt erlebte;

Als erstes habe ich es so gemacht (Datei -> Cashes anzeigen) -> (Ungültig machen und neu starten).

Als letztes synchronisiere ich meine build.gradle-Datei in meiner App neu. Nachdem das Problem behoben wurde.

oguzhan
quelle
3

Invalidate Caches / Restart hat diesmal nicht für mich gearbeitet.

Eine Lösung wie diese gefunden:

  1. Entfernen Sie die Zeile compile ***oder implementation ***in build.gradle.

  2. Reinigen und wieder aufbauen. Hier sollten Fehler auftreten.

  3. Fügen Sie die Zeile in Schritt 1 wieder zu build.gradle hinzu.

  4. Reinigen und wieder aufbauen.

Seltsam...

ZhangLei
quelle
2

Dieses Problem trat bei mir auf, als mein Glass-Projekt das am Standardspeicherort von Android Studio installierte SDK nicht verwendete. Ich habe einen anderen Speicherort verwendet, den ich zuvor von ADT hatte, da ich versucht habe, zu vermeiden, dass alles erneut heruntergeladen wird. Nachdem ich das Projekt wieder auf den SDK-Speicherort im Installationsspeicherort von Android Studio verwiesen hatte, war das Problem behoben.

DaveTrux
quelle
Ja, ich denke, das ist auch ein guter Ruf: Standardmäßig entscheidet Android Studio, dass alle SDKs im Standard-Installationsverzeichnis von Android Studio installiert sind. Dies muss geändert werden, wenn etwas diesem Muster nicht folgt.
Doydoy
2

Ich hatte dieses Problem jetzt seit ein paar Tagen und habe es endlich herausgefunden! Alle anderen Lösungen haben übrigens bei mir nicht funktioniert.

Lösung: Ich hatte Sonderzeichen in meinem Projektpfad!

Stellen Sie einfach sicher, dass Sie keine davon haben, und es sollte Ihnen gut gehen, oder mindestens eine der anderen Lösungen sollte für Sie funktionieren.

Hoffe das hilft jemandem!

grAPPfruit
quelle
Bitte überprüfen Sie, ob Sie einen Projektpfad haben, der Sonderzeichen wie enthält! (Ausrufezeichen). Bei einem ähnlichen Problem, bei dem stackoverflow.com/questions/32477067/… aufgetreten ist , war dies die Hauptursache. Viele Java-Anwendungen scheinen solche Sonderzeichen nicht zu tolerieren (z. B. würde ein "Gradlew Clean" vom Terminal aus fehlschlagen und eine RunTimeException auslösen.). Keine der anderen online veröffentlichten Lösungen hatte mir geholfen. Aber sobald ich das entfernt hatte! Android Studio hat auf magische Weise funktioniert.
Jim C
WOW, GROSSARTIG! Danke :)
Josep Escobar
1

Ich hatte kürzlich das gleiche Problem mit Android Studio 1.3. Die einzige funktionierende Lösung bestand darin, die Ordner .gradle und .idea zu entfernen und das Projekt erneut in Android Studio zu importieren.

Ticofab
quelle
1

Für diejenigen, die die akzeptierte Antwort ausprobiert haben und keinen Erfolg haben,

Ich habe auch die akzeptierte Antwort ausprobiert und bei mir nicht funktioniert. Danach habe ich mein Projekt mit dem Repository aktualisiert und das Projekt synchronisiert und die Warnungen, die nicht aufgelöst werden konnten, sind verschwunden.

drJava
quelle
1

Ungültige Caches haben bei mir nicht funktioniert (diesmal). Für mich war es genug, den Gradle zu ändern und wieder zu synchronisieren. Oder https://stackoverflow.com/a/29565362/2000162

TomCobo
quelle
0

In meinem Fall hatte ich eine neue Datei über die GUI erstellt und eine Schnittstelle innerhalb der Datei definiert. Ich habe diesen Symbolfehler immer wieder erhalten, weil die Datei keine "Java" -Datei war. Es hatte überhaupt keine Erweiterung.

Nach dem Ändern der Dateierweiterung in ".java" findet das System die Symbole korrekt.

user3549463
quelle
0

In meinem Fall hatte die JAR-Datei keine META-INF / MANIFEST.MF-Datei. Nach dem Hinzufügen hat es funktioniert!

Mahe
quelle
0

Für meinen Fall mit AndroidStudio 2.2.3 bestand die Lösung darin, den Gradle-Wrapper / die Gradle-Distribution so zu ändern, dass in den Gradle-Einstellungen ein lokaler verwendet wird (obwohl dies "empfohlen" wurde). Geben Sie hier die Bildbeschreibung ein

Hack06
quelle
0

Dies funktionierte für mich - (Datei -> Cashes anzeigen) -> (Ungültig machen und neu starten).

Shubhamhackz
quelle
0

Ich habe versucht, Cache ungültig zu machen / neu zu starten oder Projekt zu bereinigen -> Projekt neu zu erstellen. Diese haben bei mir nicht funktioniert.

Die endgültige Lösung war das Öffnen des Projektfensters auf der linken Seite der IDE im Projektmodus. Löschen Sie die Ordner .gradle und .idea. DANN können Sie die Caches ungültig machen und neu starten. Dies hat es behoben.


quelle
0

Ändern Sie die Kompilierung in die Implementierung im build.gradle.

Raulp
quelle
0

Das Ändern der Sprachinjektionseinstellungen hat bei mir funktioniert.

Platzieren Sie den Cursor auf einem der rot unterstrichenen Codes und Alt + Enter

Geben Sie hier die Bildbeschreibung ein

Wählen Sie nun Language Injection Settingsund ein Fenster öffnet sich wie unten gezeigt.

Geben Sie hier die Bildbeschreibung ein

Deaktivieren Sie die ausgewählte Option und klicken Sie auf OK

Geben Sie hier die Bildbeschreibung ein

Hoffe das hilft jemandem.

Tricky Bay
quelle
0

Es ist mir passiert, als ich die gesamten Dateien entfernt .gradle/cachesund dann Studio die Abhängigkeiten heruntergeladen habe. Die Abhängigkeiten werden in der nicht angezeigt, External Librariesaber ich kann die App erfolgreich erstellen. rebuild clean Invalidate and Restarthaben keine Wirkung. Ich habe das Problem durch die folgenden Schritte gelöst:

  • Schließen Sie Android Studio vollständig
  • Entfernen Sie das .ideaPaket in Ihrem Projekt
  • Starten Sie Android Studio neu
Joe
quelle
0

Ich habe es versucht, aber nichts hat bei mir funktioniert:

  • Invalidate Caches / Restart
  • Changing the order of dependencies
  • Sync project with Gradle Files
  • Clean -> Rebuild Project

In meinem Fall einfach:

  • Delete all files in .idea/libraries folder
  • Rebuild Project
Conan
quelle
0

Für mich habe ich gradle-wrapper.properties auf 4.4 aktualisiert

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
Gowthaman M.
quelle
0

Ich habe den einfachsten Weg gefunden

Identifizieren Sie die Bibliothek, die in Studio einen Syntaxfehler verursacht.

Für Beispiel , wenn AppCompatActivityzeigen Fehler , dann werden Sie unter Betrieb auf AppCompat Abhängigkeit führen.

  • Entfernen Sie die Abhängigkeit, bei der Syntaxfehler und Synchronisierung angezeigt werden.
  • Nochmals hinzufügen & synchronisieren.

Das war's, Fehler weg!

Vor

Vor

Nach dem

Nach dem

Khemraj
quelle
0

Keine der obigen Antworten funktioniert für mich.

Nach vielen Versuchen habe ich com.android.tools.build:gradle in Project / build.gradle von 2.3.0 auf 3.0.1 aktualisiert und es funktioniert.

Ich denke, die Version von com.android.tools.build:gradle sollte mit der Version von AndroidStudio übereinstimmen, und meine AS-Version ist 3.2.1

Hao Qi
quelle
0

Das Schließen aller Dateien und das Schließen von Android Studio funktioniert bei mir.

Sayali Shinde
quelle
-2

Sie müssen Android Studio neu starten.

George Mano
quelle