Errore durante il recupero del genitore per l'elemento: nessuna risorsa trovata che corrisponde al nome specificato dopo l'aggiornamento a AppCompat v23


780

Ho sempre programmato Android con Eclipse e ho deciso di iniziare la migrazione ad Android Studio . Ho deciso di utilizzare lo stesso SDK che avevo già per Eclipse, quindi:

  • Ha iniziato un nuovo progetto
  • Imposta SDK 4.0 minimo (API Level 14)
  • Scegli l'opzione Attività vuota
  • Nomi predefiniti usati per Nome attività e Nome layout
  • Hit Finish

Dopo alcuni secondi Gradle termina la compilazione e mi genera due errori con i seguenti messaggi nel file Teste4 \ app \ build \ intermediates / exploded-aar \ com.android.support \ appcompat-v7 \ 23.0.0 \ res \ valori -v23 \ valori-v23.xml:

Errore: (2) Errore durante il recupero del genitore per l'elemento: Nessuna risorsa trovata che corrisponde al nome dato 'android: TextAppearance.Material.Widget.Button.Inverse'.

Errore: (2) Errore durante il recupero del genitore per l'elemento: Nessuna risorsa trovata che corrisponde al nome dato 'android: Widget.Material.Button.Colored'.

In File -> Struttura del progetto -> Moduli: app (colonna di sinistra) -> scheda Proprietà , ho le seguenti versioni impostate:

  • "Compila versione Sdk": Android 5.1 (API Level 22)
  • "Versione strumenti di costruzione": 23.0.2

Cosa devo fare per risolvere questo problema?

Ho già provato ciò che è stato suggerito nella domanda Stack Overflow appcompat-v7: 21.0.0 ': Nessuna risorsa trovata che corrisponde al nome dato: attr' android: actionModeShareDrawable ' , ma non ha funzionato.

Risposte:


1147

La versione compilata dell'SDK deve corrispondere alla versione principale della libreria di supporto.

Poiché stai utilizzando la versione 23 della libreria di supporto, devi compilare la versione 23 dell'SDK Android.

In alternativa, puoi continuare a compilare con la versione 22 dell'SDK Android passando all'ultima libreria di supporto v22.


10
Puoi cambiarlo manualmente nella tua build.gradle, oppure puoi usare la GUI aprendo le proprietà del progetto e andando nella scheda "dipendenze".
Bryan Herbst,

11
Questa domanda e risposta non hanno nulla a che fare con la versione su cui verrà eseguita l'app. Un'app con targeting 22 può essere eseguita correttamente su un dispositivo con 23. Il problema qui descritto è che la libreria di supporto versione 23 richiede che tu scelga come target 23, poiché la libreria di supporto fa riferimento ad alcune API nell'SDK 23.
Bryan Herbst,

42
Per quelli come me che sono nuovi su Android Studio e confusi su come "utilizzare la GUI aprendo le proprietà del progetto", nel mio Android Studio (v1.3.1), vado su File, Struttura del progetto, quindi a sinistra nella parte inferiore del riquadro è presente una voce in Moduli (nel mio caso chiamata "app"). Faccio clic su quello, quindi vedo una scheda Dipendenze.
Bryan,

119
Non riesco ancora a credere che Android Studio rilasci cose senza nemmeno provare qualcosa di così semplice !! Almeno metti alcuni avvertimenti significativi !!
Josh,

30
La GUI avrebbe dovuto far apparire un messaggio "abbiamo rilevato che non stai prendendo di mira la giusta versione dell'API Android. Vuoi che la ripari?". Invece, devo smettere di lavorare sull'aereo e aspettare di poter cercare StackOverflow.
Someone Somewhere,

137

Ciò accade perché, dopo gli aggiornamenti, Android Studio utilizza l' API versione 23 per impostazione predefinita.

Per me ha funzionato:

Premi Ctrl+ Shift+ Alt+ Sper accedere alla pagina della struttura del progetto. Vai alla scheda delle proprietà e modifica da 23.0.0 a 22.0.1 (o equivalente a quello che stavi usando in precedenza) nell'area degli strumenti di compilazione e ricostruisci il tuo progetto.

Se non funziona, vai a gradle: app e poi

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

Modifica v7: da 23.0.0 a v7: 22.2.1 come mostrato sopra e sincronizza il livello. Funzionerà sicuramente.


10
Per i neofiti come me che sono confusi su come "andare a gradele: app e quindi compilare fileTree (dir: 'libs', include: ['* .jar']) compile 'com.android.support:appcompat-v7:22.2 .1 '", nel mio Android Studio (versione 1.3.1), nel riquadro del progetto (che ho aperto facendo clic sulla scheda 1: Progetto all'estrema sinistra), vedo due voci in Script di Gradle denominate" build.gradle " . Il secondo ha (Modulo: app) accanto. L'ho fatto doppio clic per aprirlo. Quindi nella sezione delle dipendenze in basso, ho modificato la v7: 23.0.0 in v7: 22.2.1. Ho salvato (e sincronizzato come richiesto da Studio) - sembrava compilare ok.
Bryan,

4
Come posso accedere alla pagina della struttura del progetto su MAC?
Rosu Alin,

4
@Sourav Anche dopo aver fatto queste modifiche, l'errore non è stato risolto. Ho ancora questi errori nel v23/values-23.xmlfile. Ho modificato i valori nella pagina della struttura del progetto, ricostruisci l'app. Ma ancora affrontando il problema :(
Prabs

Su mac il collegamento è ⌘ +; . In alternativa puoi andare su File> Struttura del progetto.
Tomanow,

115

Quando aggiorni Android Studio, utilizza l'API versione 23 per impostazione predefinita, che è il motivo principale del suo verificarsi. Così,

Innanzitutto, controlla la versione di AppCompat in build.gradle (Modulo: app), ovvero

Inserisci qui la descrizione dell'immagine

Se dopo la modifica a 23 si verifica un errore, basta scaricare

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

da SDK Manager. Se già scaricato, allora:

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

Fare clic sul pulsante Manager SDK e aprire la finestra di dialogo.

Inserisci qui la descrizione dell'immagine

Fai clic su Piattaforma SDK e controlla se Android 6.0 è stato scaricato o meno.

in caso contrario, scarica prima quello. Dopo aver completato il download, fare clic su Apply.

Inserisci qui la descrizione dell'immagine

Ora devi applicare le modifiche al tuo progetto dall'impostazione. Quindi premere Ctrl+ Alt+ Shift+S per aprire l'impostazione

  1. Fai clic sull'app dall'elenco.
  2. Fai clic su Proprietà
  3. Cambia la tua versione dell'SDK di compilazione in API 23
  4. Cambia la tua versione di Build Tools in 23.0.0

Inserisci qui la descrizione dell'immagine

Non dimenticare di ricostruire il tuo progetto.

Quindi il tuo errore sparirà.


1
Ho capito il tuo modo di definire la soluzione, ma provo a descrivere il tuo post con una descrizione completa
Naveed Ahmad,

1
@NaveedAhmad Ok, ho intenzione di modificare il mio post. Grazie per il tuo suggerimento
Ravikant Paudel,

1
Ho aggiunto un post relativo al problema precedente stackoverflow.com/a/32370099/2915785
Naveed Ahmad,

1
ehi, per favore aggiungi la stessa versione dell'appcompat, ha risolto il mio problema
vuhung3990

2
In questi casi, gli screenshot aiutano i manichini come me.
ern0

70

Se hai provato a cambiare target con una versione precedente di GooglePlayServices o AppCompatv7 e non funziona, controlla se hai qualche dipendenza dalle librerie di progetto, questo progetto sarà indirizzato all'ultima versione di una qualsiasi di queste librerie. Mi è successo con il progetto Biblioteca di Google Maps Utils:

sostituire:

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

per

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

Quindi puoi continuare con il targeting completo API 22

Se continua a non essere compilato, a volte è utile impostare l'API compileSdkVersion su 23 e targetSdkVersion su 22.


35

Sono d'accordo con la risposta precedente. La versione compilata dell'SDK deve corrispondere alla libreria di supporto. Ecco cosa ho fatto.

  1. Puoi andare su SDK Manager e sotto la piattaforma SDK, installare Android 5.X con livello API 23.
  2. In Struttura del progetto, modifica la versione compilata dell'SDK in API 23 e la versione di Build Tools in 23.0.0

Quindi dovrebbe costruire senza problemi.


22

Devi impostare compileSdkVersion su 23.

Dal API 23 Android rimosso i pacchetti HTTP Apache deprecati, quindi se li si usa per le richieste di server, è necessario aggiungere useLibrary 'org.apache.http.legacy'a build.gradlecome indicato in questo link:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    ...

    //only if you use Apache packages
    useLibrary 'org.apache.http.legacy'
}

15

Questo problema si pone perché ora la versione di compilazione dell'SDK deve corrispondere alla versione principale della libreria di supporto Android.

Nel mio caso ho la Android Support Libraryversione 23, quindi ho dovuto compilare contro il Android SDK version 23, e ho dovuto cambiare questo nel mio build.gradlefile:

inserisci qui la descrizione dell'immagine

Bene, alcuni di voi dovranno installare l'SDK, Android 6.0 (API 23)

inserisci qui la descrizione dell'immagine

e non dimenticare di sincronizzare il progetto con file gradle


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'
}

9

Ho trovato la soluzione, Problema iniziato quando ho aggiornato sdk, dopo di che ho usato buildToolsVersion diversi ('22 .0.1 ') e stavo usando diverse librerie di supporto come compilare' com.android.support:appcompat-v7:23.0.0 ' , mostrandoti nell'immagine qui sotto

inserisci qui la descrizione dell'immagine

Questo stava sollevando il problema di " android.widget.Material ..." Poi ho usato la stessa versione per la libreria di supporto come compilare 'com.android.support:appcompat-v7:22.0.1' e il suo DONE. (Mostrandoti nello screenshot qui sotto)

inserisci qui la descrizione dell'immagine


9

Dovresti compilare il tuo progetto con l'ultima versione, quindi aggiorna e installa dal tuo SDK. Sincronizza il tuo progetto con sync project with Gradle fileButton.
Puoi anche continuare con la versione esistente, ma controlla che sia installato correttamente sotto l'immagine, indica all'API 22 che è installato correttamente.inserisci qui la descrizione dell'immagine

E sincronizza il tuo progetto, se necessario.

inserisci qui la descrizione dell'immagine

può essere d'aiuto.


8

Come sottolineato da Tanis.7x, la versione della libreria di supporto (23) non corrisponde a targetSdkVersion (22)

È possibile risolvere questo problema nel modo seguente:

Nel build.gradefile del modulo dell'app, modifica la seguente riga di codice

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

Per

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

Questo utilizzerà l'ultima versione della versione di appcompat compatibile con SdkVersion 22.


7

La versione compilata dell'SDK deve corrispondere alla versione principale della libreria di supporto. Questa è la soluzione al tuo problema. Puoi verificarlo facilmente nei tuoi Script Gradle in build.gradlearchivio. Fx: se hai compileSdkVersion23 anni la tua libreria di compilazione deve iniziare alle 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'
}

E controlla sempre che il tuo Studoi Android abbia il livello API supportato. Puoi verificarlo nel tuo SDK Android, in questo modo: inserisci qui la descrizione dell'immagine


6

Nel mio caso era una versione superiore di Google Play-Services. Li ho impostati su 7.0.0 (non 8.x) e tutto era ok.


5

Volevo eseguire il downgrade da API 23 a 22 e ho ottenuto questo errore. Ho dovuto cambiare tutti i build.gradle file in un progetto per compilare.

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'
}

4

Questo è ciò che mi ha aiutato: aggiungere una specifica piattaforma Android

Che cosa dovrebbe essere fatto è il seguente ... Nel mio caso è stato cordova, ma lo stesso è rilevante per ionic, phonegape altri framework come questi:

  1. elencare tutte le piattaforme installate per il vostro progetto: cordova platform list. Vedrai qualcosa del genere:

inserisci qui la descrizione dell'immagine

  1. rimuovere la piattaforma Android: cordova platform remove android.

  2. quindi aggiungere la piattaforma Android specifica: cordova platform add android@5.0.0.

In bocca al lupo! :)


3

Ho gli stessi problemi. Ho risolto il mio problema aggiornando gradle.build per ciascun sottomodulo all'ultima versione del compilatore.


2

Tutto è fantastico, ma nessuno di voi ha spiegato dove scaricare gli strumenti di compilazione dell'SDK

Tutto è delizioso ma nessuno di voi ha spiegato dove scaricare gli strumenti di build dell'SDK


1

Un'altra soluzione: navigare verso

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

apri il .aarfile con 7-zip o winrar, nella cartella res rimuovi la values-23cartella e salva le modifiche.


1

sul modulo: 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'
}

progetto: nameAppXXXX (Gradle)

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

    }
}

allprojects {
    repositories {
        jcenter()
    }
}

e modifica la tua attività di AppCompatActivity ad esempio Attività:

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


}


1

Aggiorna Android Studio.

Ho avuto questo problema con Android Studio 1.3.1 e nessuna delle altre risposte ha funzionato per me, ma dopo l'aggiornamento alla 1.5.1 non ci sono stati problemi.


1

Se stai usando phonegap (multipiattaforma) e hai lo stesso problema sopra, basta rimuovere la piattaforma Android usando il comando seguente.

piattaforma phonegap rimuove Android

E aggiungilo di nuovo.

piattaforma phonegap aggiungere Android

Quindi problema risolto per me.


0

Come altri hanno già detto, compile sdk versiondevi abbinare la tua support library'sversione principale. Questo è comunque rilevante anche per subprojectschi ne avesse.

In tal caso, è possibile impostare le subprojectsversioni compilate di sdk con il seguente script:

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

Aggiungi questo script nel tuo build.gradlefile root .


-1

Se ricevi errori anche dopo aver scaricato il più recente SDK e Android Studio, ecco cosa ho fatto:

  1. Scarica l'SDK più recente
  2. Apri struttura file-progetto ( Ctrl+ Alt+ Shift+ S)
  3. Nei moduli, selezionare l'app
  4. Nella scheda Proprietà: modifica compilazione versione SDK in API 23 Android 6.0 marshmallow (più recente)

Spero che aiuti qualcuno in modo che non soffrirà come ho fatto per questi due giorni.

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.