Erreur lors de la récupération du parent pour l'élément: Aucune ressource trouvée correspondant au nom donné après la mise à niveau vers AppCompat v23

780

J'ai toujours programmé Android avec Eclipse et décidé de commencer la migration vers Android Studio . J'ai décidé d'utiliser le même SDK que j'avais déjà pour Eclipse, puis:

  • A commencé un nouveau projet
  • Définir le SDK 4.0 minimum (API niveau 14)
  • Choisissez l'option d'activité vierge
  • Noms par défaut utilisés pour le nom de l'activité et le nom de la présentation
  • Cliquez sur Terminer

Après quelques secondes, Gradle termine la génération et il me renvoie deux erreurs avec les messages suivants dans le fichier Teste4 \ app \ build \ intermediates / exploded-aar \ com.android.support \ appcompat-v7 \ 23.0.0 \ res \ values -v23 \ values-v23.xml:

Erreur: (2) Erreur lors de la récupération du parent pour l'élément: Aucune ressource trouvée correspondant au nom donné 'android: TextAppearance.Material.Widget.Button.Inverse'.

Erreur: (2) Erreur lors de la récupération du parent pour l'élément: Aucune ressource trouvée correspondant au nom donné 'android: Widget.Material.Button.Colored'.

Sous Fichier -> Structure du projet -> Modules: application (colonne de gauche) -> onglet Propriétés , j'ai les versions suivantes configurées:

  • "Compile Sdk Version": Android 5.1 (API niveau 22)
  • "Build Tools Version": 23.0.2

Que dois-je faire pour résoudre ce problème?

J'ai déjà essayé ce qui a été suggéré dans la question Stack Overflow appcompat-v7: 21.0.0 ': Aucune ressource trouvée correspondant au nom donné: attr' android: actionModeShareDrawable ' , mais cela n'a pas fonctionné.

Vini.g.fer
la source

Réponses:

1147

Votre version du SDK de compilation doit correspondre à la version principale de la bibliothèque de support.

Étant donné que vous utilisez la version 23 de la bibliothèque de support, vous devez compiler avec la version 23 du SDK Android.

Vous pouvez également continuer à compiler avec la version 22 du SDK Android en passant à la dernière bibliothèque de support v22.

Bryan Herbst
la source
10
Vous pouvez soit le modifier manuellement dans votre build.gradle, soit utiliser l'interface graphique en ouvrant les propriétés du projet et en allant dans l'onglet "dépendances".
Bryan Herbst
11
Cette question et cette réponse n'ont rien à voir avec la version sur laquelle votre application s'exécutera. Une application ciblant 22 peut fonctionner très bien sur un appareil exécutant 23. Le problème décrit ici est que la bibliothèque de support version 23 nécessite que vous cibliez 23, car la bibliothèque de support référence certaines API dans le SDK 23.
Bryan Herbst du
42
Pour ceux comme moi qui sont nouveaux dans Android Studio et qui ne savent pas comment "utiliser l'interface graphique en ouvrant les propriétés du projet", dans mon Android Studio (v1.3.1), je vais dans Fichier, Structure du projet, puis à gauche -le volet en bas est une entrée sous Modules (appelée "app" dans mon cas). Je clique dessus, puis je vois un onglet Dépendances.
Bryan
119
Je n'arrive toujours pas à croire qu'Android Studio publie des trucs sans même tester quelque chose de SI basique !! Mettez au moins quelques avertissements significatifs !!
Josh
30
L'interface graphique aurait dû afficher un message "nous avons détecté que vous ne ciblez pas la bonne version de l'API Android. Voulez-vous que je la répare?". Au lieu de cela, je dois arrêter de travailler sur l'avion et attendre que je puisse rechercher stackoverflow.
Someone Somewhere
137

Cela se produit car après les mises à jour, Android Studio utilise la version 23 de l' API par défaut.

Ce qui suit a fonctionné pour moi:

Appuyez sur Ctrl+ Shift+ Alt+ Spour accéder à la page de structure du projet. Accédez à l'onglet Propriétés et remplacez 23.0.0 par 22.0.1 (ou équivalent à ce que vous utilisiez précédemment) dans la zone de l'outil de génération et reconstruisez votre projet.

Si cela ne fonctionne pas, accédez à gradle: app puis

compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'

Modifiez v7: 23.0.0 en v7: 22.2.1 comme indiqué ci-dessus et synchronisez gradle. Cela fonctionnera certainement.

Sourav Nanda
la source
10
Pour les débutants comme moi qui ne savent pas comment "aller à gradele: app puis compiler fileTree (dir: 'libs', inclure: ['* .jar']) compiler 'com.android.support:appcompat-v7:22.2 .1 '", dans mon Android Studio (version 1.3.1), dans le volet projet (que j'ai ouvert en cliquant sur l'onglet 1: Projet tout à gauche), je vois deux entrées sous Gradle Scripts appelées" build.gradle " . Le second a (Module: app) à côté. J'ai double-cliqué dessus pour l'ouvrir. Ensuite, dans la section des dépendances en bas, j'ai changé la v7: 23.0.0 en v7: 22.2.1. J'ai enregistré (et synchronisé comme demandé par Studio) - semblait compiler ok.
Bryan
4
Comment puis-je accéder à la page de structure de projet sur MAC?
rosu alin
4
@Sourav Même après avoir effectué ces modifications, l'erreur n'est pas résolue. J'ai toujours ces erreurs dans le v23/values-23.xmlfichier. J'ai changé les valeurs dans la page de structure du projet, reconstruisez l'application. Mais toujours confronté au problème :(
Prabs
Sur mac, le raccourci est ⌘ +; . Vous pouvez également aller dans Fichier> Structure du projet.
Tomanow
115

Lorsque vous mettez à jour votre Android Studio, il utilise la version 23 de l'API par défaut, qui est la principale raison de son apparition. Donc,

Dans un premier temps, vérifiez votre version AppCompat dans build.gradle (Module: app) Autrement dit,

Entrez la description de l'image ici

Si après le passage à 23, une erreur se produit, il suffit de télécharger

Compile Sdk Version to API 23, and Build Tools Version to 23.0.0

du SDK Manager. Si déjà téléchargé, alors:

1. Go to SDK Manager and
2. Under Project Structure, change *Compile SDK Version* to API 23, and *Build Tools Version* to 23.0.0

Cliquez sur le bouton Gestionnaire de SDK et ouvrez la boîte de dialogue.

Entrez la description de l'image ici

Cliquez sur SDK Platform et vérifiez si Android 6.0 est téléchargé ou non.

sinon, téléchargez-le d'abord. Une fois le téléchargement terminé, cliquez sur Apply.

Entrez la description de l'image ici

Vous devez maintenant appliquer les modifications à votre projet à partir des paramètres. Appuyez ensuite sur Ctrl+ Alt+ Shift+S pour ouvrir le paramètre

  1. Cliquez sur l'application dans la liste.
  2. Cliquez sur les propriétés
  3. Changez votre version du SDK de compilation en API 23
  4. Changez votre version de Build Tools en 23.0.0

Entrez la description de l'image ici

N'oubliez pas de reconstruire votre projet.

Ensuite, votre erreur aura disparu.

Ravikant Paudel
la source
1
J'ai compris votre façon de définir la solution, mais essayez de décrire votre message avec une description complète
Naveed Ahmad
1
@NaveedAhmad Ok, je vais modifier mon message. Merci pour votre suggestion.
Ravikant Paudel du
1
J'ai ajouté un article lié au problème ci-dessus stackoverflow.com/a/32370099/2915785
Naveed Ahmad
1
Hé, veuillez ajouter la même version compatible avec l'application, cela a résolu mon problème
vuhung3990
2
Dans de tels cas, les captures d'écran aident les nuls comme moi.
ern0
70

Si vous avez essayé de changer la cible en une version précédente de GooglePlayServices ou AppCompatv7 et que cela ne fonctionne pas, vérifiez si vous avez une dépendance de projet-bibliothèques, ce projet ciblera la dernière version de l'une de ces bibliothèques. Cela m'est arrivé avec le projet Google Maps Utils Library:

remplacer:

compile 'com.google.android.gms:play-services:+'

à

compile 'com.google.android.gms:play-services:8.3.0'

Ensuite, vous pouvez continuer le ciblage complet de l'API 22

S'il ne compile toujours pas, il est parfois utile de définir l'API compileSdkVersion sur 23 et targetSdkVersion sur 22.

Pelanes
la source
35

Je suis d'accord avec la réponse précédente. Votre version du SDK de compilation doit correspondre à la bibliothèque de support. Voici ce que j'ai fait.

  1. Vous pouvez aller dans SDK Manager et sous SDK Platform, installer Android 5.X avec l'API niveau 23.
  2. Sous Structure du projet, remplacez la version du SDK de compilation par API 23 et la version de Build Tools par 23.0.0

Ensuite, il devrait se construire sans problème.

Stucky
la source
22

Vous devez définir compileSdkVersion sur 23.

Étant donné que l'API 23 Android a supprimé les packages Apache Http obsolètes, donc si vous les utilisez pour les demandes du serveur, vous devrez ajouter useLibrary 'org.apache.http.legacy'à build.gradlecomme indiqué dans ce lien:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    ...

    //only if you use Apache packages
    useLibrary 'org.apache.http.legacy'
}
Dharma Sai Seerapu
la source
15

Ce problème est soulevé car maintenant la version de compilation du SDK doit correspondre à la version principale de la bibliothèque de support Android.

Dans mon cas, j'ai la Android Support Libraryversion 23, j'ai donc dû compiler avec le Android SDK version 23, et j'ai dû changer cela dans mon build.gradlefichier:

entrez la description de l'image ici

Eh bien, certains d'entre vous devront installer le SDK, Android 6.0 (API 23)

entrez la description de l'image ici

et n'oubliez pas de synchroniser le projet avec les fichiers gradle

Jorgesys
la source
12
android {
    compileSdkVersion 23
    buildToolsVersion '23.0.1'

defaultConfig {
    applicationId ""
    minSdkVersion 14
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.code.gson:gson:2.3.1'
compile 'com.android.support:recyclerview-v7:23.0.0'
compile 'com.android.support:appcompat-v7:23.0.1'
}
dhiku
la source
9

J'ai trouvé la solution, le problème a commencé lorsque j'ai mis à jour sdk, après avoir utilisé différentes buildToolsVersion ('22 .0.1 ') et j'utilisais différentes bibliothèques de support comme la compilation' com.android.support:appcompat-v7:23.0.0 ' , vous montrant dans l'image ci-dessous

entrez la description de l'image ici

Cela posait un problème de " android.widget.Material ..." Ensuite, j'ai utilisé la même version pour la bibliothèque de support comme compiler 'com.android.support:appcompat-v7:22.0.1' et son fait. (Vous montrant dans la capture d'écran ci-dessous)

entrez la description de l'image ici

Naveed Ahmad
la source
9

Vous devez compiler votre projet avec la dernière version afin de mettre à jour et d'installer à partir de votre SDK. Synchronisez votre projet avec sync project with Gradle fileButton.
Vous pouvez également continuer avec la version existante mais vérifiez qu'elle est correctement installée sous l'image pour indiquer à l'API 22 qu'elle est correctement installée.entrez la description de l'image ici

Et synchronisez votre projet si nécessaire.

entrez la description de l'image ici

cela peut aider.

Inzimam Tariq IT
la source
8

Comme souligné par Tanis.7x, la version de la bibliothèque de support (23) ne correspond pas à targetSdkVersion (22)

Vous pouvez résoudre ce problème en procédant comme suit:

Dans le build.gradefichier de votre module d'application, modifiez la ligne de code suivante

compile 'com.android.support:appcompat-v7:23.0.0'

À

compile 'com.android.support:appcompat-v7:22.+'

Cela utilisera la dernière version de la version compatible avec l'application qui est compatible avec SdkVersion 22.

RWIL
la source
7

Votre version du SDK de compilation doit correspondre à la version principale de la bibliothèque de support. Ceci est la solution à votre problème. Vous pouvez le vérifier facilement dans vos scripts Gradle en build.gradlefichier. Fx: si vous avez compileSdkVersion23 ans, votre bibliothèque de compilation doit commencer à 23.

  compileSdkVersion 23
    buildToolsVersion "23.0.0"
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 340
        versionName "3.4.0"
    }
dependencies {
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.android.support:recyclerview-v7:23.0.1'
}

Et vérifiez toujours que votre Studoi Android possède le niveau d'API pris en charge. Vous pouvez le vérifier dans votre SDK Android, comme ceci: entrez la description de l'image ici

Oskar
la source
6

Dans mon cas, c'était une version supérieure de Google-play-services. Je les ai mis à 7.0.0 (pas 8.x) et tout allait bien.

Alecs
la source
5

Je voulais rétrograder de l'API 23 à 22 et j'ai obtenu cette erreur. J'ai dû changer tous les build.gradle fichiers d'un projet afin de les compiler.

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.yourapp.app"
        minSdkVersion 14
        targetSdkVersion 22
    }
...
dependencies {
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.android.support:support-v4:22.2.1'
    compile 'com.android.support:design:22.2.1'
    compile 'com.google.android.gms:play-services-gcm:10.0.1'
}
CoolMind
la source
4

C'est ce qui m'a aidé: Ajouter une plateforme Android spécifique

Que faut - il faire est le suivant ... Dans mon cas , il était , cordovamais la même chose est pertinent pour ionic, phonegapet d' autres cadres comme ceux - ci:

  1. liste de toutes les plates - formes installées pour votre projet: cordova platform list. Vous verrez quelque chose comme ceci:

entrez la description de l'image ici

  1. retirer la plate - forme Android: cordova platform remove android.

  2. puis ajouter la plate - forme Android spécifique: cordova platform add [email protected].

Bonne chance! :)

Lentyai
la source
3

J'ai les mêmes problèmes. J'ai résolu mon problème en mettant à jour gradle.build pour chaque sous-module vers la dernière version du compilateur.

sonida
la source
2

Tout va bien mais aucun de vous n'a expliqué où télécharger les outils de construction du SDK

Tout est génial, mais aucun de vous n'a expliqué où télécharger les outils de construction du SDK

Stav Bodik
la source
1

Une autre solution: accédez à

\sdk\extras\android\m2repository\com\android\support\appcompat-v7\23.x.x

ouvrir le .aarfichier avec 7-zip ou winrar, dans le dossier res supprimer le values-23dossier et enregistrer les modifications.

Ali Zarei
la source
1

sur le module: app (Gradle)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.namepack.nameappxxxxx"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}

projet: nameAppXXXX (Gradle)

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'

    }
}

allprojects {
    repositories {
        jcenter()
    }
}

et modifiez votre activité AppCompatActivity pour par exemple Activité:

package com.namepack.nameappxxxxx;


import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;

public class NameClass extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
    }


}
Alex Zaraos
la source
1

Gestionnaire de SDK

Assurez-vous que tous ces éléments sont à jour.

Ganesh Kanna
la source
1

Mettez à niveau Android Studio.

J'ai eu ce problème avec Android Studio 1.3.1 et aucune des autres réponses n'a fonctionné pour moi, mais après la mise à jour vers 1.5.1, il n'y a eu aucun problème.

Matthew Read
la source
1

Si vous utilisez phonegap (multiplateforme) et avez le même problème ci-dessus, supprimez simplement la plate-forme Android à l'aide de la commande ci-dessous.

plateforme phonegap supprimer android

Et ajoutez-le à nouveau.

plateforme phonegap ajouter android

Ensuite, le problème a été résolu pour moi.

Edukondalu Thaviti
la source
0

Comme d'autres l'ont déjà mentionné, vous compile sdk versiondevez correspondre à votre support library'sversion principale. Ceci est cependant également pertinent subprojectssi vous en avez.

Dans le cas subprojectscontraire , vous pouvez définir vos versions de compilation de sdk avec le script suivant:

subprojects { subproject ->
afterEvaluate{
    if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
        android {
            compileSdkVersion rootProject.ext.compileSdkVersion
            buildToolsVersion rootProject.ext.buildToolsVersion
        }
      }
   }
}

Ajoutez ce script dans votre build.gradlefichier racine .

TheBaj
la source
-1

Si vous obtenez des erreurs même après avoir téléchargé le dernier SDK et Android Studio, voici ce que j'ai fait:

  1. Téléchargez le SDK le plus récent
  2. Structure de projet de fichier ouvert ( Ctrl+ Alt+ Shift+ S)
  3. Dans les modules, sélectionnez l'application
  4. Dans l'onglet Propriétés: changez la version de compilation du SDK en API 23 Android 6.0 marshmallow (dernière)

J'espère que cela aide quelqu'un afin qu'il ne souffre pas comme je l'ai fait pendant ces quelques jours.

xsushil
la source