Galat mengambil induk untuk item: Tidak ada sumber daya yang cocok dengan nama yang diberikan setelah memutakhirkan ke AppCompat v23

780

Saya selalu memprogram Android dengan Eclipse dan memutuskan untuk mulai bermigrasi ke Android Studio . Saya memutuskan untuk menggunakan SDK yang sama dengan yang saya miliki untuk Eclipse, lalu:

  • Memulai proyek baru
  • Tetapkan minimum SDK 4.0 (API Level 14)
  • Pilih opsi Aktivitas Kosong
  • Nama Default yang digunakan untuk Nama Kegiatan dan Nama Tata Letak
  • Tekan Selesai

Setelah beberapa detik, Gradle menyelesaikan build, dan itu membuat saya dua kesalahan dengan pesan-pesan berikut ini dalam file Teste4 \ app \ build \ intermediate / exploded-aar \ com.android.support \ appcompat-v7 \ 23.0.0 \ res \ values -v23 \ values-v23.xml:

Kesalahan: (2) Kesalahan saat mengambil induk untuk item: Tidak ada sumber daya yang cocok dengan nama yang diberikan 'android: TextAppearance.Material.Widget.Button.Inverse'.

Kesalahan: (2) Kesalahan saat mengambil induk untuk item: Tidak ada sumber daya yang cocok dengan nama yang diberikan 'android: Widget.Material.Button.Colored'.

Di bawah File -> Struktur Proyek -> Modul: aplikasi (kolom kiri) -> tab Properties , saya sudah menyiapkan versi berikut:

  • "Compile Sdk Version": Android 5.1 (API Level 22)
  • "Versi Alat Bangun": 23.0.2

Apa yang harus saya lakukan untuk memperbaikinya?

Saya sudah mencoba apa yang disarankan dalam pertanyaan Stack Overflow appcompat-v7: 21.0.0 ': Tidak ada sumber daya yang cocok dengan nama yang diberikan: attr' android: actionModeShareDrawable ' , tetapi tidak berhasil.

Vini.g.fer
sumber

Jawaban:

1147

Versi kompilasi SDK Anda harus cocok dengan versi utama perpustakaan dukungan.

Karena Anda menggunakan versi 23 dari perpustakaan dukungan, Anda perlu mengompilasi dengan versi 23 dari Android SDK.

Atau Anda dapat melanjutkan mengompilasi melawan Android SDK versi 22 dengan beralih ke perpustakaan dukungan terbaru v22.

Bryan Herbst
sumber
10
Anda dapat mengubahnya secara manual di build.gradle, atau Anda dapat menggunakan GUI dengan membuka properti proyek dan membuka tab "dependensi".
Bryan Herbst
11
Pertanyaan dan jawaban ini tidak ada hubungannya dengan versi aplikasi apa yang akan Anda jalankan. Penargetan aplikasi 22 dapat berjalan dengan baik di perangkat yang menjalankan 23. Masalah yang dijelaskan di sini adalah bahwa perpustakaan dukungan versi 23 mengharuskan Anda menargetkan 23, karena perpustakaan dukungan merujuk beberapa API dalam 23 SDK.
Bryan Herbst
42
Bagi mereka yang seperti saya yang baru menggunakan Android Studio dan bingung tentang cara "menggunakan GUI dengan membuka properti proyek", di Android Studio saya (v1.3.1), saya buka File, Struktur Proyek, lalu di sebelah kiri. -tangan panel di bagian bawah adalah entri di bawah Modul (disebut "aplikasi" dalam kasus saya). Saya klik itu, dan kemudian saya melihat tab Dependensi.
Bryan
119
Saya masih tidak percaya Android Studio merilis barang tanpa harus menguji sesuatu yang sangat dasar !! Setidaknya beri peringatan yang berarti !!
Josh
30
GUI seharusnya memunculkan pesan "Kami mendeteksi Anda tidak menargetkan versi Android API yang tepat. Ingin saya memperbaikinya?". Sebaliknya, saya harus berhenti bekerja di pesawat dan menunggu sampai saya dapat mencari stackoverflow.
Seseorang di suatu tempat
137

Ini terjadi karena setelah pembaruan Android Studio menggunakan API versi 23 secara default.

Berikut ini bekerja untuk saya:

Tekan Ctrl+ Shift+ Alt+ Suntuk sampai ke halaman struktur proyek. Buka tab properti dan ubah 23.0.0 menjadi 22.0.1 (atau setara dengan apa yang Anda gunakan sebelumnya) di area alat bangun dan bangun kembali proyek Anda.

Jika itu tidak berhasil, buka gradle: app lalu

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

Edit v7: 23.0.0 hingga v7: 22.2.1 seperti yang ditunjukkan di atas dan sinkronkan gradle. Ini pasti akan berhasil.

Sourav Nanda
sumber
10
Untuk pemula seperti saya yang bingung tentang cara "pergi ke gradele: app dan kemudian kompilasi fileTree (dir: 'libs', sertakan: ['* .jar']) kompilasi 'com.android.support:appcompat-v7:22.2 .1 '", di Android Studio saya (versi 1.3.1), di panel proyek (yang saya buka dengan mengklik 1: tab Project di paling kiri), saya melihat dua entri di bawah Gradle Scripts yang disebut" build.gradle " . Yang kedua memiliki (Modul: aplikasi) di sebelahnya. Saya mengklik dua kali untuk membukanya. Kemudian di bagian dependensi di bagian bawah, saya mengubah v7: 23.0.0 menjadi v7: 22.2.1. Saya menyimpan (dan disinkronkan seperti yang diminta oleh Studio) - tampaknya mengkompilasi ok.
Bryan
4
Bagaimana saya bisa masuk ke halaman struktur proyek di MAC?
rosu alin
4
@Sourav Bahkan Setelah melakukan perubahan ini kesalahan tidak terpecahkan. Masih saya memiliki kesalahan dalam v23/values-23.xmlfile ini. Saya telah mengubah nilai di halaman struktur proyek, membangun kembali aplikasi. Tapi masih menghadapi masalah :(
Prabs
Di mac pintasannya adalah ⌘ +; . Atau Anda dapat pergi ke File> Struktur Proyek.
Tomanow
115

Saat Anda memperbarui Android Studio Anda, ia menggunakan API versi 23 secara default, yang merupakan alasan utama kemunculannya. Begitu,

Pada awalnya, periksa versi AppCompat Anda di build.gradle (Module: app) Yaitu,

Masukkan deskripsi gambar di sini

Jika setelah berubah menjadi 23 terjadi kesalahan maka cukup unduh

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

dari SDK Manager. Jika sudah diunduh maka:

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

Klik Tombol SDK Manager dan buka dialog.

Masukkan deskripsi gambar di sini

Klik SDK Platform dan periksa apakah Android 6.0 diunduh atau tidak.

jika tidak, unduh itu dulu. Setelah menyelesaikan unduhan, klik Apply.

Masukkan deskripsi gambar di sini

Sekarang Anda perlu menerapkan perubahan pada proyek Anda dari pengaturan. Kemudian tekan Ctrl+ Alt+ Shift+S untuk membuka pengaturan

  1. Klik aplikasi dari daftar.
  2. Klik properti
  3. Ubah Versi Kompilasi SDK Anda ke API 23
  4. Ubah Versi Alat Bangun Anda menjadi 23.0.0

Masukkan deskripsi gambar di sini

Jangan lupa untuk membangun kembali proyek Anda.

Maka kesalahan Anda akan hilang.

Ravikant Paudel
sumber
1
Saya mengerti cara Anda mendefinisikan solusi, tetapi cobalah untuk menggambarkan posting Anda dengan deskripsi lengkap
Naveed Ahmad
1
@NaveedAhmad Ok saya akan mengedit posting saya. Terima kasih atas saran Anda.
Ravikant Paudel
1
Saya menambahkan posting terkait dengan masalah di atas stackoverflow.com/a/32370099/2915785
Naveed Ahmad
1
hei, tolong tambahkan versi appcompat yang sama, itu memecahkan masalah saya
vuhung3990
2
Dalam kasus seperti itu tangkapan layar membantu boneka seperti saya.
ern0
70

Jika Anda telah mencoba mengubah target ke versi GooglePlayServices atau AppCompatv7 sebelumnya dan tidak berhasil, periksa apakah Anda memiliki ketergantungan pustaka proyek, proyek ini akan menargetkan versi terbaru dari pustaka ini. Itu terjadi pada saya dengan proyek Perpustakaan Google Maps Utils:

menggantikan:

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

untuk

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

Kemudian Anda dapat melanjutkan penargetan penuh API 22

Jika masih tidak dapat dikompilasi, kadang-kadang berguna untuk mengatur API compileSdkVersion ke 23 dan targetSdkVersion ke 22.

Pelanes
sumber
35

Saya setuju dengan jawaban sebelumnya. Versi kompilasi SDK Anda harus cocok dengan perpustakaan dukungan. Inilah yang saya lakukan.

  1. Anda dapat pergi ke SDK Manager dan di bawah SDK Platform, instal Android 5.X dengan API level 23.
  2. Di bawah Struktur Proyek, ubah kompilasi Versi SDK ke API 23, dan Versi Alat Bangun menjadi 23.0.0

Maka itu harus dibangun tanpa masalah.

Stucky
sumber
22

Anda perlu mengatur compileSdkVersion ke 23.

Sejak API 23 Android dihapus paket Apache Http yang usang, jadi jika Anda menggunakannya untuk permintaan server, Anda harus menambahkan useLibrary 'org.apache.http.legacy'untuk build.gradlesebagaimana tercantum dalam link ini:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    ...

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

Masalah ini dimunculkan karena sekarang versi kompilasi SDK harus cocok dengan versi utama pustaka Dukungan Android.

Dalam kasus saya, saya memiliki Android Support Libraryversi 23, jadi saya harus mengkompilasi terhadap Android SDK version 23, dan saya harus mengubah ini di build.gradlefile saya :

masukkan deskripsi gambar di sini

Nah beberapa dari Anda perlu menginstal SDK, Android 6.0 (API 23)

masukkan deskripsi gambar di sini

dan jangan lupa untuk menyinkronkan proyek dengan file gradle

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

Saya menemukan solusinya, Masalah dimulai ketika saya memperbarui SDK, setelah itu saya menggunakan buildToolsVersion yang berbeda ('22 .0.1 ') dan saya menggunakan pustaka dukungan yang berbeda seperti kompilasi' com.android.support:appcompat-v7:23.0.0 ' , menunjukkan Anda pada gambar di bawah ini

masukkan deskripsi gambar di sini

Ini meningkatkan masalah " android.widget.Material ..." Kemudian saya menggunakan versi yang sama untuk pustaka dukungan seperti kompilasi 'com.android.support:appcompat-v7:22.0.1' dan DONE-nya. (Menampilkan Anda dalam tangkapan layar di bawah ini)

masukkan deskripsi gambar di sini

Naveed Ahmad
sumber
9

Anda harus mengkompilasi proyek Anda dengan versi terbaru jadi perbarui & instal dari SDK Anda. Sinkronkan proyek Anda dengan sync project with Gradle fileTombol.
Anda juga dapat melanjutkan dengan versi yang ada tetapi periksa apakah terpasang dengan benar di bawah gambar yang menunjukkan API 22 yang diinstal dengan benar.masukkan deskripsi gambar di sini

Dan sinkronkan proyek Anda jika perlu.

masukkan deskripsi gambar di sini

mungkin membantu.

Inzimam Tariq IT
sumber
8

Seperti yang ditunjukkan oleh Tanis.7x, versi perpustakaan dukungan (23) tidak cocok dengan targetSdkVersion (22)

Anda dapat memperbaikinya dengan melakukan hal berikut:

Dalam build.gradefile modul aplikasi Anda, ubah baris kode berikut

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

Untuk

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

Ini akan menggunakan versi terbaru dari versi appcompat yang kompatibel dengan SdkVersion 22.

RWIL
sumber
7

Versi kompilasi SDK Anda harus cocok dengan versi utama pustaka dukungan. Ini adalah solusi untuk masalah Anda. Anda dapat memeriksanya dengan mudah di Script Gradle Anda dalam build.gradlefile. Fx: jika Anda compileSdkVersionberusia 23 tahun, kompilasi perpustakaan Anda harus dimulai pada 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'
}

Dan selalu periksa apakah Android Studoi Anda memiliki Level API yang didukung. Anda dapat memeriksanya di Android SDK Anda, seperti ini: masukkan deskripsi gambar di sini

Oskar
sumber
6

Dalam kasus saya, ini adalah versi layanan Google Play yang lebih tinggi. Saya mengaturnya ke 7.0.0 (bukan 8.x) dan semuanya baik-baik saja.

Alecs
sumber
5

Saya ingin menurunkan versi dari API 23 ke 22 dan mendapatkan kesalahan ini. Saya harus mengubah semua build.gradle file dalam proyek untuk dikompilasi.

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

Inilah yang membantu saya: Menambahkan platform android tertentu

Apa yang harus dilakukan adalah sebagai berikut ... Dalam kasus saya itu cordovatetapi yang sama relevan untuk ionic, phonegapdan kerangka kerja lain seperti ini:

  1. daftar semua platform diinstal untuk proyek Anda: cordova platform list. Anda akan melihat sesuatu seperti ini:

masukkan deskripsi gambar di sini

  1. menghapus platform android: cordova platform remove android.

  2. kemudian menambahkan platform android spesifik: cordova platform add [email protected].

Semoga berhasil! :)

Lentyai
sumber
3

Saya punya masalah yang sama. Saya memecahkan masalah saya dengan memperbarui gradle.build untuk setiap sub-modul ke versi kompiler terbaru.

sonida
sumber
2

Semuanya bagus tetapi tidak ada yang menjelaskan tempat untuk mengunduh alat bantu pembangunan SDK

Semuanya greate tetapi tidak satupun dari Anda menjelaskan di mana untuk mengunduh alat membangun SDK

Stav Bodik
sumber
1

Solusi lain: navigasikan ke

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

buka .aarfile dengan 7-zip atau winrar, di folder res folder hapus values-23dan simpan perubahan.

Ali Zarei
sumber
1

pada modul: aplikasi (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'
}

proyek: nameAppXXXX (Gradle)

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

    }
}

allprojects {
    repositories {
        jcenter()
    }
}

dan edit aktivitas AppCompatActivity Anda sebagai contoh Aktivitas:

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

Manajer SDK

Pastikan semua ini terbaru.

Ganesh Kanna
sumber
1

Tingkatkan Android Studio.

Saya mengalami masalah ini dengan Android Studio 1.3.1 dan tidak ada jawaban lain yang bekerja untuk saya, tetapi setelah memperbarui ke 1.5.1 tidak ada masalah.

Matius Baca
sumber
1

Jika Anda menggunakan phonegap (cross-platform) dan mendapatkan masalah yang sama di atas, hapus saja platform android menggunakan perintah di bawah ini.

platform phonegap menghapus android

Dan tambahkan lagi.

platform phonegap menambahkan android

Kemudian masalah terpecahkan bagi saya.

Edukondalu Thaviti
sumber
0

Seperti yang telah disebutkan orang lain, Anda compile sdk versionharus cocok dengan support library'sversi utama Anda . Namun ini juga relevan subprojectsjika Anda memilikinya.

Jika Anda melakukannya, Anda dapat mengatur subprojectskompilasi versi SDK Anda dengan skrip berikut:

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

Tambahkan skrip ini di build.gradlefile root Anda .

TheBaj
sumber
-1

Jika Anda mendapatkan kesalahan bahkan setelah mengunduh SDK dan Android Studio terbaru, inilah yang saya lakukan:

  1. Unduh SDK terbaru
  2. Buka struktur file-Proyek ( Ctrl+ Alt+ Shift+ S)
  3. Dalam modul, pilih aplikasi
  4. Di tab properti: Ubah kompilasi versi SDK ke API 23 Android 6.0 marshmallow (terbaru)

Saya harap ini membantu seseorang sehingga dia tidak akan menderita seperti yang saya alami selama beberapa hari ini.

xsushil
sumber