appcompat-v7: 21.0.0 ': Не знайдено жодного ресурсу, який би відповідав заданому імені: attr' android: actionModeShareDravable '


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 не оновлювались до версії 21. Отримали різні помилки зараз, хоча так ... перегляньте ці.
RED_

Сьогодні я видалив та перевстановив Бібліотеку підтримки Extras / Android (версія 21.0.2) та зауважую, що її проект.профілі й досі неправильно вказує на target = android-19, що є коренем проблеми. Має бути 21, але це генерований - не редагуваний вручну - файл. Див. Прийняту відповідь для вирішення.
JulianSymes

@RED_, не вдається вирішити символ 'android: Theme.Material.Light' у <style name = "AppBaseTheme" parent = "android: Theme.Material.Light"> </style> у valules-v21 в студії Android
Pankaj Nimgade

@PankajNimgade Я не розумію ... чи потрібна вам допомога?
RED_

@ RED_, так, мені справді потрібна допомога відчайдушно, на моєму комп’ютері я, здається, не можу виявити нічого для Material Theme або нічого, що починається з Android у стилях значень-v21 \, будь ласка, допоможіть мені
Pankaj Nimgade

Відповіді:


598

Хоча відповідь loeschg абсолютно правильна, я просто хочу детально розробити її і дати рішення для всіх IDE (Eclipse, IntellJ та Android Studio), навіть якщо помилки незначно відрізняються.


Передумови

Переконайтеся, що ви завантажили як останню, extrasтак і Android 5.0 SDKчерез SDK-менеджер.

Зображення менеджера SDK


Android Studio

Відкрийте build.gradleфайл свого модуля додатка та змініть його compileSdkVersionна 21. Змінювати targetSdkVersionверсію SDK на 21 не потрібно, але рекомендується, оскільки вам слід завжди орієнтуватися на останню версію андроїд-збірки .
Зрештою, gradle-файл буде виглядати так:

android {
    compileSdkVersion 21
    // ...

    defaultConfig {
        // ...
        targetSdkVersion 21
    }
}

Не забудьте синхронізувати проект згодом.

Нагадування про Android Studio Gradle Sync


Затемнення

Під час використання v7-appcompatin Eclipse ви повинні використовувати його як проект бібліотеки. Недостатньо просто скопіювати * .jar у свою /libsпапку. Прочитайте покроковий посібник (натисніть) на developer.android.com , щоб знати, як правильно імпортувати проект.

Як тільки проект імпортується, ви зрозумієте, що деякі папки в /resпапці червоно підкреслені через такі помилки:

Помилки у затемненні

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)

Similiar to Eclipse недостатньо використовувати лише android-support-v7-appcompat.jar; вам потрібно імпортувати appcompatяк модуль. Детальніше про це читайте на цій StackO-Post (натисніть) .
( Примітка. Якщо ви користуєтесь лише, .jarви отримаєте NoClassDefFoundErrorsна час виконання )

Коли ви намагаєтеся створити проект, ви зіткнетеся з проблемами в 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 -> Rebuild Project) і ви готові йти.


2
Я також зіткнувся з тією ж проблемою в затемненні після зміни цілі з target = android-19 на target = android-21 також отримую помилку у значенні папки значень
прабхакаран

1
Коли я поміняю AppCompat на 5,0 у затемненні, він більше не створюється, а папка .bin порожня.
Клайв Джеффріс

1
Високий, на самом деле я з усіх сил від останніх 2 -х днів, але ур зміна трюк Android-19 до 21 працював .. спасибі Людина
Мукеш Garg

1
Використовуючи Eclipse, мені довелося оновити ціль проекту до 21 на всіх проектах, які використовували бібліотеку appcompat, а не лише на сам проект appcompat.
Біанка Даніцюк

1
Я зараз веду боротьбу з попередніми проблемами, згаданими в затемненні / андроїді. Це справді вантаж ненадійних непрохідних болотів.
AndyUK

123

Це, ймовірно, тому, що ви не встановили compileSdkVersion21 у файлі build.gradle. Ви також, ймовірно, хочете змінити свою targetSdkVersionна 21.

android {
    //...
    compileSdkVersion 21

    defaultConfig {
        targetSdkVersion 21
    }
    //...
}

Для цього потрібно завантажити останні оновлення SDK.

Менеджер SDK Android Studio

Після завантаження всіх оновлень (також не забудьте також оновити бібліотеку / сховище підтримки Android!) Та оновити компіляціюSdkVersion, повторно синхронізуйте проект Gradle.

Редагування: для користувачів Eclipse або загальних користувачів IntelliJ

Дивіться відповідь reVerse. Він дуже ретельно прогулявся!


2
Це правильна відповідь. Оновлення до 21 вимагає цього, нових залежностей appcompat, і вам потрібно завантажити 12 версій служб Play.
sbaar

1
І не забудьте запустити JDK 7
Чад Бінгем

1
Незважаючи на правильність, див. Рішення @ reVerse. Це більш ретельно :)
loeschg

не використовував ні одного з IDE, ні Gradle ... це схоже, коли я використовую Ant та Notepad?
Вален

22

`Виконайте нижче кроки:

це працює для мене. Щоб вирішити цю проблему,

1. Право Клацніть бібліотеку appcompat_v7 і виберіть "Властивості"

2.Зараз натисніть на опцію Android, встановіть шлях збірки проектів як Android 5.0 (рівень API 21) Застосувати зміни.

3. Тепер перейдіть до файла project.properties у бібліотеці appcompat_v7,

4.Встановіть ціль проекту як: target = android-21

5.Now 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.
Майкл Тодд

12

Якщо ви не хочете використовувати API 21 як цільовий API, і, отже, ви не хочете використовувати Матеріал теми, ви повинні використовувати старішу версію, що належить API 19>

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

Це також допомагає вирішити вашу проблему, це залежить лише від того, чого ви хочете досягти.


Я погоджуюсь з тобою. Зрештою, не всі планують орієнтуватися на sdk о 21
год

10

Я зіткнувся з цією проблемою в програмах Play: 5.0.89. Оновлення до 6.1.11 вирішило проблему.


8

В Android студії я намагався встановити compileSdkVersionі targetSdkVersionв19 .

Моє рішення було замінити внизу build.gradle, з цього:

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

До старшої версії бібліотеки додатків:

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

я використовував останню версію від appcompact, але тепер я хочу перейти на більш ранню версію, але я отримую цю помилку в папці
Exploded

3

Я додав ще один проект до своєї робочої області і намагався посилатися на активність з нього у файл маніфесту, і я отримував цю помилку. Проблема в тому, що я неправильно посилався на бібліотеку. Ось як я вирішив проблему:

  • Клацніть правою кнопкою миші на проекті
  • Виберіть Властивості
  • Клацніть на меню Android зліва
  • Клацніть на Додати
  • Виберіть Проект бібліотеки

Банка перейшла в папку Android Dependunities і ця помилка була виправлена.


Я виконав вашу послідовність. Тоді була «Невідповідність Jar! Виправте свої залежності »на консолі Android, оскільки банки в libs / та банки в залежних проектах бібліотек служб appcompat та google play не відповідають (мали невідповідність SHA-1 та довжину файлу jar). Намагаючись далі, я вважаю це успіхом.
Євген Гр. Філіппов

2

Переконайтеся, що ви чистите проект в андроїд-студії (або затемненні),

Це має вирішити ваші проблеми


2
Очищення проекту в цьому випадку не працює, особливо якщо ви тільки що завантажили новий SDK для Android, бібліотеку додатків тощо, оскільки помилки не будуть магічно очищати себе, не знаходячи відсутніх посилань на інші бібліотеки та / або ресурси Android. Відповідь 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

Після створення другого проекту в робочій області в затемненні у мене виникла ця проблема. Я вважаю, це тому, що я створив його з іншою версією SDK, і це переписав бібліотеку Android-support-v7-appcompat.

Я намагався все очистити, але безрезультатно. Зрештою, пропозиція редагувати 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. Тепер видаліть компат програми та ваш проект.

  2. У затемненні: Файл> Імпорт> існуючий проект для Android> Далі> Огляд (папка, у якій є ваш ADT) / sdk / extras / android / v7 / appcompat> Імпорт> Готово

  3. Тепер у Провіднику пакунків затемнення: android-support-v7-appcompat / libs / Зробіть два JARS: Клацніть правою кнопкою миші> Build Path> Add to Build Path

  4. Клацніть правою кнопкою миші на папках / папці> Шлях нарощування> Налаштування контуру збірки та перевірте ці два JARS> ОК

  5. На верхній смузі затемнення> Проект> Очистити

  6. Імпортуйте проект> Файл> Імпорт> Огляд проекту> Готово

  7. Тепер клацніть правою кнопкою миші на файл проекту та android-support-v7-appcompat> Властивості> Android> І виберіть найновіший API, який з’явиться> OK

  8. Клацніть правою кнопкою миші на файл проекту> Властивості> Android> Додати> android-support-v7-appcompat

  9. На верхній смузі затемнення> Проект> Очистити


2

Я отримав таку ж помилку, коли змінив версію SDK Compile з API: 21 на API: 16. Проблемою була версія версії appcompat . Якщо вам потрібно скористатися старішою версією Android Android API, вам доведеться також змінити цю версію програми. У моєму випадку ( для API: 16 ) мені довелося використовувати appcompat-v7: 19. + .

Тому я замінюю залежності в build.gradle наступним чином,

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

І переконайтеся, що на вашому SDK є старіші версії програм appcompat введіть тут опис зображення


2

Я був в курсі всього і досі отримав цю помилку, не знаю, чому, але, думаю, зображення було пошкоджено дивним чином і після заміни зображення я позбувся помилки. Можливо, варто спробувати з іншим зображенням :)


1

Моя проблема полягала в тому, що у мене були інші бібліотеки, на які посилався мій проект, і на ці бібліотеки була інша версія посилань на appcompat. Ось що я зробив, щоб вирішити проблему:

(Ви повинні створити резервну копію свого проекту, перш ніж це зробити)

1) Я видалив усі папки макета програми (наприклад: / res / layout-v11).

2) Вирішили проблеми, що виникли із цього, як правило, помилка в menu.xml

3) Поверніться до основного проекту та додайте бібліотеку appcompat, очистіть, і все працює!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.