Android Studio dit "impossible de résoudre le symbole" mais le projet se compile

97

J'importe twitter4j dans AndroidStudio, en utilisant ce qui suit dans mon build.gradle:

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

Le projet se compile bien et je peux créer des objets Twitter sans problème. Cependant, dans le studio Android, tout ce qui fait référence à cette bibliothèque indique «ne peut pas résoudre le symbole» et s'affiche en rouge. Que dois-je faire pour qu'Android Studio reconnaisse la bibliothèque?

J'ai déjà essayé de reconstruire le projet, ./gradlew clean, et de fermer et rouvrir mon projet.

TG-T
la source
année 2018, Android Studio 3+: parfois, Android Studio et Gradle ne sont pas d'accord. solution ici: stackoverflow.com/questions/50313885/…
user1506104
J'ai eu le même problème après avoir importé un projet d'exercice dans Android Studio. Lors de l'importation d'Android Studio, j'ai reçu des avertissements et suggéré de mettre à jour la version SDK, j'ai donc suivi les conseils. Après cela, quelque chose n'était plus compatible, alors Android Studio a suggéré de changer une autre version de quelque chose d'autre. Après avoir suivi tous ces conseils, j'ai eu les mêmes problèmes de «symbole introuvable». J'ai inversé la modification, importé à nouveau le projet et n'ai pas suivi les conseils d'Android Studio cette fois. Après cela, les erreurs ont disparu. Soyez prudent en suivant aveuglément les suggestions de ce programme.
David

Réponses:

237

Aucune idée si cela fonctionnera ou non, mais ma seule pensée jusqu'à présent: faites un clic droit sur le fichier jar dans l'arborescence de fichiers dans AS et sélectionnez "Ajouter en tant que bibliothèque ..."

EDIT: Vous pouvez faire "Fichier" -> "Invalider les caches ...", et sélectionner l'option "Invalider et redémarrer" pour résoudre ce problème.

EDIT 2: Ce correctif devrait fonctionner pour tous les incidents similaires et n'est pas une résolution spécifique à twitter4j.

Doydoy
la source
Je ne reçois pas cette option lorsque je clique avec le bouton droit sur le pot. J'utilise 0.2.13.
TG-T
Cela signifie probablement que vous l'avez déjà fait. Essayez Fichier> Structure du projet et confirmez que vous voyez le fichier .jar dans le nœud modules.
doydoy
11
L'invalidation des caches et le redémarrage ne fonctionnent pas pour moi. J'ai également essayé de réinstaller le studio Android et de réimporter le projet. C'est très ennuyeux ...
horloger
3
Le "Fichier" -> "Invalidate Caches ..." vient de sauver ma journée. J'ai perdu tellement de temps sur cette question. Pourquoi cette réponse n'était-elle pas l'un des meilleurs résultats de recherche? Merci beaucoup!
Eric Cochran
1
jeter dans ma gratitude
Yevgeny Simkin
33

Essayez de changer l'ordre des dépendances dans Fichier> Structure du projet> (sélectionnez votre projet)> Dépendances.

Invalidate Caches n'a pas fonctionné pour moi, mais déplacer ma construction du bas de la liste vers le haut a fonctionné.

Nauraushaun
la source
Changer l'ordre des dépendances m'aide, j'ai essayé toutes les solutions données dans les réponses, seules les vôtres m'aident, merci.
wqycsu
Déplacer une seule dépendance a fait l'affaire pour moi! (Android Studio 3.0.1).
Sébastien
Ouais, la dépendance que vous déplacez n'est pas importante, changez simplement l'ordre de n'importe qui, cela fonctionne également pour Android Studio 3.3.
karique
12

C'est ce qui a fonctionné pour moi.

Dans le panneau Projet, cliquez avec le bouton droit sur le nom du projet et sélectionnez Open Module Settingsdans le menu contextuel.

puis modifiez le Compile SDK Versionà la version minimale disponible (la version SDK minimale que vous avez définie dans le projet). attendez que le studio Android charge tout.

Cela vous donnera quelques erreurs, ignorez-les.

Maintenant, allez dans votre fichier java et android studio vous suggérera d'importer

import android.support.v4.app.FragmentActivity;

Importez-le, puis revenez à Open Module Settingsla version de compilation sdk et remplacez-la par ce qu'elle était auparavant.

Attendez que les choses se chargent et le tour est joué.

Georgi Dimitrov
la source
c'est un travail brillant. dans mon cas, Android Studio m'a signalé que toutes les classes du SDK ne peuvent pas être résolues (chaîne, entier, TextView, etc. inclus). avant cela, aStudio m'a également dit qu'elle ne pouvait pas trouver le SDK android-14 que j'avais utilisé pour compiler mes projets. J'ai ignoré cela, alors les problèmes sont survenus. enfin, j'ai trouvé cette réponse et suivez, changez la version compile sdk puis a fonctionné. merci de me faire gagner du temps.
VinceStyling
Now go to your java file and android studio will suggest you importPas dans mon cas
NineCattoRules
9

Pour le mien a été causé par le projet de bibliothèque importé, tapez quelque chose dans build.gradle et supprimez-le à nouveau et appuyez sur Sync maintenant, l'erreur a disparu.

Beeing Jk
la source
6

J'ai également eu ce problème avec mon application Android en fonction de certaines de mes propres bibliothèques Android (en utilisant Android Studio 3.0 et 3.1.1).

Chaque fois que je mettais à jour une bibliothèque et que je revenais à l'application, déclenchant une synchronisation Gradle, Android Studio n'était pas en mesure de détecter les modifications de code que j'avais apportées à la bibliothèque. La compilation a bien fonctionné, mais Android Studio a montré des lignes d'erreur rouges sur certains codes utilisant la lib.

Après avoir enquêté, j'ai trouvé que c'est parce que gradle continue de pointer vers une ancienne version compilée de mes bibliothèques. Si vous allez dans votre projet / .idea / bibliothèques /, vous verrez une liste de fichiers xml contenant le lien vers la version compilée de vos bibliothèques. Ces fichiers commencent par Gradle__artifacts _ *. Xml (où * est le nom de vos bibliothèques).

Donc, pour qu'Android Studio prenne la dernière version de vos bibliothèques, vous devez supprimer ces fichiers Gradle__artifacts _ *. Xml, et Android Studio les régénérera, pointant vers la dernière version compilée de vos bibliothèques.

Si vous ne voulez pas faire cela manuellement à chaque fois que vous cliquez sur "Gradle sync" (qui voudrait faire ça ...), vous pouvez ajouter cette petite tâche gradle dans le fichier build.gradle de votre application.

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

Et pour que votre application exécute toujours cette tâche avant de procéder à une synchronisation de graduation, il vous suffit d'aller dans la fenêtre Gradle, puis de trouver la tâche "deleteArtifacts" sous votreApp / Tâches / autre /, cliquez dessus avec le bouton droit de la souris et sélectionnez "Exécuter Avant la synchronisation "(voir ci-dessous).

Fenêtre Gradle pour configurer l'exécution de la tâche

Désormais, chaque fois que vous effectuez une synchronisation Gradle, Android Studio sera obligé d'utiliser la dernière version de vos bibliothèques.

nah0y
la source
5

Quand j'ai vécu ce problème (codes de couleur rouges mais ils fonctionnent correctement) dans mon projet;

En premier lieu, je l'ai fait que (Fichier -> Indiquer les espèces) -> (Invalider et redémarrer).

Enfin, je resynchronise mon fichier build.gradle dans mon application. Une fois le problème résolu.

oguzhan
la source
3

Invalidate Caches / Restart n'a pas fonctionné pour moi cette fois.

J'ai trouvé une solution comme celle-ci:

  1. Supprimez la ligne compile ***ou implementation ***dans build.gradle.

  2. Nettoyez et reconstruisez. Les erreurs doivent être signalées ici.

  3. Ajoutez la ligne de l'étape 1 à build.gradle.

  4. Nettoyez et reconstruisez.

Bizarre...

ZhangLei
la source
2

Ce problème s'est produit pour moi lorsque mon projet Glass n'utilisait pas le SDK installé à l'emplacement par défaut d'Android Studio. J'utilisais un autre emplacement que j'avais précédemment d'ADT, car j'essayais d'éviter de tout télécharger à nouveau. Une fois que j'ai renvoyé le projet à l'emplacement du SDK dans l'emplacement d'installation d'Android Studio, le problème a disparu.

DaveTrux
la source
Oui, je suppose que c'est aussi un bon cri: par défaut, le studio Android décidera que tous les SDK sont installés dans le répertoire d'installation par défaut du studio Android. Cela devra être modifié si quelque chose ne suit pas ce modèle.
doydoy
2

J'ai eu ce problème depuis quelques jours maintenant et je l'ai finalement compris! Toutes les autres solutions ne fonctionnaient pas pour moi d'ailleurs.

Solution: j'avais des caractères spéciaux dans mon chemin de projet!

Assurez-vous simplement de ne pas en avoir et tout devrait aller bien ou au moins une des autres solutions devrait fonctionner pour vous.

J'espère que cela aide quelqu'un!

grAPPfruit
la source
Veuillez vérifier si vous avez un chemin de projet contenant des caractères spéciaux comme! (point d'exclamation). Dans un problème similaire que j'ai rencontré stackoverflow.com/questions/32477067/… , c'était la cause première. De nombreuses applications Java semblent ne pas tolérer de tels caractères spéciaux (par exemple, faire un 'gradlew clean' à partir du terminal échouerait et lancerait une exception RunTimeException). Aucune des autres solutions mises en ligne ne m'avait aidé. Mais, une fois que j'ai enlevé le! du chemin et a fait une construction propre, Android Studio a fonctionné comme par magie.
Jim C
WAOUH INCROYABLE! Merci :)
Josep Escobar
1

J'ai eu le même problème récemment avec Android Studio 1.3. La seule solution de travail consistait à supprimer les dossiers .gradle et .idea et à réimporter le projet dans Android Studio.

ticofab
la source
1

Pour ceux qui ont essayé la réponse acceptée et n'ont pas réussi,

J'ai essayé aussi la réponse acceptée et je n'ai pas fonctionné pour moi. Après cela, j'ai mis à jour mon projet avec le référentiel et synchronisé le projet et les avertissements n'ont pas pu résoudre.

drJava
la source
0

Dans mon cas, j'avais créé un nouveau fichier à l'aide de l'interface graphique et défini une interface dans le fichier. J'ai continué à recevoir cette erreur de symbole parce que le fichier n'était pas un fichier "java". Il n'y avait aucune extension là-dessus.

Après avoir modifié l'extension de fichier en ".java", le système trouve correctement les symboles.

user3549463
la source
0

Dans mon cas, le fichier jar ne contenait pas de fichier META-INF / MANIFEST.MF. Après en avoir ajouté un, cela a fonctionné!

Mahé
la source
0

Pour mon cas de travail avec AndroidStudio 2.2.3, la solution était de changer le wrapper / distribution de gradle pour utiliser un local dans les paramètres de Gradle (bien qu'il soit "recommandé"). entrez la description de l'image ici

Hack06
la source
0

Cela a fonctionné pour moi - (Fichier -> Indiquer les espèces) -> (Invalider et redémarrer).

Shubhamhackz
la source
0

J'ai essayé d'invalider le cache / redémarrer ou nettoyer le projet -> reconstruire le projet. Cela n'a pas fonctionné pour moi.

La solution finale était d'ouvrir la fenêtre Projet sur le côté gauche de l'EDI, sous le mode Projet, supprimez les dossiers .gradle et .idea, ALORS vous pouvez invalider les caches et redémarrer. Cela l'a corrigé.


la source
0

Remplacez la compilation par l'implémentation dans build.gradle.

Raulp
la source
0

Changer les paramètres d'injection de langue a fonctionné pour moi.

Placez le curseur sur l'un des codes soulignés en rouge et Alt + Enter

entrez la description de l'image ici

Maintenant, sélectionnez Language Injection Settingset une fenêtre s'ouvrira comme indiqué ci-dessous.

entrez la description de l'image ici

Décochez l'option sélectionnée et cliquez sur OK

entrez la description de l'image ici

J'espère que cela aide quelqu'un.

Tricky Bay
la source
0

Cela m'est arrivé lorsque j'ai supprimé tous les fichiers .gradle/caches, puis le studio a téléchargé les dépendances. Les dépendances ne sont pas affichées dans le External Librariesmais je peux créer l'application avec succès. rebuild clean Invalidate and Restartn'ont aucun effet. J'ai résolu le problème par les étapes:

  • Fermez complètement Android Studio
  • Supprimer le .ideapackage de votre projet
  • Redémarrez Android Studio
Joe
la source
0

J'ai essayé cela mais rien n'a fonctionné pour moi:

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

Dans mon cas, faites simplement:

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

Pour moi, j'ai mis à jour gradle-wrapper.properties en 4.4

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

J'ai trouvé le moyen le plus simple

Identifiez la bibliothèque à l'origine d'une erreur de syntaxe dans Studio.

Par exemple, si AppCompatActivityune erreur s'affiche, vous effectuerez l'opération ci-dessous sur la dépendance AppCompat.

  • Supprimez la dépendance qui affiche une erreur de syntaxe et une synchronisation.
  • Ajouter à nouveau et synchroniser.

Ça y est, l'erreur est partie!

Avant

Avant

Après

Après

Khemraj
la source
0

Aucune des réponses ci-dessus ne fonctionne pour moi.

Après de nombreuses tentatives, j'ai mis à niveau com.android.tools.build:gradle dans Project / build.gradle de 2.3.0 à 3.0.1, et cela fonctionne.

Je suppose que la version de com.android.tools.build:gradle doit correspondre à la version d'AndroidStudio, et ma version AS est 3.2.1

Hao Qi
la source
0

Fermer tous les fichiers et fermer Android Studio fonctionne pour moi.

Sayali Shinde
la source
-2

Vous devez redémarrer Android Studio.

George Mano
la source