Compilateur en ligne Android Studio montrant des erreurs rouges, mais la compilation avec gradle fonctionne bien

147

J'ai configuré mon projet dans Android Studio pour utiliser la bibliothèque Square Wire , conformément à cette question .

Build-> Compile Projectfonctionne très bien.

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

Cependant, si j'ouvre l'un de mes fichiers Protocol Buffer générés, le package Square n'est pas reconnu.

Erreurs de compilation en ligne Android Studio

Un autre symptôme est que les méthodes héritées de la Messageclasse Square s'affichent comme des erreurs de compilation «Impossible de résoudre la méthode» dans l'éditeur, même si elles se construisent et s'exécutent correctement.

Erreur de compilation d'une seule ligne Android Studio

Dois-je faire autre chose que simplement ajouter la dépendance build.gradlepour mon module dans mon projet?

Dan J
la source
J'ai eu un problème similaire en utilisant mes bibliothèques (pas externes), voyez comment je parviens à résoudre ce problème ici: stackoverflow.com/a/50569818/373033
nah0y

Réponses:

132

Les étapes suivantes aident

  1. Fermez votre projet et dans votre dossier de projet supprimez project/.idea
  2. Supprimer le ~/.gradledossier.

Ouvrez à nouveau le projet. Tout doit être résolu.

Bioz Nguyen
la source
1
Passer des heures sur ce problème. Merci. Mon erreur est que je viens de supprimer .gradle et non .idea
M à
2
Cela a fonctionné pour moi en supprimant .gradle et .idea, puis en invalidant et en redémarrant, j'ai résolu mon problème. puis synchronisez avec gradle.
Pankaj
J'ai déplacé le .gradledossier d' C:\Users\Hasnain\.gradleun autre répertoire. Ensuite, le studio Android affiche une erreur sur chaque classe. Ensuite, je suis les étapes ci-dessus, puis le problème est résolu.
hasnain_ahmad
38
Supprimer tout ce qui se trouve dans le .idearépertoire est une mauvaise idée, car cela pourrait réinitialiser tous les paramètres du projet. Je viens de supprimer .idea/librarieset .idea/cachesfinalement résolu le problème pour moi après avoir essayé toutes les autres solutions.
fdermishin
a très bien fonctionné dans AS 3.1.3. Je n'ai même pas eu besoin d'invalider les caches. Espérons qu'AS construira plus vite maintenant!
Someone Somewhere
111

Merci à free3dom de m'avoir mis sur la bonne voie ici.

Diagnostic

L' Sync Project with Gradle Filesoption d'Android Studio semble maintenir les Project Structurebibliothèques à jour.

synchronisation gradle

Cependant, dans mon cas, il y a eu quelques erreurs:

erreurs trouvées

L'élargissement du lien (pas très évident) a montré le détail. Ma bibliothèque d'exécution filaire s'affichait à un emplacement incorrect:

bibliothèques

Cela semblait être une gueule de bois de ma configuration d'origine où j'avais importé le JAR dans un dossier libs.

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

Je l'ai ensuite changé pour être importé directement de Maven Central ( comme ici ), et il semble que l'ancien paramètre n'a jamais été écrasé par le nouveau.

Le correctif

Le correctif consiste à supprimer la dépendance de la bibliothèque de l' Project Structureécran, puis à Sync Project with Gradle Filesnouveau.

Plus de détails

Vous pouvez également voir quel chemin est utilisé vers la ressource en ouvrant le .idea/libraries/wire_runtime_1_2_0.xml directement fichier.

Mon cassé était:

  <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 />

Après avoir supprimé et rajouté la bibliothèque, elle a changé le root urlen:

      <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!/" />

Mettre à jour

Android Studio v0.4.4 corrige apparemment d'autres bogues qui présentent les mêmes symptômes, donc si vous avez une version plus ancienne, vous souhaiterez peut-être mettre à niveau.

Dan J
la source
3
Merci Dan J. Avant d'essayer votre solution, j'ai essayé celle-ci plus simple (selon moi) et cela a fonctionné pour moi: ouvrez le panneau Gradle sur le côté droit de l'éditeur (au-dessus de "Maven Projects" et "Commander") et en cliquant sur le bouton d'actualisation. Cela a actualisé les paramètres du module. Crédits à @Matteo Danieli (voir: stackoverflow.com/a/17043001 )
almighty972
1
nécessaire pour supprimer les dépendances de jar locales, qui l'ont résolu pour moi, merci pour l'inspiration
jhegedus
Je viens de cliquer sur "Synchroniser le projet avec les fichiers Gradle" et tout va bien maintenant! Merci beaucoup! Tu as sauvé ma journée haha
Jorge Gabriel Siqueira
Cela n'a pas fonctionné pour moi. Mais la suppression de .gradle et .idea a fonctionné
Golnar
De nos jours, le même bouton est représenté par une icône d'éléphant avec une flèche vers le bas.
tm
87

Solution simple

Passez par le lien et cela a fonctionné pour moi.

  1. Choisissez une Fileoption dans le menu en haut à gauche du studio Android.
  2. Sélectionnez l'option: Invalidate Cache/RestartCela ouvrira une boîte de dialogue.
  3. Cliquez sur le premier bouton avec option: Invalidate and Restart
  4. Il fermera Android Studio et le redémarrera. En outre, il commencera à réindexer le projet.

Cela a résolu mon problème

Aller au fichier > Invalidate Cache / Restart > Invalidate and Restart

Source ici pour youtube

Manmohan Soni
la source
Cela a fonctionné pour moi; Android Studio montrait des erreurs partout après avoir essayé de faire de la programmation dans un endroit avec une mauvaise réception wifi. (!!!) Je me suis ensuite assuré d'avoir une bonne connexion wifi et de reconstruire, cependant, les erreurs sont restées. Même un clean / build ne l'a pas résolu. L'invalidation des caches l'a corrigé.
Someone Somewhere
Utilisation d'Android Studio 2.1.3 sur Fedora. Cette solution a fonctionné pour moi. Ajout des outils libgdx et l'importation a eu une erreur mais elle s'est bien compilée. La fermeture et la réouverture n'ont pas fonctionné, mais l'invalidation et le redémarrage ont bien fonctionné.
JoeMoe1984
1
Travaillé sous AS 3.1.4! Je pense que toutes les suggestions sont la bonne façon de gérer le problème. C'est par commande de menu d'Android Studio. C'est certainement beaucoup mieux que de faire la réinitialisation manuellement dans l'environnement de fichiers.
Jan Bergström
A travaillé pour moi le 3.5.1
Neela
44

1) Cliquez sur l'icône Gradle (à droite sur le studio Android)

entrez la description de l'image ici

2) Cliquez sur le bouton d'actualisation et attendez que le problème soit résolu: D

entrez la description de l'image ici

DroidDev
la source
Sur Android Studio 3.1 +, accédez à Fichier> Invalider le cache / redémarrer> Invalider et redémarrer.
DroidDev
17

J'avais toujours le même problème avec Android Studio v3.2.1 en permanence, et j'ai résolu le problème en supprimant simplement ces deux sous-dossiers du .ideadossier (pas besoin de supprimer tout le .ideadossier) alors qu'une synchronisation gradle ne fonctionnait pas:

  • ./idea/caches
  • ./idea/libraries
GoRoS
la source
Dans la plupart des cas, cela résout mes problèmes. Dans quelques autres, il peut être nécessaire «d'invalider le cache et de redémarrer», ou également de changer la version de Gradle.
GoRoS
12

Pour moi, la suppression des dossiers .gradle et .idea du projet a résolu le problème.

kvadityaaz
la source
11

Faites-le simplement sur votre studio Android:

Fichier -> Invalidate caches / Restart -> Invalidate and Restart

Cela a fonctionné pour moi. Pas besoin d'effacer le dossier ./gradle ou ./idea

Arun Yogeshwaran
la source
9

Ma solution hacky pour cela -

  1. Ouvrez votre build.gradledossier
  2. Découpez tout à l'intérieur dependencies{}
  3. Coller dans le bloc-notes pour une conservation temporaire super sûre
  4. Choisissez «Synchroniser maintenant» dans le build.gradlefichier
  5. Attendez que la synchronisation échoue
  6. Collez vos dépendances dans
  7. "Synchroniser maintenant" à nouveau

J'ai essayé beaucoup de solutions et c'était la seule solution pour moi.

jnutttzzz
la source
7

J'ai eu ce problème après la mise à niveau vers Android Studio 3.1. J'ai résolu le problème en mettant à niveau tous les composants que j'utilise. J'ai donc changé les entrées suivantes dans mon build.gradle (application):

  1. Mettez à niveau le SDK (de «compileSdkVersion 25» à «compileSdkVersion 26» ou peut-être plus lorsque vous lisez cette note):

    // compileSdkVersion 25

    compileSdkVersion 26

    Commentaire: Ce changement a forcé le programme à télécharger / installer un nouveau SDK lors de la prochaine synchronisation.

  2. Mettez à niveau appcompat-v7:

    // implémentation 'com.android.support:appcompat-v7:25.4.0'

    implémentation 'com.android.support:appcompat-v7:26.1.0'

  3. Mettre à niveau Firebase:

    // implémentation "com.google.firebase: firebase-ads: 11.4.2"

    implémentation 'com.google.firebase: firebase-core: 12.0.1'

    mise en œuvre "com.google.firebase: firebase-ads: 12.0.1"

  4. Dans PROJECT build.gradle, mettez à jour google-services:

    // classpath 'com.google.gms: google-services: 3.1.0'

    classpath 'com.google.gms: google-services: 3.2.0'

  5. Mettre à niveau gradle (de 4.4 à 4.6). De gradle-wrapper.properties: distributionUrl = https: //services.gradle.org/distributions/gradle-4.6-all.zip

Après ces modifications, nettoyez le projet, invalidez le cache / redémarrez, supprimez le contenu .idea / bibliothèques et resynchronisez (je ne suis pas sûr de l'ordre mais TOUTES ces activités ont résolu le problème pour moi).

Pablo Alfonso
la source
1
qu'en est-il des autres composants qui n'ont pas de version plus récente?
Amir Dadgari
Je ne sais pas. Ce sont les composants que j'avais dans mon projet.
Pablo Alfonso
Salut Amir, selon le site officiel, gradle 4.4 est le dernier disponible (en mars 2018). Où avez-vous trouvé Gradle 4.6?
Pablo Alfonso
J'ai trouvé l'emplacement de Gradle 4.6. J'ai mis à jour la réponse. Merci.
Pablo Alfonso
4
supprimer le contenu .idea / bibliothèques, cela fonctionne pour moi. merci beaucoup
Tram Nguyen
7

La suppression du dossier des bibliothèques dans .idea a résolu le problème pour moi. Il se trouve dans la racine du projet / .idea / bibliothèques.

J'utilise Android Studio 3.1.4

Kamen Stoykov
la source
2
Cela a fonctionné mais j'ai dû invalider et redémarrer également.
Dan Anderson
5

Les étapes ci-dessous lorsque le projet est compilé avec succès mais avec des classes non résolues (toutes les classes d'utilisation seront en rouge dans tous les fichiers)

Étape 1. Supprimez le fichier .gradle

Étape 2. Supprimez le fichier .idea

Étape 3. Ouvrez une nouvelle fenêtre de studio Android avec un autre projet Android sur votre système et fermez votre projet avec une erreur

Étape 3 . Maintenant, ouvrez / importez à nouveau le projet à partir de la barre d'outils du studio Android Studio -> Fichier -> Ouvrir

Remarque: Désormais, lorsque vous importez le projet, les nouveaux dossiers .gradle et .idea seront automatiquement générés avec les dépendances résolues par le compilateur.

Sumith.Pattar
la source
2

Si toutes les réponses ci-dessus ne fonctionnent pas pour vous. Essayez simplement de mettre à jour vos dépendances vers la dernière version. Cela a fonctionné pour moi.

Cuong Nguyen
la source
2

J'ai essayé la plupart des correctifs ci-dessus et ce qui fonctionnait réellement était de supprimer tous les dossiers de configuration .AndroidStudio, puis de redémarrer Android Studio.

  • Emplacement: C: \ Users \ your.username
DIEGO FEDER
la source
2

J'ai trouvé un moyen facile

  • Ouvrir le niveau de l'application build.gradle
  • Supprimez la dépendance qui affiche une erreur et une synchronisation.
  • Ajoutez à nouveau la dépendance et la synchronisation.

Erreur disparue!

Avant

Avant

Après

Après

Khemraj
la source
2

La suppression de .idea/cacheset .idea/librariesdevrait résoudre toutes les erreurs.

Karan_powered_by_RedBull
la source
2

Il semble que tout le monde utilise une approche différente pour contourner ces problèmes. Je vais en suggérer un autre qui me semble un peu moins invasif que les autres. Lorsque j'introduis des modifications à partir d'une bibliothèque aar que j'inclus, j'ouvre le fichier "settings.gradle" pour le projet.

Découpez ensuite le module principal du projet dans la liste des projets:

include ':mainproj',

puis synchronisez votre projet. Puis collez-le à nouveau et resynchronisez votre projet une fois de plus. Je pense que c'est la même chose que certaines des étapes de suppression manuelle, mais cela vous permet de le faire à partir de l'EDI un peu plus rapidement et moins douloureusement.

Jay Snayder
la source
Fonctionne bien pour moi. Merci! @Jay Snayder
Shivam
2

Je suis fixé par la méthode ci-dessous

Méthode 1

Fichier> Invalidate Cache / Restart> Invalidate and Restart

Méthode 2

  • Si vous rencontrez cette erreur uniquement pour un projet particulier, procédez comme suit
   1. Close current project
   2. Go to your project path C://User/Android studio project/your project
   3. Delete two files .gradle and .idea
  • Si vous rencontrez cette erreur pour tous les projets, procédez comme suit
1. Close Android studio
2. Go to the file C://Users/your username/
3. Delete files .gradle , .cache ,.android, .AndroidStudio3.5
Dineshkumar Niet
la source
1

Ces solutions ne m'ont pas aidé avec le même problème dans Android Studio 0.5.8.

J'ai décrit ma réponse à la même question (je suppose): https://stackoverflow.com/a/23891829/534698 Je viens de supprimer le répertoire ~ / .AndroidStudioPreview (dans Ubuntu). J'ai manqué tous mes paramètres Android Studio mais cela fonctionne.

DmitryDzz
la source
c'est la seule chose qui a fonctionné pour moi. Android Studio 1.0.2
Bobby Hargett
1

Dans mon cas, pour une raison quelconque, la version du plug- in Android n'a pas été définie. J'ai essayé de vider le cache et de supprimer .gradle et .idea également, mais cela n'a pas fonctionné et après avoir finalement erré pendant des heures, j'ai trouvé ceci.

Fichier> Structure du projet

Jainam Jhaveri
la source
0

J'ai eu un problème similaire auparavant, l'invalidation du cache et le redémarrage ne l'ont pas résolu. Je viens de faire une Gradle Sync et tout a bien fonctionné.

Mina Samy
la source
0

Résolution du problème en nettoyant le projet Build->Clean Project

Ganesh P
la source
0

Pour moi, je renvoie un pot dans une bibliothèque de modules. Il ne peut pas résoudre le symbole dans le pot. Alors je trouve la solution à ma situation. Utilisez le providedchemin.

provided fileTree(include: ['xxx.jar'], dir: '../moduleX/libs')
Victor Choy
la source
0

J'ai résolu le même problème en suivant les étapes suivantes:

  1. mettre à jour la version de la bibliothèque dans gradle vers n'importe quel nombre aléatoire, par exemple: lib_1.0.0 -> lib_1.0.0.0

  2. synchronisation gradle

  3. la synchronisation affiche une erreur

  4. annuler le changement de version lib_1.0.0.0 -> lib_1.0.0

  5. synchronisation gradle

Ouvrez le fichier java avec les importations pour voir l'erreur effacée.

Deepak PK
la source
0

Aucune des solutions n'a fonctionné pour moi ... J'ai eu recours à la désinstallation de Java de mon ordinateur, en exécutant Android Studio pour m'assurer qu'il détectait la désinstallation, puis en l'installant à nouveau.

Si vous choisissez de suivre cette voie, essayez de modifier le chemin jdk et de définir le nouveau chemin dans la structure du projet. Si cela ne fonctionne pas, désinstallez java .

Kai Lean
la source
0

Je n'ai fait qu'un projet propre et un projet de reconstruction avant de redémarrer Android Studio, cela résout mon problème. Peut-être qu'Android Studio ne met pas à jour les références dans l'interface

Abner Hernandez
la source