เกิดข้อผิดพลาดขณะดึงข้อมูลพาเรนต์สำหรับรายการ: ไม่พบทรัพยากรที่ตรงกับชื่อที่กำหนดหลังจากอัปเกรดเป็น AppCompat v23


780

ฉันได้เสมอโปรแกรม Android ที่มีคราสและตัดสินใจที่จะเริ่มต้นการโยกย้ายไปยังAndroid สตูดิโอ ฉันตัดสินใจใช้ SDK เดียวกับที่ฉันมีสำหรับ Eclipse แล้ว:

  • เริ่มโครงการใหม่
  • ตั้งค่า SDK ขั้นต่ำ 4.0 (ระดับ API 14)
  • เลือกตัวเลือกกิจกรรมที่ว่างเปล่า
  • ชื่อเริ่มต้นที่ใช้สำหรับชื่อกิจกรรมและชื่อเลย์เอาต์
  • กดปุ่ม Finish

หลังจากนั้นไม่กี่วินาที Gradle เสร็จสิ้นการสร้างและมันทำให้ฉันสองข้อผิดพลาดกับข้อความต่อไปนี้ในไฟล์ Teste4 \ app \ build \ intermediates / exploded-aar \ com.android.support \ appcompat-v7 \ 23.0.0 \ res \ values -v23 \ ค่า-v23.xml:

ข้อผิดพลาด: (2) ข้อผิดพลาดในการดึงข้อมูลพาเรนต์สำหรับรายการ: ไม่พบทรัพยากรที่ตรงกับชื่อ 'android: TextAppearance.Material.Widget.Button.Inverse'

ข้อผิดพลาด: (2) ข้อผิดพลาดในการดึงข้อมูลพาเรนต์สำหรับรายการ: ไม่พบทรัพยากรที่ตรงกับชื่อที่ระบุ 'android: Widget.Material.Button.Colored'

ภายใต้ไฟล์ -> โครงสร้างโครงการ -> โมดูล: แอพ (คอลัมน์ซ้าย) -> แท็บคุณสมบัติฉันมีการตั้งค่าเวอร์ชันต่อไปนี้:

  • "เวอร์ชั่นรวบรวม Sdk": Android 5.1 (API ระดับ 22)
  • "รุ่นเครื่องมือสร้าง": 23.0.2

ฉันควรทำอย่างไรเพื่อแก้ไขปัญหานี้

ฉันลองสิ่งที่แนะนำในคำถาม Stack Overflow appcompat-v7: 21.0.0 ': ไม่พบทรัพยากรที่ตรงกับชื่อที่กำหนด: attr' android: actionModeShareDrawable 'แต่มันไม่ทำงาน

คำตอบ:


1147

เวอร์ชั่น SDK ของคอมไพล์ของคุณจะต้องตรงกับเวอร์ชันหลักของไลบรารีการสนับสนุน

เนื่องจากคุณใช้ไลบรารีการสนับสนุนเวอร์ชัน 23 คุณต้องรวบรวมกับ Android SDK เวอร์ชัน 23

หรือคุณสามารถคอมไพล์ต่อกับเวอร์ชัน 22 ของ Android SDK ได้โดยเปลี่ยนเป็นไลบรารีการสนับสนุนล่าสุด v22


10
คุณสามารถเปลี่ยนได้ด้วยตนเองในของคุณbuild.gradleหรือคุณสามารถใช้ GUI โดยเปิดคุณสมบัติโครงการและไปที่แท็บ "การอ้างอิง"
ไบรอันเฮิร์สต์

11
คำถามและคำตอบนี้ไม่เกี่ยวข้องกับเวอร์ชันที่แอพของคุณจะทำงาน แอปที่กำหนดเป้าหมาย 22 สามารถทำงานได้ดีบนอุปกรณ์ที่ใช้ 23 ปัญหาที่อธิบายไว้ที่นี่คือไลบรารีการสนับสนุนเวอร์ชัน 23 กำหนดให้คุณกำหนดเป้าหมาย 23 เนื่องจากไลบรารีการสนับสนุนอ้างอิง API บางตัวใน 23 SDK
ไบรอันเฮิร์สต์

42
สำหรับผู้ที่ชอบฉันที่ยังใหม่กับ Android Studio และสับสนเกี่ยวกับวิธี "ใช้ GUI โดยเปิดคุณสมบัติโครงการ" ใน Android Studio (v1.3.1) ของฉันฉันไปที่ไฟล์โครงสร้างโครงการแล้วทางซ้าย บานหน้าต่างมือที่ด้านล่างเป็นรายการภายใต้โมดูล (เรียกว่า "แอพ" ในกรณีของฉัน) ฉันคลิกที่นั้นแล้วฉันจะเห็นแท็บการพึ่งพา
ไบรอัน

119
ฉันยังไม่อยากเชื่อว่า Android Studio จะปล่อยสิ่งต่าง ๆ โดยไม่ต้องทดสอบสิ่งพื้นฐานดังนั้น !! อย่างน้อยก็ใส่คำเตือนที่มีความหมายบางอย่าง !!
จอช

30
GUI ควรมีข้อความโผล่ขึ้นมา "เราตรวจพบว่าคุณไม่ได้กำหนดเป้าหมายเวอร์ชัน Android API ที่ถูกต้องฉันต้องการแก้ไขหรือไม่" แต่ฉันต้องหยุดทำงานบนเครื่องบินและรอจนกว่าฉันจะสามารถค้นหา stackoverflow ได้
คนอยู่ที่ไหนสักแห่ง

137

สิ่งนี้เกิดขึ้นเพราะหลังจากอัปเดต Android Studio ใช้API เวอร์ชัน 23โดยค่าเริ่มต้น

การทำงานต่อไปนี้สำหรับฉัน:

กดCtrl+ Shift+ Alt+ Sเพื่อไปที่หน้าโครงสร้างโครงการ ไปที่แท็บคุณสมบัติและเปลี่ยน23.0.0เป็น22.0.1 (หรือเทียบเท่ากับสิ่งที่คุณใช้ก่อนหน้านี้) ในพื้นที่เครื่องมือสร้างและสร้างโครงการของคุณใหม่

หากไม่ได้ผลให้ไปที่gradle: แอพแล้ว

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

แก้ไขv7: 23.0.0ถึงv7: 22.2.1ตามที่แสดงด้านบนและซิงค์ gradle นี้จะทำงานได้อย่างแน่นอน


10
สำหรับมือใหม่อย่างฉันที่สับสนเกี่ยวกับวิธี "ไปที่ gradele: แอพแล้วคอมไพล์ fileTree (dir: 'libs' รวมถึง: ['* .jar']) คอมไพล์ 'com.android.support:appcompat-v7:22.2 .1 '"ใน Android Studio ของฉัน (รุ่น 1.3.1) ในบานหน้าต่างโครงการ (ที่ฉันเปิดโดยการคลิกที่ 1: แท็บโครงการทางซ้ายมาก) ฉันเห็นสองรายการภายใต้ Gradle Scripts เรียกว่า" build.gradle " . ส่วนที่สองมี (โมดูล: แอป) ถัดจากมัน ฉันคลิกสองครั้งเพื่อเปิด จากนั้นในส่วนการพึ่งพาที่ด้านล่างฉันเปลี่ยน v7: 23.0.0 เป็น v7: 22.2.1 ฉันบันทึก (และซิงค์เมื่อได้รับแจ้งจาก Studio) - ดูเหมือนว่าจะรวบรวมได้
ไบรอัน

4
ฉันจะเข้าสู่หน้าโครงสร้างโครงการบน MAC ได้อย่างไร
rosu alin

4
@Sourav แม้หลังจากทำข้อผิดพลาดการเปลี่ยนแปลงเหล่านี้ไม่ได้รับการแก้ไข ฉันยังคงมีข้อผิดพลาดในv23/values-23.xmlไฟล์ ฉันเปลี่ยนค่าในหน้าโครงสร้างโครงการสร้างแอปใหม่ แต่ยังคงเผชิญกับปัญหา :(
35760 Prabs

บน mac ทางลัดคือ⌘ +; . หรือคุณสามารถไปที่ไฟล์> โครงสร้างโครงการ
Tomanow

115

เมื่อคุณอัปเดต Android Studio จะใช้ API เวอร์ชัน 23 ตามค่าเริ่มต้นซึ่งเป็นสาเหตุหลักของการเกิดขึ้น ดังนั้น,

ตอนแรกให้ตรวจสอบเวอร์ชั่น AppCompat ของคุณใน build.gradle (โมดูล: แอพ) นั่นคือ

ป้อนคำอธิบายภาพที่นี่

หากหลังจากเปลี่ยนเป็น 23 แสดงว่าเกิดข้อผิดพลาดให้ดาวน์โหลด

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

จาก SDK Manager หากดาวน์โหลดแล้ว:

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 และเปิดกล่องโต้ตอบ

ป้อนคำอธิบายภาพที่นี่

คลิกแพลตฟอร์ม SDK และตรวจสอบว่ามีการดาวน์โหลด Android 6.0 หรือไม่

ถ้าไม่เช่นนั้นให้ดาวน์โหลดก่อน Applyหลังจากเสร็จสิ้นการดาวน์โหลดคลิก

ป้อนคำอธิบายภาพที่นี่

ตอนนี้คุณต้องใช้การเปลี่ยนแปลงกับโครงการของคุณจากการตั้งค่า จากนั้นกดCtrl+ Alt+ Shift+Sเพื่อเปิดการตั้งค่า

  1. คลิกแอพจากรายการ
  2. คลิกคุณสมบัติ
  3. เปลี่ยนCompile SDK Versionของคุณเป็น API 23
  4. เปลี่ยนBuild Tools Versionเป็น 23.0.0

ป้อนคำอธิบายภาพที่นี่

อย่าลืมสร้างโครงการของคุณใหม่

จากนั้นข้อผิดพลาดของคุณจะหายไป


1
ฉันเข้าใจวิธีการกำหนดโซลูชันของคุณแล้ว แต่พยายามอธิบายโพสต์ของคุณพร้อมคำอธิบายที่สมบูรณ์
Naveed Ahmad

1
@NaveedAhmad ตกลงฉันจะแก้ไขโพสต์ของฉัน ขอบคุณสำหรับคำแนะนำของคุณ
Ravikant Paudel

1
ฉันได้เพิ่มโพสต์ที่เกี่ยวข้องกับปัญหาstackoverflow.com/a/32370099/2915785
Naveed Ahmad

1
เดี๋ยวก่อนโปรดเพิ่มรุ่นแอปพลิเคชันเดียวกันมันแก้ปัญหาของฉันได้ไหม
vuhung3990

2
ในกรณีเช่นนี้ภาพหน้าจอช่วยสำหรับหุ่นเช่นฉัน
ern0

70

หากคุณพยายามเปลี่ยนเป้าหมายเป็น GooglePlayServices รุ่นก่อนหน้าหรือ AppCompatv7 รุ่นก่อนหน้าและไม่ทำงานให้ตรวจสอบว่าคุณมีการพึ่งพาไลบรารีโครงการหรือไม่โครงการนี้จะกำหนดเป้าหมายเวอร์ชันล่าสุดของไลบรารีเหล่านี้ มันเกิดขึ้นกับฉันด้วยโครงการห้องสมุดของ Google Maps Utils:

แทนที่:

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

ถึง

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

จากนั้นคุณสามารถกำหนดเป้าหมาย API แบบเต็ม 22 ต่อไป

หากยังไม่ได้รวบรวมบางครั้งมีประโยชน์ในการตั้งค่า compileSdkVersion API เป็น 23 และ targetSdkVersion เป็น 22


35

ฉันเห็นด้วยกับคำตอบก่อนหน้า SDK ที่รวบรวมของคุณจะต้องตรงกับห้องสมุดสนับสนุน นี่คือสิ่งที่ฉันทำ

  1. คุณสามารถไปที่ SDK Manager และภายใต้แพลตฟอร์ม SDK ติดตั้ง Android 5.X พร้อม API ระดับ 23
  2. ภายใต้โครงสร้างโครงการเปลี่ยนคอมไพล์ SDK เวอร์ชันเป็น API 23 และเครื่องมือสร้างเวอร์ชันเป็น 23.0.0

จากนั้นก็ควรสร้างโดยไม่มีปัญหา


22

คุณต้องตั้ง compileSdkVersion เป็น 23

เนื่องจาก API 23 Android ลบแพ็คเกจ Apache Http ที่เลิกใช้แล้วดังนั้นหากคุณใช้มันสำหรับคำขอเซิร์ฟเวอร์คุณจะต้องเพิ่ม useLibrary 'org.apache.http.legacy'ไปbuild.gradleตามที่ระบุในลิงก์นี้:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    ...

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

15

ปัญหานี้ได้รับการหยิบยกขึ้นเนื่องจากในขณะนี้เวอร์ชั่น SDK ของคอมไพล์ต้องตรงกับเวอร์ชันหลักของไลบรารีสนับสนุน Android

ในกรณีของฉันฉันมีAndroid Support Libraryรุ่น 23 ดังนั้นฉันต้องรวบรวมกับAndroid SDK version 23และฉันต้องเปลี่ยนสิ่งนี้ในbuild.gradleไฟล์ของฉัน:

ป้อนคำอธิบายรูปภาพที่นี่

คุณบางคนจะต้องติดตั้ง SDK Android 6.0 (API 23)

ป้อนคำอธิบายรูปภาพที่นี่

และอย่าลืมซิงค์โครงการด้วยไฟล์ 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

ผมพบว่าวิธีการแก้ปัญหาเริ่มต้นเมื่อฉัน SDK เวอร์ชั่นล่าสุดหลังจากที่ผมใช้ที่แตกต่างกันbuildToolsVersion ('22 .0.1) และผมใช้ที่แตกต่างกันสนับสนุนห้องสมุดเช่นรวบรวม 'com.android.support:appcompat-v7:23.0.0' , แสดงให้คุณเห็นในภาพด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

นี่เป็นปัญหาของ " android.widget.Material ... " จากนั้นฉันก็ใช้เวอร์ชันเดียวกันสำหรับห้องสมุดสนับสนุนเช่น คอมไพล์ 'com.android.support:appcompat-v7:22.0.1'และ DONE (แสดงหน้าจอด้านล่าง)

ป้อนคำอธิบายรูปภาพที่นี่


9

คุณควรรวบรวมโครงการของคุณเป็นเวอร์ชันล่าสุดดังนั้นอัปเดตและติดตั้งจาก SDK ของคุณ ซิงค์โครงการของคุณด้วยsync project with Gradle fileปุ่ม
คุณยังสามารถใช้เวอร์ชันที่มีอยู่ต่อไปได้ แต่ตรวจสอบว่าติดตั้งอย่างถูกต้องด้านล่างรูปภาพระบุถึง API 22 ที่ติดตั้งอย่างถูกต้องป้อนคำอธิบายรูปภาพที่นี่

และซิงค์โครงการของคุณหากจำเป็น

ป้อนคำอธิบายรูปภาพที่นี่

มันอาจช่วย


8

ตามที่ระบุไว้โดย Tanis.7x เวอร์ชันไลบรารีสนับสนุน (23) ไม่ตรงกับ targetSdkVersion (22)

คุณสามารถแก้ไขได้โดยทำสิ่งต่อไปนี้:

ในbuild.gradeไฟล์ของโมดูลแอปของคุณเปลี่ยนบรรทัดของรหัสต่อไปนี้

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

ถึง

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

สิ่งนี้จะใช้เวอร์ชั่นล่าสุดของเวอร์ชันแอปที่เข้ากันได้กับ SdkVersion 22


7

SDK สำหรับคอมไพล์ของคุณต้องตรงกับเวอร์ชันหลักของไลบรารีการสนับสนุน นี่คือวิธีการแก้ไขปัญหาของคุณ คุณสามารถตรวจสอบได้อย่างง่ายดายใน Gradle Scripts ในbuild.gradleไฟล์ Fx: ถ้าคุณcompileSdkVersion23 ไลบรารีคอมไพล์ของคุณจะต้องเริ่มต้นที่ 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'
}

และตรวจสอบเสมอว่า Android Studoi ของคุณมีระดับ API ที่รองรับ คุณสามารถตรวจสอบได้ใน Android SDK ของคุณเช่นนี้ ป้อนคำอธิบายรูปภาพที่นี่


6

ในกรณีของฉันมันเป็นบริการ Google Play เวอร์ชันที่สูงกว่า ฉันตั้งค่าเป็น 7.0.0 (ไม่ใช่ 8.x) และทั้งหมดก็โอเค


5

ฉันต้องการลดระดับจาก API 23 เป็น 22 และได้รับข้อผิดพลาดนี้ ฉันต้องเปลี่ยนไฟล์ทั้งหมด build.gradleในโครงการเพื่อรวบรวม

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

นี่คือสิ่งที่ช่วยฉัน: เพิ่มแพลตฟอร์ม Android เฉพาะ

สิ่งที่ควรจะทำคือต่อไปนี้ ... ในกรณีของฉันมันเป็นcordovaเดียวกัน แต่มีความเกี่ยวข้องionic, phonegapและกรอบอื่น ๆ เช่นเหล่านี้:

  1. cordova platform listรายการแพลตฟอร์มทั้งหมดที่ติดตั้งสำหรับโครงการของคุณ: คุณจะเห็นสิ่งนี้:

ป้อนคำอธิบายรูปภาพที่นี่

  1. ลบแพลตฟอร์ม cordova platform remove androidAndroid:

  2. จากนั้นเพิ่มแพลตฟอร์ม Android เฉพาะ: cordova platform add android@5.0.0.

โชคดี! :)


3

ฉันมีปัญหาเดียวกัน ฉันแก้ไขปัญหาของฉันโดยอัพเดท gradle.build สำหรับแต่ละโมดูลย่อยเป็นคอมไพเลอร์รุ่นล่าสุด


2

ทุกอย่างยอดเยี่ยม แต่ไม่มีใครอธิบายได้ว่าจะดาวน์โหลดเครื่องมือสร้าง SDK ได้ที่ไหน

ทุกอย่างดีมาก แต่ไม่มีใครอธิบายได้ว่าจะดาวน์โหลดเครื่องมือสร้าง SDK ได้ที่ไหน


1

โซลูชันอื่น: นำทางไปยัง

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

เปิด.aarไฟล์ที่มี 7-zip หรือ winrar ใน res res ลบvalues-23โฟลเดอร์และบันทึกการเปลี่ยนแปลง


1

ในโมดูล: แอป (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'
}

โครงการ: nameAppXXXX (Gradle)

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

    }
}

allprojects {
    repositories {
        jcenter()
    }
}

และแก้ไขกิจกรรมของ AppCompatActivity เป็นกิจกรรมตัวอย่าง:

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

ฉันมีปัญหากับ Android Studio 1.3.1 และไม่มีคำตอบอื่นใดที่เหมาะกับฉัน แต่หลังจากอัปเดตเป็น 1.5.1 ก็ไม่มีปัญหา


1

หากคุณใช้ phonegap (ข้ามแพลตฟอร์ม) และมีปัญหาเดียวกันข้างต้นเพียงลบแพลตฟอร์ม android โดยใช้คำสั่งด้านล่าง

phonegap แพลตฟอร์มลบ android

และเพิ่มอีกครั้ง

แพลตฟอร์ม phonegap เพิ่ม Android

จากนั้นแก้ไขปัญหาให้ฉัน


0

ดังที่คนอื่น ๆ ได้กล่าวถึงคุณcompile sdk versionต้องตรงกับsupport library'sเวอร์ชันหลักของคุณ อย่างไรก็ตามเรื่องนี้เกี่ยวข้องกับsubprojectsหากคุณมี

ในกรณีที่คุณทำคุณสามารถกำหนดsubprojectsรุ่นของ sdk ที่คอมไพล์ด้วยสคริปต์ต่อไปนี้:

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

เพิ่มสคริปต์นี้ในbuild.gradleไฟล์รูทของคุณ


-1

หากคุณได้รับข้อผิดพลาดแม้หลังจากดาวน์โหลด SDK ล่าสุดและ Android Studio นี่คือสิ่งที่ฉันทำ:

  1. ดาวน์โหลด SDK ล่าสุด
  2. เปิดไฟล์ - โครงสร้างโครงการ ( Ctrl+ Alt+ Shift+ S)
  3. ในโมดูลเลือกแอพ
  4. ในแท็บคุณสมบัติ: เปลี่ยนเวอร์ชั่น SDK คอมไพล์เป็น API 23 Android 6.0 marshmallow (ล่าสุด)

ฉันหวังว่ามันจะช่วยให้ใครบางคนเพื่อที่เขาจะไม่ต้องทนทุกข์ทรมานเหมือนที่ฉันทำในสองสามวัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.