Android Studio dice "Impossibile risolvere il simbolo" ma il progetto viene compilato


97

Sto importando twitter4j in AndroidStudio, utilizzando quanto segue nel mio build.gradle:

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

Il progetto si compila bene e posso creare oggetti Twitter senza problemi. Tuttavia, in Android Studio, tutto ciò che fa riferimento a quella libreria mostra "Impossibile risolvere il simbolo" e viene visualizzato in rosso. Cosa devo fare per far sì che Android Studio riconosca la libreria?

Ho già provato a ricostruire il progetto, ./gradlew clean e a chiudere e riaprire il mio progetto.



anno 2018, Android Studio 3+: a volte, Android Studio e Gradle non sono d'accordo. soluzione qui: stackoverflow.com/questions/50313885/...
user1506104

Ho riscontrato lo stesso problema dopo aver importato un progetto di esercizio in Android Studio. Quando è stato importato Android Studio mi ha dato degli avvisi e mi ha suggerito di aggiornare la versione sdk, quindi ho seguito il consiglio. Dopo di che qualcosa non era più compatibile, quindi Android Studio ha suggerito di cambiare un'altra versione di qualcos'altro. Dopo aver seguito tutti questi consigli ho avuto gli stessi problemi di "non riesco a trovare il simbolo". Ho annullato la modifica, importato di nuovo il progetto e questa volta non ho seguito i suggerimenti di Android Studio. Dopo di che gli errori erano spariti. Stai attento a seguire ciecamente i suggerimenti di quel programma.
David

Risposte:


237

Non ho idea se funzionerà o meno, ma il mio unico pensiero finora: fai clic con il pulsante destro del mouse sul file jar nell'albero dei file all'interno di AS e seleziona "Aggiungi come libreria ..."

EDIT: Puoi fare "File" -> "Invalidate Caches ..." e selezionare l'opzione "Invalidate and Restart" per risolvere questo problema.

EDIT 2: questa correzione dovrebbe funzionare per tutti gli incidenti simili e non è una risoluzione specifica per twitter4j.


Non lo ricevo come opzione quando faccio clic con il pulsante destro del mouse sul vaso. Sto eseguendo 0.2.13.
TG-T

Questo probabilmente significa che l'hai già fatto. Prova File> Struttura del progetto e conferma di vedere il file .jar nel nodo dei moduli.
doydoy

11
Invalidare le cache e riavviare non funziona per me. Ho anche provato a reinstallare Android Studio e reimportare il progetto. Questo è molto fastidioso ...
orologiaio

3
Il "File" -> "Invalidate Caches ..." mi ha appena salvato la giornata. Ho perso così tanto tempo su questo problema. Perché questa risposta non è stata tra i migliori risultati di ricerca? Grazie mille!
Eric Cochran,

1
lanciando la mia gratitudine
Yevgeny Simkin

33

Prova a cambiare l'ordine delle dipendenze in File> Struttura del progetto> (seleziona il tuo progetto)> Dipendenze.

Invalidate Caches non ha funzionato per me, ma lo spostamento della build dalla parte inferiore dell'elenco all'inizio ha funzionato.


Cambiare l'ordine delle dipendenze mi aiuta, ho provato tutte le soluzioni date nelle risposte, solo la tua mi aiuta, grazie.
wqycsu

Spostare solo una dipendenza verso l'alto ha fatto il trucco per me! (Android Studio 3.0.1).
Sébastien

Sì, non è importante quale dipendenza sposti, cambia semplicemente l'ordine di chiunque, questo funziona anche per Android Studio 3.3.
karique

12

Questo è ciò che ha funzionato per me.

Nel pannello Progetto, fai clic con il pulsante destro del mouse sul nome del progetto e seleziona Open Module Settingsdal menu a comparsa.

quindi modificare la Compile SDK Versionversione minima disponibile (la versione minima di sdk impostata nel progetto). attendi che Android Studio carichi tutto.

Ti darà degli errori, ignorali.

Ora vai al tuo file java e Android Studio ti suggerirà di importarlo

import android.support.v4.app.FragmentActivity;

Importalo, quindi torna a Open Module Settingse cambia la versione sdk di compilazione a quella che era prima.

Aspetta che le cose si carichino e voilà.


è un lavoro brillante. nel mio caso, Android Studio mi ha segnalato che tutte le classi di SDK non possono essere risolte (incluse String, Integer, TextView ecc.). prima di allora, aStudio mi ha anche detto che non riesce a trovare l'SDK android-14 che ho usato per compilare i miei progetti. L'ho ignorato, quindi si sono verificati i problemi. infine, ho trovato questa risposta e la seguo, cambia la versione sdk di compilazione e poi ha funzionato. grazie per farmi risparmiare tempo.
VinceStyling

Now go to your java file and android studio will suggest you importNon nel mio caso
NineCattoRules

9

Poiché il mio è stato causato dal progetto di libreria importato, digita qualcosa in build.gradle ed eliminalo di nuovo e premi sincronizzazione ora, l'errore è sparito.


6

Ho anche avuto questo problema con la mia app Android a seconda di alcune delle mie librerie Android (utilizzando Android Studio 3.0 e 3.1.1).

Ogni volta che aggiornavo una libreria e torno all'app, attivando una sincronizzazione Gradle, Android Studio non è stato in grado di rilevare le modifiche al codice apportate alla libreria. La compilazione ha funzionato bene, ma Android Studio ha mostrato linee di errore rosse su alcuni codici utilizzando la lib.

Dopo aver indagato, ho scoperto che è perché gradle continua a puntare a una vecchia versione compilata delle mie librerie. Se vai su yourProject / .idea / libraries / vedrai un elenco di file xml che contiene il collegamento alla versione compilata delle tue librerie. Questi file iniziano con Gradle__artifacts _ *. Xml (dove * è il nome delle tue librerie).

Quindi, affinché Android Studio prenda l'ultima versione delle tue librerie, devi eliminare questi file Gradle__artifacts _ *. Xml e Android Studio li rigenererà, indicando l'ultima versione compilata delle tue librerie.

Se non vuoi farlo manualmente ogni volta che fai clic su "Gradle sync" (chi vorrebbe farlo ...), puoi aggiungere questa piccola attività gradle nel file build.gradle della tua app.

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()
        }
    }
}

E affinché la tua app esegua sempre questa attività prima di eseguire una sincronizzazione gradle, devi solo andare alla finestra Gradle, quindi trovare l'attività "deleteArtifacts" sotto la tua App / Tasks / altro /, fare clic destro su di essa e selezionare "Esegui Before Sync "(vedi sotto).

Finestra Gradle per configurare l'esecuzione delle attività

Ora, ogni volta che esegui una sincronizzazione Gradle, Android Studio sarà costretto a utilizzare l'ultima versione delle tue librerie.


5

Quando ho vissuto a questo problema (codici colore rossi ma funzionano correttamente) nel mio progetto;

Per prima cosa, ho fatto in modo che (File -> Indica denaro) -> (Invalida e riavvia).

Infine, risincronizzo il mio file build.gradle nella mia app. Dopo che il problema è stato risolto.


3

Invalidate Caches / Restart non ha funzionato per me questa volta.

Ho trovato una soluzione come questa:

  1. Rimuovi la riga compile ***o implementation ***in build.gradle.

  2. Pulisci e ricostruisci. Qui dovrebbero essere segnalati errori.

  3. Aggiungi di nuovo la riga nel passaggio 1 a build.gradle.

  4. Pulisci e ricostruisci.

Strano...


2

Questo problema si è verificato per me quando il mio progetto Glass non utilizzava l'SDK installato nella posizione predefinita di Android Studio. Stavo usando un'altra posizione che avevo in precedenza da ADT, poiché stavo cercando di evitare di scaricare nuovamente tutto. Una volta che ho indirizzato il progetto alla posizione dell'SDK nella posizione di installazione di Android Studio, il problema è scomparso.


Sì, immagino che sia anche un bel grido: per impostazione predefinita, Android Studio deciderà che tutti gli SDK sono installati nella directory di installazione predefinita di Android Studio. Questo dovrà essere modificato se qualcosa non segue questo schema.
doydoy

2

Ho avuto questo problema per un paio di giorni e finalmente l'ho capito! Tutte le altre soluzioni non hanno funzionato per me btw.

Soluzione: avevo caratteri speciali nel percorso del mio progetto!

Assicurati solo di non averne nessuno e dovresti stare bene o almeno una delle altre soluzioni dovrebbe funzionare per te.

Spero che questo aiuti qualcuno!


Controlla se hai un percorso di progetto che ha caratteri speciali come! (punto esclamativo). In un problema simile che ho riscontrato su stackoverflow.com/questions/32477067/… , questa era la causa principale. Molte applicazioni Java sembrano non tollerare tali caratteri speciali (ad esempio, eseguire un "gradlew clean" dal terminale fallirebbe e genererebbe un'eccezione RunTimeException.). Nessuna delle altre soluzioni pubblicate online mi aveva aiutato. Ma, una volta rimosso il! dal percorso e ha fatto una build pulita, Android Studio ha funzionato magicamente.
Jim C

WOW FANTASTICO! Grazie :)
Josep Escobar

1

Recentemente ho avuto lo stesso problema con Android Studio 1.3. L'unica soluzione funzionante era rimuovere le cartelle .gradle e .idea e reimportare il progetto in Android Studio.


1

Per coloro che hanno provato la risposta accettata e non hanno avuto successo,

Ho provato anche la risposta accettata e non ha funzionato per me. Successivamente, ho aggiornato il mio progetto con il repository e sincronizzato il progetto e gli avvisi di impossibile risoluzione sono spariti.




0

Nel mio caso, avevo creato un nuovo file utilizzando la GUI e definito un'interfaccia all'interno del file. Continuavo a ricevere questo errore di simbolo perché il file non era un file "java". Non aveva alcuna estensione su di esso.

Dopo aver modificato l'estensione del file in ".java", il sistema trova correttamente i simboli.


0

Nel mio caso il file jar non aveva un file META-INF / MANIFEST.MF. Dopo averne aggiunto uno, ha funzionato!


0

Per il mio caso, lavorando con AndroidStudio 2.2.3, la soluzione era cambiare il wrapper / distribuzione gradle per utilizzare quello locale nelle impostazioni di Gradle (nonostante fosse "consigliato"). inserisci qui la descrizione dell'immagine


0

Questo ha funzionato per me-- (File -> Indica denaro) -> (Invalida e riavvia).


0

Ho provato Invalidate cache / restart o clean Project -> rebuild project. Questi non hanno funzionato per me.

La soluzione finale è stata aprire la finestra del progetto sul lato sinistro dell'IDE, in modalità Progetto, eliminare la cartella .gradle e .idea, POI puoi invalidare le cache e riavviare. Questo l'ha risolto.


0

Modificare la compilazione nell'implementazione nel build.gradle.


0

La modifica delle impostazioni di inserimento della lingua ha funzionato per me.

Posiziona il cursore su uno dei codici sottolineati in rosso e Alt + Enter

inserisci qui la descrizione dell'immagine

Ora seleziona Language Injection Settingse si aprirà una finestra come mostrato di seguito.

inserisci qui la descrizione dell'immagine

Deseleziona l'opzione selezionata e fai clic su OK

inserisci qui la descrizione dell'immagine

Spero che questo aiuti qualcuno.


0

A me è successo quando ho rimosso tutti i file in .gradle/caches, quindi Studio ha scaricato le dipendenze. Le dipendenze non sono mostrate in External Librariesma posso costruire l'app con successo. rebuild clean Invalidate and Restartnon hanno effetto. Ho risolto il problema con i passaggi:

  • Chiudi completamente Android Studio
  • Rimuovi .ideapacchetto nel tuo progetto
  • Riavvia Android Studio

0

Ho provato questo ma niente ha funzionato per me:

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

Nel mio caso, basta fare:

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

0

Per me ho aggiornato gradle-wrapper.properties alla versione 4.4

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

0

Ho trovato il modo più semplice

Identifica la libreria che causa l'errore di sintassi in Studio.

Ad esempio, se AppCompatActivityviene visualizzato un errore, eseguirai l'operazione di seguito su AppCompat Dependency.

  • Rimuovi la dipendenza che mostra errori di sintassi e sincronizzazione.
  • Aggiungi di nuovo e sincronizza.

Questo è tutto, l'errore è andato!

Prima

Prima

Dopo

Dopo


0

Nessuna delle risposte precedenti funziona per me.

Dopo molti tentativi, ho aggiornato com.android.tools.build:gradle in Project / build.gradle da 2.3.0 a 3.0.1 e funziona.

Immagino che la versione di com.android.tools.build:gradle dovrebbe corrispondere alla versione di AndroidStudio e la mia versione AS è 3.2.1


0

La chiusura di tutti i file e la chiusura di Android Studio funziona per me.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.