Fehler beim Abrufen des übergeordneten Elements für das Element: Es wurde keine Ressource gefunden, die dem angegebenen Namen nach dem Upgrade auf AppCompat v23 entspricht

780

Ich habe Android immer mit Eclipse programmiert und beschlossen, mit der Migration auf Android Studio zu beginnen . Ich entschied mich dann, dasselbe SDK zu verwenden, das ich bereits für Eclipse hatte:

  • Ein neues Projekt gestartet
  • Legen Sie das minimale SDK 4.0 fest (API Level 14).
  • Wählen Sie die Option Leere Aktivität
  • Verwendete Standardnamen für Aktivitätsname und Layoutname
  • Klicken Sie auf Fertig stellen

Nach einigen Sekunden beendet Gradle den Build und wirft zwei Fehler mit den folgenden Meldungen in der Datei Teste4 \ app \ build \ intermediates / exploded-aar \ com.android.support \ appcompat-v7 \ 23.0.0 \ res \ values ​​aus -v23 \ values-v23.xml:

Fehler: (2) Fehler beim Abrufen des übergeordneten Elements für das Element: Es wurde keine Ressource gefunden, die dem angegebenen Namen 'android: TextAppearance.Material.Widget.Button.Inverse' entspricht.

Fehler: (2) Fehler beim Abrufen des übergeordneten Elements für das Element: Es wurde keine Ressource gefunden, die dem angegebenen Namen 'android: Widget.Material.Button.Colored' entspricht.

Unter Datei -> Projektstruktur -> Module: App (linke Spalte) -> Registerkarte Eigenschaften habe ich folgende Versionen eingerichtet:

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

Was soll ich tun, um dies zu beheben?

Ich habe bereits versucht, was in der Stapelüberlauf- Frage appcompat-v7: 21.0.0 'vorgeschlagen wurde: Es wurde keine Ressource gefunden, die dem angegebenen Namen entspricht: attr' android: actionModeShareDrawable ' , aber es hat nicht funktioniert.

Vini.g.fer
quelle

Antworten:

1147

Ihre kompilierte SDK-Version muss mit der Hauptversion der Support-Bibliothek übereinstimmen.

Da Sie Version 23 der Support-Bibliothek verwenden, müssen Sie mit Version 23 des Android SDK kompilieren.

Alternativ können Sie die Kompilierung mit Version 22 des Android SDK fortsetzen, indem Sie zur neuesten Support-Bibliothek v22 wechseln.

Bryan Herbst
quelle
10
Sie können es entweder manuell in Ihrem ändern build.gradleoder die GUI verwenden, indem Sie die Projekteigenschaften öffnen und zur Registerkarte "Abhängigkeiten" wechseln.
Bryan Herbst
11
Diese Frage und Antwort haben nichts mit der Version zu tun, auf der Ihre App ausgeführt wird. Eine App mit dem Ziel 22 kann problemlos auf einem Gerät mit 23 ausgeführt werden. Das hier beschriebene Problem besteht darin, dass für die Supportbibliothek Version 23 das Ziel 23 erforderlich ist, da die Supportbibliothek auf einige APIs im 23 SDK verweist.
Bryan Herbst
42
Für diejenigen wie mich, die neu in Android Studio sind und sich nicht sicher sind, wie sie "die GUI durch Öffnen der Projekteigenschaften verwenden sollen", gehe ich in meinem Android Studio (v1.3.1) zu Datei, Projektstruktur und dann links -hand Bereich unten ist ein Eintrag unter Module (in meinem Fall "App" genannt). Ich klicke darauf und sehe dann eine Registerkarte Abhängigkeiten.
Bryan
119
Ich kann immer noch nicht glauben, dass Android Studio Sachen veröffentlicht, ohne etwas SO Grundlegendes zu testen !! Zumindest einige sinnvolle Warnungen setzen !!
Josh
30
Die Benutzeroberfläche sollte die Meldung "Wir haben festgestellt, dass Sie nicht auf die richtige Android-API-Version abzielen. Soll ich das Problem beheben?" Angezeigt werden. Stattdessen muss ich aufhören, am Flugzeug zu arbeiten, und warten, bis ich den Stackoverflow durchsuchen kann.
Jemand irgendwo
137

Dies liegt daran, dass Android Studio nach Updates standardmäßig die API-Version 23 verwendet .

Folgendes hat bei mir funktioniert:

Drücken Sie Ctrl+ Shift+ Alt+ S, um zur Projektstrukturseite zu gelangen. Wechseln Sie zur Registerkarte Eigenschaften, und ändern Sie 23.0.0 in 22.0.1 (oder das, was Sie zuvor verwendet haben) im Bereich des Build-Tools, und erstellen Sie Ihr Projekt neu.

Wenn das nicht funktioniert, gehen Sie zu gradle: app und dann

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

Bearbeiten Sie v7: 23.0.0 bis v7: 22.2.1 wie oben gezeigt und synchronisieren Sie gradle. Das wird definitiv funktionieren.

Sourav Nanda
quelle
10
Für Neulinge wie mich, die sich nicht sicher sind, wie sie "zu gradele: app gehen und dann fileTree (dir: 'libs', einschließlich: '* .jar']) kompilieren sollen, kompilieren Sie 'com.android.support:appcompat-v7:22.2 .1 '"In meinem Android Studio (Version 1.3.1) werden im Projektfenster (das ich durch Klicken auf die Registerkarte 1: Projekt ganz links geöffnet habe) zwei Einträge unter Gradle-Skripten mit dem Namen" build.gradle "angezeigt. . Der zweite hat (Modul: App) daneben. Ich habe darauf doppelt geklickt, um es zu öffnen. Dann habe ich im Abschnitt "Abhängigkeiten" unten die Version 7: 23.0.0 in Version 7: 22.2.1 geändert. Ich habe gespeichert (und synchronisiert, wie von Studio aufgefordert) - schien in Ordnung zu kompilieren.
Bryan
4
Wie kann ich die Projektstrukturseite auf dem MAC aufrufen?
Rosu Alin
4
@Sourav Auch nach diesen Änderungen wurde der Fehler nicht behoben. Trotzdem habe ich diese Fehler in der v23/values-23.xmlDatei. Ich habe die Werte auf der Projektstrukturseite geändert und die App neu erstellt. Aber immer noch vor dem Problem :(
Prabs
Auf dem Mac ist die Verknüpfung ⌘ +; . Alternativ können Sie zu Datei> Projektstruktur gehen.
Tomanow
115

Wenn Sie Ihr Android Studio aktualisieren, wird standardmäßig die API-Version 23 verwendet. Dies ist der Hauptgrund für das Auftreten. Damit,

Überprüfen Sie zunächst Ihre AppCompat-Version in build.gradle (Modul: App).

Geben Sie hier die Bildbeschreibung ein

Wenn nach dem Wechsel zu 23 ein Fehler auftritt, laden Sie ihn einfach herunter

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

vom SDK Manager. Wenn bereits heruntergeladen, dann:

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

Klicken Sie auf die Schaltfläche SDK-Manager und öffnen Sie den Dialog.

Geben Sie hier die Bildbeschreibung ein

Klicken Sie auf SDK Platform und prüfen Sie, ob Android 6.0 heruntergeladen wurde oder nicht.

Wenn nicht, laden Sie das zuerst herunter. Klicken Sie nach Abschluss des Downloads auf Apply.

Geben Sie hier die Bildbeschreibung ein

Jetzt müssen Sie Änderungen an Ihrem Projekt aus der Einstellung übernehmen. Drücken Sie dann Ctrl+ Alt+ Shift+S , um die Einstellung zu öffnen

  1. Klicken Sie auf App aus Liste.
  2. Klicken Sie auf Eigenschaften
  3. Ändern Sie Ihre Compile SDK-Version in API 23
  4. Ändern Sie Ihre Build Tools-Version in 23.0.0

Geben Sie hier die Bildbeschreibung ein

Vergessen Sie nicht, Ihr Projekt neu zu erstellen.

Dann ist Ihr Fehler verschwunden.

Ravikant Paudel
quelle
1
Ich habe Ihre Art der Definition der Lösung verstanden, aber versuchen Sie, Ihren Beitrag mit vollständiger Beschreibung zu beschreiben
Naveed Ahmad
1
@NaveedAhmad Ok, ich werde meinen Beitrag bearbeiten. Danke für Ihren Vorschlag .
Ravikant Paudel
1
Ich habe einen Beitrag zum obigen Problem hinzugefügt. Stackoverflow.com/a/32370099/2915785
Naveed Ahmad
1
Hey, bitte füge die gleiche Appcompat-Version hinzu, sie hat mein Problem gelöst
vuhung3990
2
In solchen Fällen helfen Screenshots für solche Dummies wie ich.
ern0
70

Wenn Sie versucht haben, das Ziel auf eine frühere Version von GooglePlayServices oder AppCompatv7 zu ändern, dies jedoch nicht funktioniert, überprüfen Sie, ob eine Abhängigkeit von Projektbibliotheken besteht. Dieses Projekt zielt auf die neueste Version einer dieser Bibliotheken ab. Es ist mir mit dem Projekt Google Maps Utils Library passiert:

ersetzen:

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

zu

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

Anschließend können Sie die vollständige Targeting-API 22 fortsetzen

Wenn es immer noch nicht kompiliert wird, ist es manchmal nützlich, die compileSdkVersion-API auf 23 und die targetSdkVersion auf 22 zu setzen.

Pelanes
quelle
35

Ich stimme der vorherigen Antwort zu. Ihre kompilierte SDK-Version muss mit der Support-Bibliothek übereinstimmen. Hier ist was ich getan habe.

  1. Sie können zum SDK-Manager gehen und unter SDK-Plattform Android 5.X mit API-Level 23 installieren.
  2. Ändern Sie unter Projektstruktur die Kompilierungs-SDK-Version in API 23 und die Build Tools-Version in 23.0.0

Dann sollte es ohne Probleme bauen.

Glücklich
quelle
22

Sie müssen compileSdkVersion auf 23 setzen.

Da API 23 Android entfernt die veralteten Apache Http - Pakete, also , wenn Sie sie für Serveranfragen verwenden, werden Sie useLibrary hinzufügen müssen , 'org.apache.http.legacy'um build.gradlewie in diesem Link angegeben:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    ...

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

Dieses Problem tritt auf, da die Kompilierungs-SDK-Version jetzt mit der Hauptversion der Android Support-Bibliothek übereinstimmen muss.

In meinem Fall habe ich die Android Support LibraryVersion 23, also musste Android SDK version 23ich gegen die kompilieren , und ich musste dies in meiner build.gradleDatei ändern :

Geben Sie hier die Bildbeschreibung ein

Nun, einige von Ihnen müssen das SDK installieren. Android 6.0 (API 23)

Geben Sie hier die Bildbeschreibung ein

und vergessen Sie nicht, das Projekt mit Gradle-Dateien zu synchronisieren

Jorgesys
quelle
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
quelle
9

Ich fand die Lösung, Problem begann, als ich sdk aktualisierte, danach verwendete ich verschiedene buildToolsVersion ('22 .0.1 ') und ich verwendete verschiedene Unterstützungsbibliotheken wie compile' com.android.support:appcompat-v7:23.0.0 ' , zeigt dich im Bild unten

Geben Sie hier die Bildbeschreibung ein

Dies warf das Problem " android.widget.Material ..." auf. Dann verwendete ich dieselbe Version für die Unterstützungsbibliothek wie die Kompilierung 'com.android.support:appcompat-v7:22.0.1' und deren FERTIG. (Zeigt dich im folgenden Screenshot)

Geben Sie hier die Bildbeschreibung ein

Naveed Ahmad
quelle
9

Sie sollten Ihr Projekt mit der neuesten Version kompilieren, also aktualisieren und installieren Sie es von Ihrem SDK. Synchronisieren Sie Ihr Projekt mit sync project with Gradle fileButton.
Sie können auch mit der vorhandenen Version fortfahren, überprüfen Sie jedoch, ob sie ordnungsgemäß installiert ist. Zeigen Sie der API 22 an, dass sie ordnungsgemäß installiert ist.Geben Sie hier die Bildbeschreibung ein

Und synchronisieren Sie Ihr Projekt bei Bedarf.

Geben Sie hier die Bildbeschreibung ein

es kann helfen.

Inzimam Tariq IT
quelle
8

Wie von Tanis.7x hervorgehoben, stimmt die Version der Unterstützungsbibliothek (23) nicht mit der targetSdkVersion (22) überein.

Sie können dies wie folgt beheben:

build.gradeÄndern Sie in der Datei Ihres App-Moduls die folgende Codezeile

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

Zu

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

Hierbei wird die neueste Version der Appcompat-Version verwendet, die mit SdkVersion 22 kompatibel ist.

RWIL
quelle
7

Ihre kompilierte SDK-Version muss mit der Hauptversion der Support-Bibliothek übereinstimmen. Dies ist die Lösung für Ihr Problem. Sie können es einfach in Ihren Gradle-Skripten in der build.gradleDatei überprüfen . Fx: Wenn Sie compileSdkVersion23 Jahre alt sind, muss Ihre Kompilierungsbibliothek bei 23 Uhr beginnen.

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

Und überprüfen Sie immer, ob Ihr Android Studoi die unterstützte API-Ebene hat. Sie können dies in Ihrem Android SDK folgendermaßen überprüfen: Geben Sie hier die Bildbeschreibung ein

Oskar
quelle
6

In meinem Fall war es eine höhere Version von Google-Play-Diensten. Ich habe sie auf 7.0.0 (nicht 8.x) gesetzt und alles war in Ordnung.

Alecs
quelle
5

Ich wollte ein Downgrade von API 23 auf 22 durchführen und habe diesen Fehler erhalten. Ich musste alle build.gradle Dateien in einem Projekt ändern, um zu kompilieren.

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
quelle
4

Dies hat mir geholfen: Hinzufügen einer bestimmten Android-Plattform

Was getan werden soll , ist die folgende ... In meinem Fall war es cordovaaber das gleiche ist relevant für ionic, phonegapund andere Frameworks wie diese:

  1. Listen Sie alle für Ihr Projekt installierten Plattformen auf : cordova platform list. Sie werden so etwas sehen:

Geben Sie hier die Bildbeschreibung ein

  1. Entfernen Sie die Android-Plattform : cordova platform remove android.

  2. Fügen Sie dann die spezifische Android-Plattform hinzu : cordova platform add [email protected].

Viel Glück! :) :)

Lentyai
quelle
3

Ich habe die gleichen Probleme. Ich habe mein Problem gelöst, indem ich gradle.build für jedes Submodul auf die neueste Compilerversion aktualisiert habe.

Sonida
quelle
2

Alles ist großartig, aber keiner von Ihnen hat erklärt, wo die SDK-Build-Tools heruntergeladen werden können

Alles ist großartig, aber keiner von Ihnen hat erklärt, wo die SDK-Build-Tools heruntergeladen werden können

Stav Bodik
quelle
1

Eine andere Lösung: Navigieren Sie zu

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

Öffnen Sie die .aarDatei mit 7-zip oder winrar, entfernen Sie im values-23Ordner res den Ordner und speichern Sie die Änderungen.

Ali Zarei
quelle
1

auf Modul: 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'
}

Projekt: NameAppXXXX (Gradle)

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

    }
}

allprojects {
    repositories {
        jcenter()
    }
}

und bearbeiten Sie Ihre Aktivität von AppCompatActivity, um beispielsweise Aktivität:

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
quelle
1

SDK Manager

Stellen Sie sicher, dass alle diese auf dem neuesten Stand sind.

Ganesh Kanna
quelle
1

Aktualisieren Sie Android Studio.

Ich hatte dieses Problem mit Android Studio 1.3.1 und keine der anderen Antworten funktionierte für mich, aber nach dem Update auf 1.5.1 gab es keine Probleme.

Matthew Read
quelle
1

Wenn Sie Phonegap (plattformübergreifend) verwenden und oben dasselbe Problem haben, entfernen Sie einfach die Android-Plattform mit dem folgenden Befehl.

Phonegap Plattform Android entfernen

Und füge es noch einmal hinzu.

Phonegap-Plattform hinzufügen Android

Dann Problem für mich gelöst.

Edukondalu Thaviti
quelle
0

Wie bereits erwähnt, compile sdk versionmüssen Sie mit Ihrer support library'sHauptversion übereinstimmen . Dies ist jedoch auch relevant, subprojectsfalls Sie welche haben.

In diesem Fall können Sie Ihre subprojectsSDK-Kompilierungsversionen mit dem folgenden Skript festlegen:

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

Fügen Sie dieses Skript in Ihre Stammdatei ein build.gradle.

TheBaj
quelle
-1

Wenn Sie auch nach dem Herunterladen des neuesten SDK und Android Studio Fehler erhalten, habe ich Folgendes getan:

  1. Laden Sie das neueste SDK herunter
  2. Datei öffnen-Projektstruktur ( Ctrl+ Alt+ Shift+ S)
  3. Wählen Sie in Modulen App aus
  4. Auf der Registerkarte Eigenschaften: Ändern Sie die SDK-Kompilierungsversion in API 23 Android 6.0 Marshmallow (aktuell).

Ich hoffe, es hilft jemandem, damit er nicht so leidet wie ich in diesen paar Tagen.

xsushil
quelle