appcompat-v7: 21.0.0 ': ไม่พบทรัพยากรที่ตรงกับชื่อที่ระบุ: attr' android: actionModeShareDrawable '


376

เมื่อพยายามใช้ไลบรารีสนับสนุน appcompat-v7 ล่าสุดในโครงการของฉันฉันได้รับข้อผิดพลาดต่อไปนี้:

/Users/greg/dev/mobile/android_project/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.0/res/values-v11/values.xml
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.

ฉันจะแก้ไขได้อย่างไร


1
ฉันได้รับปัญหานี้ในคราส ฉันมีข้อผิดพลาดมากกว่า 100 ข้อเนื่องจากเครื่องมือ SDK Build ของฉันไม่ได้อัปเดตเป็น rev 21 แต่ตอนนี้มีข้อผิดพลาดที่แตกต่างออกไปดังนั้น ... ไปดูที่เหล่านั้น
RED_

วันนี้ฉันถอนการติดตั้งและติดตั้งไลบรารีสนับสนุน Extras / Android ใหม่ (รุ่น 21.0.2) และโปรดทราบว่า project.properties ยังคงชี้ไปที่ target = android-19 อย่างไม่ถูกต้องซึ่งเป็นรากของปัญหา ควรเป็น 21 แต่เป็นไฟล์ที่สร้าง - ไม่ใช่ไฟล์ที่แก้ไขได้ด้วยมือ ดูคำตอบที่ได้รับการยอมรับสำหรับวิธีแก้ปัญหา
JulianSymes

@RED_, ไม่สามารถแก้ไขสัญลักษณ์ 'android: Theme.Material.Light' ใน <style name = "AppBaseTheme" parent = "android: Theme.Material.Light"> </style> ใน valules-v21 ใน android studio
Pankaj Nimgade

@PankajNimgade ฉันไม่เข้าใจ ... คุณต้องการความช่วยเหลือไหม?
RED_

@RED_ ใช่ฉันต้องการความช่วยเหลืออย่างยิ่งในคอมพิวเตอร์ของฉันฉันไม่สามารถตรวจจับสิ่งใดสำหรับชุดรูปแบบของวัสดุหรือสิ่งที่เริ่มต้นด้วย Android ในค่า -v21 \ styles โปรดช่วยฉันด้วย
Pankaj Nimgade

คำตอบ:


598

ในขณะที่คำตอบของloeschgนั้นถูกต้องจริง ๆ ฉันแค่อยากจะอธิบายอย่างละเอียดและให้ทางออกสำหรับ IDE ทั้งหมด (Eclipse, IntellJ และ Android Studio) แม้ว่าข้อผิดพลาดจะแตกต่างกันเล็กน้อย


Prerequirements

ตรวจสอบให้แน่ใจว่าคุณได้ดาวน์โหลดเวอร์ชันล่าสุดextrasรวมถึงAndroid 5.0 SDKทาง SDK-Manager

รูปภาพของตัวจัดการ SDK


Android Studio

เปิดbuild.gradleไฟล์ของโมดูลแอพของคุณและเปลี่ยนcompileSdkVersionเป็น 21 โดยทั่วไปไม่จำเป็นต้องเปลี่ยนtargetSdkVersionSDK-Version เป็น 21 แต่แนะนำให้ใช้เพราะคุณควรกำหนดเป้าหมายไปที่ android Build-Versionล่าสุดเสมอ
ในที่สุดคุณไฟล์ gradle จะมีลักษณะเช่นนี้:

android {
    compileSdkVersion 21
    // ...

    defaultConfig {
        // ...
        targetSdkVersion 21
    }
}

อย่าลืมซิงค์โครงการของคุณในภายหลัง

ตัวเตือน Gradient Sync ของ Android Studio


คราส

เมื่อใช้v7-appcompatin Eclipse คุณจะต้องใช้มันเป็นโครงการห้องสมุด การคัดลอก * .jar ไปยัง/libsโฟลเดอร์ของคุณไม่เพียงพอ โปรดอ่านบทช่วยสอนนี้ (คลิก)ทีละขั้นตอนบนdeveloper.android.comเพื่อให้ทราบวิธีการนำเข้าโครงการอย่างถูกต้อง

ทันทีที่มีการนำเข้าโครงการคุณจะพบว่ามีบางโฟลเดอร์ใน/resโฟลเดอร์ที่ขีดเส้นใต้สีแดงเนื่องจากข้อผิดพลาดดังต่อไปนี้:

ข้อผิดพลาดใน Eclipse

error: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material'.
error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.*'
error: Error: No resource found that matches the given name: attr 'android:actionModeShareDrawable'.

สารละลาย

สิ่งเดียวที่คุณต้องทำคือการเปิดproject.propertiesไฟล์ของandroid-support-v7-appcompatและเปลี่ยนเป้าหมายจากการtarget=android-19 หลังจากนั้นให้ทำเพื่อให้การเปลี่ยนแปลงมีผลtarget=android-21
Project --> Clean...


IntelliJ IDEA (ไม่ได้ใช้ Gradle)

คล้ายกับ Eclipse ก็ไม่เพียงพอที่จะใช้เฉพาะandroid-support-v7-appcompat.jar; คุณต้องนำเข้าappcompatเป็นโมดูล อ่านข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้Stacko โพสต์ (คลิก)
( หมายเหตุ: หากคุณใช้เพียง.jarคุณจะได้รับNoClassDefFoundErrorsใน Runtime )

เมื่อคุณพยายามสร้างโครงการคุณจะพบปัญหาในres/values-v**โฟลเดอร์ หน้าต่างข้อความของคุณจะพูดดังนี้:

Error:android-apt-compiler: [appcompat]  resource found that matches the given name: attr 'android:colorPrimary'.
Error:(75, -1) android-apt-compiler: [appcompat] C:\[Your Path]\sdk\extras\android\support\v7\appcompat\res\values-v21\styles_base.xml:75: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.ActionButton'.
// and so on

สารละลาย

คลิกขวาที่appcompatโมดูล -> เปิดการตั้งค่าโมดูล (F4) -> [แท็บการพึ่งพา]เลือกแพลตฟอร์ม Android API 21 จากดรอปดาวน์ -> ใช้

เลือกแพลตฟอร์ม API 21

จากนั้นเพียงสร้างโครงการใหม่ (Build -> สร้างโครงการใหม่) และคุณก็พร้อมที่จะไป


2
ฉันยังเผชิญปัญหาเดียวกันในคราสหลังจากเปลี่ยนเป้าหมายจากเป้าหมาย = android-19 เป็นเป้าหมาย = android-21 ยังได้รับข้อผิดพลาดในโฟลเดอร์ค่าเพื่อน
prabhakaran

1
เมื่อฉันเปลี่ยน AppCompat เป็น 5.0 ใน eclipse จะไม่สร้างอีกต่อไปและโฟลเดอร์. bin ว่างเปล่า
ไคลฟ์ Jefferies

1
ยอดเยี่ยมจริงๆฉันกำลังดิ้นรนจาก 2 วันที่ผ่านมา แต่การเปลี่ยนเคล็ดลับของคุณ Android-19 ถึง 21 ทำงาน .. ขอบคุณผู้ชาย
Mukesh Garg

1
การใช้ Eclipse ฉันต้องอัปเดตเป้าหมายโครงการเป็น 21 ในทุกโครงการที่ใช้ไลบรารี appcompat ไม่ใช่เฉพาะในโครงการ appcompat เท่านั้น
Bianca Daniciuc

1
ฉันกำลังต่อสู้กับปัญหาก่อนหน้านี้ที่กล่าวถึงใน eclipse / android มันเป็นภาระของ bollocks ที่ยอมรับไม่ได้จริงๆ
AndyUK

123

อาจเป็นเพราะคุณไม่ได้ตั้งค่าcompileSdkVersionเป็น 21 ในไฟล์ build.gradle คุณอาจต้องการเปลี่ยนtargetSdkVersionเป็น 21

android {
    //...
    compileSdkVersion 21

    defaultConfig {
        targetSdkVersion 21
    }
    //...
}

สิ่งนี้กำหนดให้คุณต้องดาวน์โหลดอัปเดต SDK ล่าสุดเพื่อเริ่มต้น

Android Studio SDK Manager

เมื่อคุณดาวน์โหลดอัปเดตทั้งหมดแล้ว (อย่าลืมอัปเดตไลบรารีสนับสนุน / พื้นที่เก็บข้อมูล Android ด้วย!) และอัปเดต compileSdkVersion ของคุณแล้วซิงค์โครงการ Gradle ของคุณอีกครั้ง

แก้ไข: สำหรับ Eclipse หรือผู้ใช้ IntelliJ ทั่วไป

ดูคำตอบของ reVerse เขาเดินผ่านไปได้อย่างทั่วถึง!


2
นี่คือคำตอบที่ถูกต้อง การอัปเกรดเป็น 21 ต้องใช้สิ่งนี้การพึ่งพา appcompat ใหม่และคุณต้องดาวน์โหลด rev 12 ของบริการการเล่น
sbaar

1
และต้องแน่ใจว่าใช้ JDK 7
Chad Bingham

1
ในขณะที่ยังคงถูกต้องให้ดูโซลูชันของ @ reVerse มันละเอียดยิ่งขึ้น :)
loeschg

ไม่ได้ใช้ทั้ง IDEs และ Gradle ... มันคล้ายกันเมื่อฉันใช้ Ant และ Notepad?
Valen

22

`ทำตามขั้นตอนด้านล่าง:

มันใช้งานได้สำหรับฉันเพื่อแก้ไขปัญหานี้

1. ขวาคลิกที่ไลบรารี appcompat_v7 และเลือกคุณสมบัติ

2. ตอนนี้คลิกที่ตัวเลือก Android กำหนดเส้นทางการสร้างโครงการเป็น Android 5.0 (ระดับ API 21) ใช้การเปลี่ยนแปลง

3. ไปที่ไฟล์ project.properties ใต้ห้องสมุด appcompat_v7

4. ตั้งค่าเป้าหมายของโครงการเป็น: target = android-21

5. ตอนนี้ Clean + Build ไลบรารี appcompat_v7 และโปรเจ็คของคุณ


1
ฉันใช้วิธีการของคุณและตั้งค่าเป้าหมาย android-21 ในโครงการและห้องสมุดแล้วล้างทั้งสองและทำ .. ขอบคุณ
Md Mohsin

1
ฉันจะหาห้องสมุด appcompat_v7 ได้ที่ไหน
SleepNot

2
คุณสามารถค้นหา appcompat_v7 lib ได้ใน: adt-bundle-windows-x86_64 -> sdk -> \ extras \ -> android \ -> การสนับสนุน -> v7
madhu527

คำตอบนี้เมื่อใช้ร่วมกับคำตอบของ loeschg ด้านบนได้แก้ไขปัญหานี้ใน Eclipse
Michael ทอดด์

12

ในกรณีที่คุณไม่ต้องการใช้ API 21 เป็น API เป้าหมายและคุณไม่ต้องการใช้ชุดรูปแบบวัสดุคุณต้องใช้รุ่นเก่าที่เป็นของ API 19>

compile "com.android.support:appcompat-v7:19.0.+"

นอกจากนี้ยังช่วยในการแก้ปัญหาของคุณขึ้นอยู่กับสิ่งที่คุณต้องการบรรลุ


ฉันเห็นด้วยกับคุณ.
ท้ายที่สุด

10

ฉันพบปัญหานี้กับบริการเล่น: 5.0.89 การอัพเกรดเป็น 6.1.11 แก้ปัญหาแล้ว


8

ใน Android Studio ฉันพยายามตั้งค่าcompileSdkVersionและtargetSdkVersionไปที่19การ

วิธีการแก้ปัญหาของฉันคือการเปลี่ยนที่ด้านล่างของbuild.gradle, จากนี้:

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

ไปยังไลบรารี appcompat รุ่นเก่ากว่า:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
}

ฉันใช้รุ่นล่าสุดจาก appcompact แต่ตอนนี้ฉันต้องการจะลดระดับเป็นรุ่นก่อนหน้า แต่ฉันได้รับข้อผิดพลาดนี้ในโฟลเดอร์ exploded-arr
Antwan

3

ฉันเพิ่มโครงการอื่นในพื้นที่ทำงานของฉันและพยายามอ้างอิงกิจกรรมจากมันในไฟล์รายการและฉันได้รับข้อผิดพลาดนี้ ปัญหาคือฉันอ้างอิงห้องสมุดไม่ถูกต้อง นี่คือวิธีที่ฉันแก้ไขปัญหา:

  • คลิกขวาที่โครงการ
  • เลือกคุณสมบัติ
  • คลิกที่ Android ทางเมนูด้านซ้าย
  • คลิกที่เพิ่ม
  • กรุณาเลือกโครงการห้องสมุด

โถเข้าไปในโฟลเดอร์อ้างอิง Androidและข้อผิดพลาดนี้ได้รับการแก้ไข


ฉันดำเนินการตามลำดับของคุณ จากนั้นมี« Jar ไม่ตรงกัน! แก้ไขการขึ้นต่อกันของคุณ»ในคอนโซล Android เนื่องจาก jars ใน libs / และ jars ในโครงการห้องสมุด appcompat และ google play services ไม่ตรงกัน (มี SHA-1 และความยาวไฟล์ jar ไม่ตรงกัน) ฉันคิดว่านี่เป็นความสำเร็จ
Eugene Gr. Philippov

2

ตรวจสอบให้แน่ใจว่าคุณทำความสะอาดโครงการของคุณใน android studio (หรือ eclipse)

ควรแก้ไขปัญหาของคุณ


2
การทำความสะอาดโครงการของคุณในกรณีนี้ใช้ไม่ได้โดยเฉพาะอย่างยิ่งถ้าคุณเพิ่งดาวน์โหลด Android SDK ใหม่ไลบรารี appcompat ฯลฯ เนื่องจากข้อผิดพลาดจะไม่ทำความสะอาดตัวเองอย่างน่าอัศจรรย์โดยไม่ต้องค้นหาลิงก์ที่ขาดหายไปจากห้องสมุดและทรัพยากรอื่น ๆ คำตอบของReVerseนั้นถูกต้องและละเอียดที่สุดสำหรับผู้ที่ไม่ทราบวิธีการแก้ปัญหาด้วยการดาวน์โหลด Android API ระดับ 21 ล่าสุดด้วยตนเอง
ChuongPham

2

การอัพเกรดเป็นปลั๊กอิน gradle ล่าสุดแก้ปัญหาของฉันได้:

classpath 'com.android.tools.build:gradle:0.13.+'

0.14.0 เปิดตัวจริงไม่นานมานี้
loeschg

ครับผมก็ยังคงใช้ 0.12 ... บางทีมันอาจจะสามารถช่วยให้คนอื่นอัพเกรด 0.13 หรือ 0.14
avianey

2

หลังจากสร้างโครงการที่สองในพื้นที่ทำงานใน eclipse ฉันมีปัญหานี้ ฉันเชื่อว่าเป็นเพราะฉันสร้างมันขึ้นมาด้วย SDK เวอร์ชั่นที่แตกต่างกันและ ovewrote นี้ android-support-v7-appcompat library

ฉันพยายามทำความสะอาดทุกอย่าง แต่ไม่มีประโยชน์ ท้ายที่สุดข้อเสนอแนะด้านบนเพื่อแก้ไข project.properties และเปลี่ยน target = android-21 และตั้งค่าโครงการของฉันเป็น Android 5.0 คงที่


2

สิ่งที่ฉันแนะนำคือ: (สิ่งนี้ใช้ได้กับฉันหลังจากผ่านไปหลายวันด้วยข้อผิดพลาด)

- ตรวจสอบให้แน่ใจว่าคุณได้ดาวน์โหลด:

- the Lastest SDK Platform from the latest Android version
- Android Suppor Librarie and Repository from EXTRAS 

- ลดโหลด ADT

ทำสำเนาความปลอดภัยของโครงการของคุณ

- คุณต้องมี ADT พื้นที่ทำงานและโครงการที่เราจะนำเข้าในดิสก์เดียวกัน (เช่น C: /)

  1. ตอนนี้ให้ลบแอพ compat และโครงการของคุณ

  2. ใน eclipse: ไฟล์> นำเข้า> โครงการที่มีอยู่ของ Android> ถัดไป> เรียกดู (โฟลเดอร์ที่คุณมี ADT) / sdk / extras / android / v7 / appcompat> นำเข้า> เสร็จสิ้น

  3. ตอนนี้อยู่ใน eclipse Package Explorer: android-support-v7-appcompat / libs / Make บน JARS สองตัว: คลิกขวา> Build Path> Add to Build Path

  4. คลิกขวาที่ libs / folder> Buil Path> กำหนดค่า Build Path และตรวจสอบ JARS สองตัวนี้> OK

  5. บนแถบ eclipse ด้านบน> โปรเจ็กต์> Clean

  6. นำเข้าโครงการของคุณ> ไฟล์> นำเข้า> เรียกดูโครงการของคุณ> เสร็จสิ้น

  7. ตอนนี้คลิกขวาที่ projectfile และ android-support-v7-appcompat> คุณสมบัติ> Android> และเลือก API ล่าสุดที่ปรากฏ> ตกลง

  8. คลิกขวาที่ไฟล์โปรเจ็กต์> คุณสมบัติ> Android> เพิ่ม> android-support-v7-appcompat

  9. บนแถบ eclipse ด้านบน> โปรเจ็กต์> Clean


2

ฉันได้รับข้อผิดพลาดเดียวกันเมื่อฉันเปลี่ยนรุ่น Compile SDK จาก API: 21 เป็น API: 16 ปัญหาคือเวอร์ชันของแอปพลิเคชัน หากคุณต้องการใช้ Android API เวอร์ชันเก่าดังนั้นคุณต้องเปลี่ยนเวอร์ชันแอปนี้ด้วย ในกรณีของฉัน ( สำหรับ API: 16 ) ผมต้องใช้AppCompat-v7: 19 +

ดังนั้นฉันจึงแทนที่การพึ่งพาในbuild.gradleดังนี้

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
}

และตรวจสอบให้แน่ใจว่าคุณมีเวอร์ชันแอปเวอร์ชันเก่าบน SDK ของคุณ ป้อนคำอธิบายรูปภาพที่นี่


2

ฉันได้รับการอัปเดตทุกอย่างแล้วและยังได้รับข้อผิดพลาดนี้ไม่แน่ใจว่าทำไม แต่ฉันคิดว่าภาพเสียหายในทางที่แปลกและหลังจากเปลี่ยนภาพฉันได้กำจัดข้อผิดพลาด อาจจะคุ้มค่าที่จะลองด้วยภาพอื่น :)


1

ปัญหาของฉันคือฉันมีห้องสมุดอื่น ๆ ที่โครงการของฉันอ้างอิงและห้องสมุดเหล่านั้นมี appcompat รุ่นอื่นที่อ้างอิง นี่คือสิ่งที่ฉันทำเพื่อแก้ไขปัญหา:

(คุณควรสำรองข้อมูลโครงการก่อนทำสิ่งนี้)

1) ฉันลบโฟลเดอร์เค้าโครง appcompat ทั้งหมด (เช่น: / res / layout-v11)

2) แก้ไขปัญหาที่เกิดขึ้นจากนั้นมักจะมีข้อผิดพลาดใน menu.xml

3) กลับไปที่โครงการหลักและเพิ่มไลบรารี appcompat สะอาดและใช้งานได้ทุกอย่าง!

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