Öğe için üst öğe alınırken hata oluştu: AppCompat v23'e yükselttikten sonra verilen adla eşleşen kaynak bulunamadı


780

Android'i her zaman Eclipse ile programladım ve Android Studio'ya geçmeye karar verdim . Eclipse için zaten aynı SDK'yı kullanmaya karar verdim, sonra:

  • Yeni bir proje başlattı
  • Minimum SDK 4.0'ı (API Seviye 14) ayarlayın
  • Boş Etkinlik seçeneğini belirleyin
  • Etkinlik Adı ve Düzen Adı için varsayılan adlar kullanıldı
  • Hit Bitti

Birkaç saniye sonra Gradle derlemeyi bitirdi ve bana Teste4 \ app \ build \ ara / dosya patladı-aar \ com.android.support \ appcompat-v7 \ 23.0.0 \ res \ değerlerinde aşağıdaki mesajlarla iki hata veriyor -v23 \ değerler v23.xml:

Hata: (2) Öğe için üst öğe alınırken hata oluştu: 'android: TextAppearance.Material.Widget.Button.Inverse' adıyla eşleşen kaynak bulunamadı.

Hata: (2) Öğe için üst öğe alınırken hata oluştu: 'android: Widget.Material.Button.Colored' adıyla eşleşen kaynak bulunamadı.

Altında Dosya -> Proje Yapısı -> Modüller: Uygulama (sol sütun) -> Özellikler sekmesi , aşağıdaki versiyonları kurdunuz:

  • "Derleme Sdk Sürümü": Android 5.1 (API Seviye 22)
  • "Derleme Araçları Sürümü": 23.0.2

Bunu düzeltmek için ne yapmalıyım?

Yığın Taşması sorusunda önerilenleri zaten denedim appcompat-v7: 21.0.0 ': Verilen adla eşleşen kaynak bulunamadı: attr' android: actionModeShareDrawable ' , ancak işe yaramadı.

Yanıtlar:


1147

Derleme SDK sürümünüz destek kitaplığının ana sürümüyle eşleşmelidir.

Destek kitaplığının 23. sürümünü kullandığınız için, Android SDK'nın 23. sürümünü karşılamanız gerekir.

Alternatif olarak, en son destek kitaplığı v22'ye geçerek Android SDK'nın 22. sürümüne karşı derlemeye devam edebilirsiniz.


10
Bunu elinizle manuel olarak değiştirebilir build.gradleveya proje özelliklerini açıp "bağımlılıklar" sekmesine giderek GUI'yi kullanabilirsiniz.
Bryan Herbst

11
Bu soru ve yanıtın, uygulamanızın hangi sürümde çalışacağıyla ilgisi yoktur. Bir uygulama hedefleme 22, 23 çalıştıran bir cihazda iyi çalışabilir. Burada açıklanan sorun, destek kitaplığı sürüm 23'ün, 23 SDK'daki bazı API'lara başvurması nedeniyle 23'ü hedeflemenizi gerektirmesidir.
Bryan Herbst

42
Benim gibi Android Studio'da yeni olan ve "proje özelliklerini açarak GUI'yi kullanma" konusunda kafası karışmış olanlar için, Android Studio'mda (v1.3.1), Dosya, Proje Yapısı, ardından solda - alttaki panel Modüller (benim durumumda "uygulama" olarak adlandırılır) altında bir giriştir. Buna tıklıyorum ve sonra bir Bağımlılıklar sekmesi görüyorum.
Bryan

119
Hala Android Studio'nun çok basit bir şeyi test etmeden bir şeyler yayınladığına inanamıyorum! En azından bazı anlamlı uyarılar koy !!
Josh

30
GUI, "Doğru Android API sürümünü hedeflemediğinizi tespit ettik. Bunu düzeltmemi ister misiniz?" Şeklinde bir mesaj açmış olmalıdır. Bunun yerine, uçakta çalışmayı bırakmalı ve yığın akışını arayabilene kadar beklemeliyim.
Birisi

137

Bunun nedeni, güncellemelerin ardından Android Studio'nun varsayılan olarak API sürüm 23'ü kullanmasıdır .

Aşağıdakiler benim için çalıştı:

Proje yapısı sayfasına gitmek için Ctrl+ Shift+ Alt+ tuşlarına basın S. Özellikler sekmesine gidin ve değiştirmek 23.0.0 için 22.0.1 aracı inşa alanında (daha önce kullandığınız ne veya eşdeğeri) ve projeyi yeniden oluşturun.

Bu işe yaramazsa, gradle: app ve ardından

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

Düzenleme v7: 23.0.0 için v7: 22.2.1 üstünde ve senkronizasyon gradle gösterildiği gibi. Bu kesinlikle işe yarayacak.


10
Benim gibi "gradele: app'a gitme ve daha sonra fileTree (dir: 'libs',": "'.jar']) derleme 'com.android.support:appcompat-v7:22.2 .1 '", Android Studio'mda (sürüm 1.3.1), proje bölmesinde (en soldaki 1: Proje sekmesini tıklatarak açtığım), Gradle Scripts altında" build.gradle "adlı iki girdi görüyorum . İkincisinin yanında (Modül: uygulama) vardır. Açmak için çift tıkladım. Sonra alttaki bağımlılıklar bölümünde v7: 23.0.0'ı v7: 22.2.1 olarak değiştirdim. Kaydettik (ve Studio tarafından istendiği gibi senkronize edildi) - tamam derlenmiş gibi görünüyordu.
Bryan

4
MAC üzerinde proje yapısı sayfasına nasıl girebilirim?
rosu alin

4
@Sourav Bile Bu değişiklikleri yaptıktan sonra hata çözülmedi. Hala v23/values-23.xmldosyada bu hatalar var . Proje yapısı sayfasındaki değerleri değiştirdim, uygulamayı yeniden oluştur. Ama hala sorunla karşı karşıya :(
Prabs

Mac'te kısayol ⌘ +; . Alternatif olarak Dosya> Proje Yapısı'na gidebilirsiniz.
Tomanow

115

Android Studio'nuzu güncellediğinizde, varsayılan olarak API sürüm 23'ü kullanır. Yani,

İlk olarak, build.gradle'daki (Modül: uygulama) AppCompat sürümünüzü kontrol edin.

Resim açıklamasını buraya girin

23'e geçtikten sonra bir hata oluşursa, sadece indirin

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

SDK Yöneticisi'nden. Zaten indirildiyse:

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

SDK Yöneticisi Düğmesine tıklayın ve iletişim kutusunu açın.

Resim açıklamasını buraya girin

SDK Platformu'nu tıklayın ve Android 6.0'ın indirilip indirilmediğini kontrol edin.

değilse, önce indirin. İndirme işlemini tamamladıktan sonra öğesini tıklayın Apply.

Resim açıklamasını buraya girin

Şimdi ayarınızdan projenize değişiklikler uygulamanız gerekiyor. Sonra + + + tuşlarına basınCtrlAltShiftS ayarı açmak için

  1. Listeden uygulamayı tıklayın.
  2. Tıklama özellikleri
  3. Senin değiştirin Derleme SDK Sürüm API 23
  4. Senin değiştirin Yapı Araçları Sürüm 23.0.0 için

Resim açıklamasını buraya girin

Projenizi yeniden inşa etmeyi unutmayın.

O zaman hatanız gider.


1
Çözümü tanımlama yolunuzu anladım, ancak yayınınızı tam bir açıklama ile açıklamaya çalışın
Naveed Ahmad

1
@NaveedAhmad Tamam yazımı düzenleyeceğim. Önerin için teşekkürler .
Ravikant Paudel

1
Yukarıdaki sayı ile ilgili bir yazı ekledim stackoverflow.com/a/32370099/2915785
Naveed Ahmad

1
hey, lütfen aynı appcompat sürümünü ekleyin, sorunumu çözdü
vuhung3990 4:15

2
Bu gibi durumlarda ekran görüntüleri benim gibi mankenlere yardımcı olur.
ern0

70

Hedefi önceki bir GooglePlayServices veya AppCompatv7 sürümüyle değiştirmeyi denediyseniz ve çalışmazsa, proje kitaplığı bağımlılığınız olup olmadığını kontrol edin, bu proje bu kitaplıklardan herhangi birinin en son sürümünü hedefleyecektir. Google Maps Utils Library projesinde başıma geldi:

değiştirin:

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

için

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

Ardından, tam hedefleme API 22'ye devam edebilirsiniz

Hala derleme yapmıyorsa, compileSdkVersion API'sini 23 ve targetSdkVersion'ı 22 olarak ayarlamak yararlı olabilir.


35

Önceki cevaba katılıyorum. Derleme SDK sürümünüzün destek kitaplığıyla eşleşmesi gerekir. İşte yaptığım şey.

  1. SDK Yöneticisi'ne gidebilir ve SDK Platformu altında, Android 5.X'i API seviyesi 23 ile yükleyebilirsiniz.
  2. Proje Yapısı altında, SDK Sürümünü API 23 olarak ve Derleme Araçları Sürümünü 23.0.0 olarak değiştirin

O zaman sorunsuz inşa etmelidir.


22

CompileSdkVersion öğesini 23 olarak ayarlamanız gerekir.

API 23 yana Android sunucu istekleri için bunları kullanmak eğer öyleyse, useLibrary eklemeniz gerekir, kaldırılmış Apache HTTP paketleri kaldırıldı 'org.apache.http.legacy'için build.gradlebu bağlantıyı belirtildiği gibidir:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    ...

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

15

Derleme SDK sürümünün Android Destek kitaplığının ana sürümüyle eşleşmesi gerektiğinden bu sorun ortaya çıkar.

Benim durumumda Android Support Librarysürüm 23 var, bu yüzden karşı derlemek Android SDK version 23zorunda kaldı ve benim build.gradledosyasında bu değiştirmek zorunda kaldı :

resim açıklamasını buraya girin

Bazılarınızın SDK'yı yüklemesi gerekecek, Android 6.0 (API 23)

resim açıklamasını buraya girin

ve projeyi not dosyaları ile senkronize etmeyi unutmayın


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

Çözümü buldum, sdk'yi güncellediğimde sorun başladı, bundan sonra farklı buildToolsVersion ('22 .0.1 ') kullandım ve ' com.android.support:appcompat-v7:23.0.0 'derlemesi gibi farklı destek kitaplığı kullanıyordum , aşağıdaki resimde size gösteriliyor

resim açıklamasını buraya girin

Bu, " android.widget.Material ..." sorununu gündeme getiriyordu . Daha sonra derleme 'com.android.support:appcompat-v7:22.0.1' ve DONE gibi destek kitaplığı için aynı sürümü kullandım . (Aşağıdaki ekran görüntüsünde gösteriliyor)

resim açıklamasını buraya girin


9

Projenizi en son sürümle derlemelisiniz, böylece SDK'nızdan güncelleyin ve yükleyin. Projenizi sync project with Gradle fileButton ile senkronize edin .
Ayrıca varolan sürüme devam edebilirsiniz, ancak düzgün bir şekilde yüklendiğini kontrol edin.resim açıklamasını buraya girin

Ve gerekirse projenizi senkronize edin.

resim açıklamasını buraya girin

yardımcı olabilir.


8

Tanis.7x tarafından işaret edildiği gibi, destek kitaplığı sürümü (23) targetSdkVersion (22) ile eşleşmiyor

Aşağıdakileri yaparak bunu düzeltebilirsiniz:

In build.gradeuygulama modülünün dosyanın, aşağıdaki kod satırını değiştirmek

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

için

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

Bu, SdkVersion 22 ile uyumlu appcompat sürümünün en son sürümünü kullanacaktır.


7

Derleme SDK sürümünüz, destek kitaplığı ana sürümüyle eşleşmelidir. Sorununuzun çözümü budur. Gradle Scripts build.gradledosyasında kolayca kontrol edebilirsiniz . Fx: compileSdkVersion23 yaşındaysanız derleme kitaplığınız 23'te başlamalıdır.

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

Ve her zaman Android Studoi'nizin desteklenen API Seviyesine sahip olup olmadığını kontrol edin. Android SDK'nızda şu şekilde kontrol edebilirsiniz: resim açıklamasını buraya girin


6

Benim durumumda, Google-play-services'ın daha yüksek bir versiyonuydu. Onları 7.0.0 (8.x değil) olarak ayarladım ve her şey yolunda idi.


5

API 23'ten 22'ye düşürmek istedim ve bu hatayı aldım. Derlemek için bir projedeki tüm build.gradle dosyaları değiştirmek zorunda kaldım .

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

Bu bana yardımcı oldu: Belirli bir android platformu ekleme

Yapılması gereken Benim durumumda bu oldu ... şudur cordovaancak aynı ilgilendirmektedir ionic, phonegapve bunlar gibi diğer çerçeveler:

  1. Projeniz için yüklü tüm platformlar listelemek: cordova platform list. Bunun gibi bir şey göreceksiniz:

resim açıklamasını buraya girin

  1. android platform kaldırmak cordova platform remove android.

  2. Daha sonra belirli android platformunu ekleyin: cordova platform add android@5.0.0.

İyi şanslar! :)


3

Aynı sorunları yaşadım. Her alt modül için gradle.build'i en son derleyici sürümüne güncelleyerek sorunumu çözdüm.


2

Her şey harika, ancak hiçbiriniz SDK oluşturma araçlarını nereden indireceğinizi açıklamadı

Her şey harika ama hiçbiriniz SDK oluşturma araçlarını nereden indireceğinizi açıklamadı


1

Başka bir çözüm: şuraya gidin:

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

.aar7-zip veya winrar ile dosyayı açın , res klasöründe klasörü kaldırın values-23ve değişiklikleri kaydedin.


1

modülde: uygulama (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'
}

proje: nameAppXXXX (Gradle)

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

    }
}

allprojects {
    repositories {
        jcenter()
    }
}

ve AppCompatActivity etkinliğinizi örneğin Etkinlik olarak düzenleyin:

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

Android Studio'yu yükseltin.

Android Studio 1.3.1 ile bu sorunu yaşadım ve diğer cevapların hiçbiri benim için işe yaramadı, ancak 1.5.1'e güncelledikten sonra sorun olmadı.


1

Phonegap (çapraz platform) kullanıyorsanız ve yukarıda aynı sorunu yaşıyorsanız, aşağıdaki komutu kullanarak android platformunu kaldırın.

phonegap platformu android kaldır

Ve tekrar ekle.

phonegap platformu android ekle

Sonra benim için sorun çözüldü.


0

Diğerlerinin de belirttiği gibi compile sdk version, support library'sana sürümünüzle eşleşmelidir . Ancak bu, subprojectseğer varsa , bununla da ilgilidir .

Bunu yaparsanız, subprojectsderleme sdk sürümlerinizi aşağıdaki komut dosyasıyla ayarlayabilirsiniz :

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

Bu komut build.gradledosyasını kök dosyanıza ekleyin .


-1

En yeni SDK ve Android Studio'yu indirdikten sonra bile hata alıyorsanız, işte yaptığım şey:

  1. En yeni SDK'yı indirin
  2. Açık dosya-Proje yapısı ( Ctrl+ Alt+ Shift+ S)
  3. Modüllerde uygulamayı seçin
  4. Özellikler sekmesinde: Derleme SDK sürümünü API 23 Android 6.0 marshmallow olarak değiştirin (en yeni)

Umarım birisine yardımcı olur, böylece bu birkaç gün boyunca yaptığım gibi acı çekmez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.