appcompat-v7: 21.0.0 ': Không tìm thấy tài nguyên phù hợp với tên đã cho: attr' android: actionModeShareDrawable '


376

Khi thử sử dụng thư viện hỗ trợ appcompat-v7 mới nhất trong dự án của tôi, tôi gặp phải lỗi sau:

/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'.

Làm thế nào để tôi sửa lỗi này?


1
Tôi đang gặp vấn đề này trong nhật thực. Tôi đã có hơn 100 lỗi vì các công cụ SDK Build của tôi không cập nhật lên rev 21. Hiện tại có các lỗi khác nhau nên ... hãy xem xét các lỗi đó.
ĐỎ_

Hôm nay tôi đã gỡ cài đặt và cài đặt lại Extras / Thư viện hỗ trợ Android (phiên bản 21.0.2) và lưu ý rằng project.properations của nó vẫn không chính xác trỏ đến target = android-19, đó là gốc rễ của vấn đề. Phải là 21, nhưng đó là tệp được tạo - không thể chỉnh sửa bằng tay -. Xem câu trả lời được chấp nhận cho cách giải quyết.
JulianSymes

@RED_, Không thể giải quyết biểu tượng 'android: Theme.M vật liệu. Ánh sáng' trong <style name = "AppBaseTheme" Parent = "android: Theme.M vật liệu. Ánh sáng"> </ style> trong valules-v21 trong studio android
Pankaj Nimgade

@PankajNimgade Tôi không hiểu ... bạn có cần giúp đỡ không?
ĐỎ_

@RED_, vâng tôi cần sự giúp đỡ một cách tuyệt vọng, trên máy tính của tôi, tôi có thể không có vẻ để phát hiện bất cứ điều gì cho Material Theme hoặc bất cứ điều gì mà bắt đầu với android trong các giá trị-v21 \ phong cách, giúp đỡ lòng tôi
Pankaj Nimgade

Câu trả lời:


598

Mặc dù câu trả lời của loeschg là hoàn toàn chính xác, tôi chỉ muốn giải thích về nó và đưa ra giải pháp cho tất cả các IDE (Eclipse, IntellJ và Android Studio) ngay cả khi các lỗi hơi khác biệt.


Điều kiện tiên quyết

Đảm bảo rằng bạn đã tải xuống bản mới nhất extrascũng như Android 5.0 SDKthông qua Trình quản lý SDK.

Hình ảnh của Trình quản lý SDK


Studio Android

Mở build.gradletệp của mô-đun ứng dụng của bạn và thay đổi compileSdkVersionthành 21. Về cơ bản không cần thiết phải thay đổi targetSdkVersionPhiên bản SDK thành 21 nhưng bạn nên luôn nhắm mục tiêu Phiên bản xây dựng Android mới nhất .
Cuối cùng, tập tin gradle của bạn sẽ trông như thế này:

android {
    compileSdkVersion 21
    // ...

    defaultConfig {
        // ...
        targetSdkVersion 21
    }
}

Hãy chắc chắn để đồng bộ dự án của bạn sau đó.

Lời nhắc đồng bộ hóa Android Studio Gradle


Nhật thực

Khi sử dụng v7-appcompattrong Eclipse, bạn phải sử dụng nó như một dự án thư viện. Chỉ sao chép * .jar vào /libsthư mục của bạn là không đủ . Vui lòng đọc hướng dẫn từng bước này (click) trên developer.android.com để biết cách nhập dự án đúng cách.

Ngay sau khi dự án được nhập, bạn sẽ nhận ra rằng một số thư mục trong /resthư mục được gạch chân màu đỏ vì các lỗi như sau:

Lỗi trong 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'.

Giải pháp

Điều duy nhất bạn phải làm là mở project.propertiestệp của android-support-v7-appcompatvà thay đổi mục tiêu từ target=android-19sang target=android-21.
Sau đó chỉ cần làm một Project --> Clean...để các thay đổi có hiệu lực.


IntelliJ IDEA (không sử dụng Gradle)

Tương tự với Eclipse, nó không đủ để chỉ sử dụng android-support-v7-appcompat.jar; bạn phải nhập appcompatmô-đun. Đọc thêm về nó trên StackO-Post này (bấm vào) .
( Lưu ý: Nếu bạn chỉ sử dụng, .jarbạn sẽ nhận được NoClassDefFoundErrorstrên Runtime )

Khi bạn đang cố gắng xây dựng dự án, bạn sẽ gặp các vấn đề trong các res/values-v**thư mục. Cửa sổ tin nhắn của bạn sẽ nói một cái gì đó như sau:

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

Giải pháp

Nhấp chuột phải vào appcompatmô-đun -> Mở Cài đặt mô-đun (F4) -> [Tab phụ thuộc] Chọn Nền tảng API 21 của Android từ danh sách thả xuống -> Áp dụng

Chọn Nền tảng API 21

Sau đó, chỉ cần xây dựng lại dự án (Xây dựng -> Dự án xây dựng lại) và bạn đã sẵn sàng để đi.


2
Tôi cũng đang đối mặt với vấn đề tương tự trong nhật thực sau khi thay đổi mục tiêu từ đích = android-19 sang đích = android-21 cũng gặp lỗi trên thư mục giá trị anh chàng
prabhakaran

1
Khi tôi thay đổi AppCompat thành 5.0 trong nhật thực, nó không còn được xây dựng và thư mục .bin trống.
Clive Jefferies

1
Thật tuyệt vời, thực sự tôi đã vật lộn từ 2 ngày qua, nhưng thủ thuật của bạn đã thay đổi Android-19 thành 21 .. Cảm ơn Man
Mukesh Garg

1
Sử dụng Eclipse, tôi đã phải cập nhật mục tiêu dự án lên 21 trên tất cả các dự án đang sử dụng thư viện appcompat, không chỉ trên chính dự án appcompat.
Bianca Daniciuc

1
Tôi hiện đang vật lộn với các vấn đề trước đây được đề cập trong nhật thực / android. Nó thực sự là một tải của bollocks không đáng tin cậy.
AndyUK

123

Điều này có thể là do bạn chưa đặt thành compileSdkVersion21 trong tệp build.gradle của mình. Bạn cũng có thể muốn thay đổi targetSdkVersionthành 21.

android {
    //...
    compileSdkVersion 21

    defaultConfig {
        targetSdkVersion 21
    }
    //...
}

Điều này đòi hỏi bạn phải tải xuống các bản cập nhật SDK mới nhất để bắt đầu.

Trình quản lý SDK Android Studio

Sau khi bạn đã tải xuống tất cả các bản cập nhật (cũng đừng quên cập nhật Thư viện / Kho lưu trữ hỗ trợ Android!) Và cập nhật compileSdkVersion của bạn, đồng bộ hóa lại dự án Gradle của bạn.

Chỉnh sửa: Dành cho người dùng Eclipse hoặc chung của IntelliJ

Xem câu trả lời của reVerse. Anh ấy có một bước đi rất kỹ lưỡng!


2
Đây là câu trả lời chính xác. Nâng cấp lên 21 yêu cầu điều này, phụ thuộc appcompat mới và bạn cần tải xuống rev 12 của dịch vụ chơi.
sbaar

1
Và hãy chắc chắn chạy JDK 7
Chad Bingham

1
Trong khi vẫn đúng, xem giải pháp của @ reVerse. Nó kỹ lưỡng hơn :)
loeschg

không sử dụng cả IDE và Gradle ... nó có giống nhau khi tôi sử dụng Ant và Notepad không?
Valen

22

`Thực hiện theo các bước dưới đây:

nó làm việc cho tôi. Để giải quyết vấn đề này,

1.Right Nhấp vào thư viện appcompat_v7 và chọn Thuộc tính

2.Bây giờ, Nhấp vào Tùy chọn Android, Đặt Đường dẫn xây dựng dự án là Android 5.0 (API cấp 21) Áp dụng thay đổi.

3.Bây giờ hãy truy cập tệp project.properIES trong thư viện appcompat_v7,

4. Đặt mục tiêu dự án là: target = android-21

5.Bây giờ sạch sẽ + Xây dựng thư viện appcompat_v7 và các dự án của bạn


1
Tôi đã sử dụng cách của bạn và đặt mục tiêu android-21 trong dự án và thư viện, sau đó dọn sạch cả hai và thực hiện..cảm ơn.
Md Mohsin

1
Tôi có thể tìm thấy thư viện appcompat_v7 ở đâu?
Ngủ

2
bạn có thể tìm thấy appcompat_v7 lib trong: adt-bundle-windows-x86_64 -> sdk -> \ extend \ -> android \ -> hỗ trợ -> v7
madhu527

Câu trả lời này kết hợp với câu trả lời của loeschg ở trên đã giải quyết vấn đề này trong Eclipse.
Michael Todd

12

Trong trường hợp bạn không muốn sử dụng API 21 làm API mục tiêu và do đó bạn không muốn sử dụng Chủ đề Vật liệu, bạn phải sử dụng bản sửa đổi cũ hơn thuộc về API 19>

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

Điều này cũng giúp giải quyết vấn đề của bạn, nó chỉ phụ thuộc vào những gì bạn muốn đạt được.


Tôi đồng ý với bạn. Rốt cuộc, không phải ai cũng có kế hoạch nhắm mục tiêu sdk vào lúc 21.
hòa bình

10

Tôi đã gặp vấn đề này với các dịch vụ chơi: 5.0,89. Nâng cấp lên 6.1.11 đã giải quyết vấn đề.


8

Trong Android Studio tôi đã cố gắng để thiết lập compileSdkVersiontargetSdkVersionđể19 .

Giải pháp của tôi là thay thế ở dưới cùng build.gradle, từ đây:

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

Đến phiên bản cũ hơn của thư viện appcompat:

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

Tôi đã sử dụng phiên bản mới nhất từ ​​appcompact nhưng bây giờ tôi muốn chuyển sang phiên bản cũ hơn nhưng tôi gặp lỗi này trong thư mục đã phát nổ
Antwan

3

Tôi đã thêm một dự án khác vào không gian làm việc của mình và đang cố gắng tham chiếu một hoạt động từ nó trong tệp kê khai và tôi đã gặp lỗi này. Vấn đề là tôi đã tham khảo thư viện không chính xác. Đây là cách tôi khắc phục sự cố:

  • Nhấp chuột phải vào dự án
  • Chọn thuộc tính
  • Bấm vào Android trên menu bên trái
  • Nhấp vào Thêm
  • Vui lòng chọn một dự án thư viện

Bình đã vào thư mục Phụ thuộc Android và lỗi này đã được sửa.


Tôi thực hiện trình tự của bạn. Sau đó có một «Jar không phù hợp! Khắc phục sự phụ thuộc của bạn »trong bảng điều khiển Android vì các tệp trong libs và và các tệp trong ứng dụng thư viện dịch vụ ứng dụng và ứng dụng google play không khớp (có sự không khớp giữa SHA-1 và độ dài tệp jar). Đấu tranh hơn nữa, tôi coi đây là một thành công.
Eugene Gr. Philippov

2

Hãy chắc chắn rằng bạn làm sạch dự án của bạn trong studio android (hoặc nhật thực),

Nó sẽ giải quyết vấn đề của bạn


2
Việc dọn dẹp dự án của bạn trong trường hợp này không hiệu quả, đặc biệt là nếu bạn vừa tải xuống SDK Android mới, thư viện appcompat, v.v., vì các lỗi sẽ không tự làm sạch một cách kỳ diệu mà không tìm thấy các liên kết bị thiếu đến các thư viện và / hoặc tài nguyên Android khác. Câu trả lời của ReVerse là chính xác và kỹ lưỡng nhất cho những người không biết cách giải quyết vấn đề với bản tải xuống API cấp 21 mới nhất của Android.
ChuongPham

2

Nâng cấp lên plugin lớp mới nhất giải quyết vấn đề của tôi:

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

0.14.0 thực sự đã được phát hành cách đây không lâu
loeschg

vâng, tôi vẫn đang sử dụng 0.12 ... có lẽ nó có thể giúp người khác nâng cấp lên 0.13 hoặc 0.14
avianey

2

Sau khi tạo một dự án thứ hai trong không gian làm việc trong nhật thực, tôi gặp vấn đề này. Tôi tin rằng đó là vì tôi đã tạo ra nó với một phiên bản SDK khác và đây là thư viện android-support-v7-appcompat.

Tôi đã cố gắng để làm sạch mọi thứ nhưng vô ích. Cuối cùng, gợi ý ở trên để chỉnh sửa project.properies và thay đổi target = android-21 và đặt dự án của tôi thành Android 5.0, đã sửa nó.


2

Điều tôi khuyên bạn là: (Điều này hoạt động với tôi sau nhiều ngày có lỗi)

-Hãy chắc chắn rằng bạn đã tải xuống:

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

-Giảm tải ADT

-Làm một bản sao bảo mật của dự án của bạn.

-Bạn phải có ADT, không gian làm việc và dự án mà chúng tôi sẽ nhập trong cùng một đĩa (ví dụ: C: /)

  1. Bây giờ xóa compat ứng dụng và dự án của bạn.

  2. Trong nhật thực: Tệp> Nhập> Dự án hiện có của Android> Tiếp theo> Duyệt (Thư mục nơi bạn có ADT của mình) / sdk / ngoại vi / android / v7 / appcompat> Nhập> Kết thúc

  3. Bây giờ trong Gói khám phá nhật thực: android-support-v7-appcompat / libs / Tạo trên hai JARS: Nhấp chuột phải> Đường dẫn xây dựng> Thêm vào đường dẫn xây dựng

  4. Nhấp chuột phải vào libs / thư mục> Đường dẫn Buil> Cấu hình Đường dẫn xây dựng và kiểm tra hai JARS này> OK

  5. Trên thanh nhật thực phía trên> Dự án> Làm sạch

  6. Nhập dự án của bạn> Tệp> Nhập> Duyệt dự án của bạn> Kết thúc

  7. Bây giờ, nhấp chuột phải vào projectfile và android-support-v7-appcompat> Properties> Android> Và chọn API mới nhất xuất hiện> OK

  8. Nhấp chuột phải vào tệp dự án> Thuộc tính> Android> Thêm> android-support-v7-appcompat

  9. Trên thanh nhật thực phía trên> Dự án> Làm sạch


2

Tôi đã gặp lỗi tương tự khi tôi thay đổi phiên bản Compile SDK từ API: 21 thành API: 16. Vấn đề là, phiên bản appcompat . Nếu bạn cần sử dụng phiên bản API Android cũ hơn, do đó bạn cũng phải thay đổi phiên bản ứng dụng này. Trong trường hợp của tôi ( đối với API: 16 ), tôi đã phải sử dụng appcompat-v7: 19. + .

Vì vậy, tôi thay thế các phụ thuộc trong build.gradle như sau,

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

Và đảm bảo bạn có các phiên bản cũ hơn của phiên bản appcompat trên SDK của mình nhập mô tả hình ảnh ở đây


2

Tôi đã cập nhật tất cả mọi thứ và vẫn gặp lỗi này, không biết tại sao nhưng tôi nghĩ rằng hình ảnh đã bị hỏng theo một cách kỳ lạ và sau khi thay thế hình ảnh tôi đã thoát khỏi lỗi. Có thể đáng để thử với một hình ảnh khác :)


1

Vấn đề của tôi là tôi đã có các thư viện khác mà dự án của tôi tham chiếu và các thư viện đó có phiên bản khác của appcompat được tham chiếu. Đây là những gì tôi đã làm để giải quyết vấn đề:

(Bạn nên sao lưu dự án của mình trước khi thực hiện việc này)

1) Tôi đã xóa tất cả các thư mục bố cục appcompat (ví dụ: / res / layout-v11).

2) Đã giải quyết các vấn đề phát sinh từ đó, thường là lỗi trong menu.xml

3) Quay lại dự án chính và thêm thư viện appcompat, dọn dẹp, và mọi thứ đều hoạt động!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.