J'ai configuré mon projet dans Android Studio pour utiliser la bibliothèque Square Wire , conformément à cette question .
Build
-> Compile Project
fonctionne bien.
2:03:10 PM Compilation completed successfully in 31 sec
Cependant, si j'ouvre l'un de mes fichiers de tampon de protocole générés, le paquet Square n'est pas reconnu.
Un autre symptôme est que les méthodes héritées de la classe Square Message
s'affichent avec les erreurs de compilation "Impossible de résoudre la méthode" dans l'éditeur, même si leur construction et leur exécution sont correctes.
Dois-je faire quelque chose de plus que simplement ajouter la dépendance dans build.gradle
pour mon module dans mon projet?
Merci à free3dom de m'avoir mis sur la bonne voie ici.
Diagnostic
L'option Sync Project with Gradle Files
Dans Android Studio semble maintenir les bibliothèques Project Structure
À jour.
Cependant, dans mon cas, il y avait des erreurs:
L'élargissement du lien (pas très évident) a montré le détail. Ma bibliothèque filaire était affichée à un emplacement incorrect:
Cela semblait être une gueule de bois de ma configuration d'origine où j'avais importé le fichier JAR dans un dossier libs.
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
Je l'ai par la suite changé pour qu'il soit importé directement de Maven Central ( comme ici ), et il semble que l'ancien paramètre n'ait jamais été remplacé par le nouveau.
Le correctif
Le correctif consiste à supprimer la dépendance de la bibliothèque de l'écran Project Structure
, Puis à nouveau Sync Project with Gradle Files
.
Plus de détails
Vous pouvez également voir quel chemin est utilisé pour la ressource en ouvrant directement le .idea/libraries/wire_runtime_1_2_0.xml
.
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 ré-ajouté la bibliothèque, le root url
A été remplacé par:
<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. Si vous possédez une version plus ancienne, vous voudrez peut-être effectuer une mise à niveau.
Les étapes suivantes aident
project/.idea
~/.gradle
.Ouvrez le projet à nouveau. Tout devrait être résolu.
Solution simple
Passez par le lien et cela a fonctionné pour moi.
File
dans le menu situé en haut à gauche de Android studio.Invalidate Cache/Restart
Cela ouvrira une boîte de dialogue.Invalidate and Restart
Cela a résolu mon problème
Allez dans Fichier > Invalider le cache/redémarrer > Invalider et redémarrer
J'avais toujours le même problème avec Android Studio v3.2.1 en permanence et je réglais le problème en supprimant simplement ces deux sous-dossiers du dossier .idea
(Pas besoin de supprimer tout le dossier .idea
) lorsqu'une synchronisation de gradins ne fonctionnait pas:
./idea/caches
./idea/libraries
Pour moi, supprimer le dossier du projet .gradle et .idea a résolu le problème.
Mon correctif hacky pour cela -
build.gradle
dependencies{}
build.gradle
J'ai essayé beaucoup de solutions et c'était la seule solution pour moi.
La suppression du dossier des bibliothèques dans .idea a résolu le problème pour moi. Il est situé dans racine du projet/.idea/libraries.
J'utilise Android Studio 3.1.4
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 modifié les entrées suivantes dans mon build.gradle (app):
Mettez à niveau le SDK (de "compileSdkVersion 25" à "compileSdkVersion 26" ou peut-être plus lorsque vous lirez cette note):
// compileSdkVersion 25
compileSdkVersion 26
Commentaire: Cette modification a obligé le programme à télécharger/installer un nouveau sdk lors de la prochaine synchronisation.
Mettez à niveau appcompat-v7:
// implémentation 'com.Android.support:appcompat-v7:25.4.0'
implémentation 'com.Android.support:appcompat-v7:26.1.0'
Mise à niveau de firebase:
// implémentation 'com.google.firebase: firebase-ads: 11.4.2'
implémentation 'com.google.firebase: firebase-core: 12.0.1'
implémentation 'com.google.firebase: firebase-ads: 12.0.1'
Dans PROJECT build.gradle, mettez à niveau Google Services:
// chemin de classe 'com.google.gms: google-services: 3.1.0'
classpath 'com.google.gms: google-services: 3.2.0'
Niveau d'amélioration (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/libraries et resynchronisez (vous n'êtes pas sûr de l'ordre, mais TOUTES ces activités ont résolu le problème).
Étapes ci-dessous lorsque le projet est compilé avec succès, mais avec des classes non résolues (l'utilisation de toutes les classes sera en rouge dans tous les fichiers)
Étape 1. Supprimer le fichier .gradle
Étape 2. Supprimer le fichier .idea
Étape 3. Ouvrez le new Android Studio Window avec un autre Android projet) sur votre système et fermez votre projet avec erreur
Étape 3 . Maintenant, ouvrez/importez à nouveau le projet à partir de la barre d’outils du studio Android Studio -> Fichier -> Ouvrir
Remarque: Maintenant, lorsque vous importez le projet, les nouveaux dossiers .gradle et .idea sont automatiquement générés avec les dépendances résolues par le compilateur.
Faites ceci sur votre Android studio:
Fichier -> Invalider caches/Restart -> Invalidate and Restart
Cela a fonctionné pour moi. Pas besoin d'effacer le dossier ./gradle ou ./idea
Il semble que tout le monde utilise une approche différente pour résoudre ces problèmes. Je vais en suggérer un autre que je trouve un peu moins invasif que les autres. Lorsque j'apporte des modifications d'une bibliothèque aar que j'inclus, j'ouvre le fichier "settings.gradle" du projet.
Ensuite, coupez le module principal du projet dans la liste des projets:
include ':mainproj',
puis synchronisez votre projet. Puis collez-le de nouveau et synchronisez à nouveau votre projet. Je pense que cela est identique à certaines des étapes de suppression manuelle, mais cela vous permet de le faire à partir de IDE un peu plus rapidement et moins douloureusement.
Si toutes les réponses ci-dessus ne fonctionnent pas pour vous. Essayez simplement de mettre à jour vos dépendances avec la dernière version. Cela a fonctionné pour moi.
Supprimer le .idea/caches
et .idea/libraries
devrait trier toutes les erreurs.
J'ai essayé la plupart des correctifs ci-dessus et ce qui a vraiment fonctionné a été de supprimer tous les dossiers de configuration .AndroidStudio puis de redémarrer Android Studio.
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 (sous Ubuntu). J'ai raté tous mes Android paramètres Studio mais cela fonctionne.
J'avais un problème similaire auparavant, l'invalidation du cache et le redémarrage ne le résolvaient pas. Je viens de faire une Gradle Sync et tout a bien fonctionné.
Pour moi, je me réfère un pot dans une bibliothèque de modules. Il ne peut pas résoudre le symbole dans le pot. Je trouve donc la solution à ma situation. Utilisez le chemin provided
.
provided fileTree(include: ['xxx.jar'], dir: '../moduleX/libs')
Toutes les réponses ci-dessus n'ont pas fonctionné pour moi. Mon problème était que j'avais 3 modules, dont 2 avec le même nom de package .
C'était correct pour Android studio <= 3.2.1.
Pour Android studio> 3.2.1, l'impression était rouge.
Je l'ai résolu comme cette mention ici (je viens de faire différents paquets nommer pour chaque modules): Any Android version Studio> 3.2.1 afficher la ressource rouge mais toujours compiler)
Résolu le problème en nettoyant le projet Build->Clean Project