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 не обновлялись до версии 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
Панкадж Нимгад

@PankajNimgade Я не понимаю ... тебе нужна помощь?
RED_

@RED_, да, мне отчаянно нужна помощь, на моем компьютере я не могу обнаружить что-либо для Материальной темы или что-то, что начинается с android в values-v21 \ styles, пожалуйста, помогите мне
Pankaj Nimgade

Ответы:


598

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


Предварительно требования

Убедитесь, что вы загрузили последнюю версию, extrasа также Android 5.0 SDKчерез SDK-Manager.

Изображение менеджера SDK


Android Studio

Откройте build.gradleфайл вашего модуля приложения и измените его compileSdkVersionна 21. В принципе нет необходимости менять targetSdkVersionSDK-версию на 21, но рекомендуется, так как вы всегда должны ориентироваться на последнюю версию Android Build-Version .
В итоге ваш gradle-файл будет выглядеть так:

android {
    compileSdkVersion 21
    // ...

    defaultConfig {
        // ...
        targetSdkVersion 21
    }
}

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

Android Studio Gradle Sync напоминание


Затмение

При использовании v7-appcompatв 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-Post (нажмите) .
( Примечание: если вы используете только, .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 Platform из выпадающего меню -> Применить.

Выберите платформу API 21

Затем просто пересоберите проект (Build -> Rebuild Project) и все готово.


2
я также сталкиваюсь с той же проблемой в затмении после изменения цели с target = android-19 на target = android-21, также получаю ошибку на папке значений, чувак
prabhakaran

1
Когда я меняю AppCompat на 5.0 в eclipse, он больше не собирается, а папка .bin пуста.
Клайв Джеффрис

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

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

1
В настоящее время я борюсь с предыдущими проблемами, упомянутыми в Eclipse / Android. Это действительно груз ненадежных и непонятных бредов.
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, и вам необходимо загрузить версию 12 игровых сервисов.
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 + Сборка библиотеки appcompat_v7 и ваших проектов


1
Я использовал ваш способ и установил цель android-21 в проекте и библиотеке, а затем очистил и готово ... спасибо.
Мд Мохсин

1
где я могу найти библиотеку appcompat_v7?
SleepNot

2
Вы можете найти appcompat_v7 lib в: adt-bundle-windows-x86_64 -> sdk -> \ extras \ -> android \ -> support -> v7
madhu527

Этот ответ в сочетании с ответом loeschg выше решил эту проблему в Eclipse.
Майкл Тодд

12

Если вы не хотите использовать API 21 в качестве целевого API и, следовательно, не хотите использовать тему материала, вам нужно использовать более старую ревизию, принадлежащую API 19>

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

Это также помогает решить вашу проблему, это зависит только от того, чего вы хотите достичь.


Я с тобой согласен. В конце концов, не все планируют нацелиться на sdk в 21.
Peacepassion

10

Я столкнулся с этой проблемой с play-services: 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'
}

Для более старой версии библиотеки appcompat:

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

я использовал последнюю версию из appcompact, но теперь я хочу перейти на более раннюю версию, но я получаю эту ошибку в папке
exploded

3

Я добавил другой проект в свою рабочую область и пытался ссылаться на действие из него в файле манифеста, и я получал эту ошибку. Проблема в том, что я неправильно ссылался на библиотеку. Вот как я исправил проблему:

  • Щелкните правой кнопкой мыши на проекте
  • Выберите Свойства
  • Нажмите на Android в левом меню
  • Нажмите на Добавить
  • Пожалуйста, выберите проект библиотеки

Фляга зашла в папку Android Dependencies, и эта ошибка была исправлена.


Я выполнил вашу последовательность. Затем был «Jar несоответствие! Исправьте свои зависимости »в консоли Android, потому что файлы jar в libs / и jar в зависимых проектах appcompat и google play services library не совпадали (имели несоответствие SHA-1 и длины файла jar). Продолжая бороться, я считаю это успехом.
Евгений Гр. Филиппов

2

Убедитесь, что вы очистили свой проект в Android Studio (или Eclipse),

Это должно решить ваши проблемы


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

После создания второго проекта в рабочей области в Eclipse у меня возникла эта проблема. Я полагаю, что это потому, что я создал его с другой версией 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. Теперь удалите приложение Compat и ваш проект.

  2. В eclipse: Файл> Импорт> Существующий проект Android> Далее> Обзор (папка, в которой находится ваш ADT) / sdk / extras / android / v7 / appcompat> Импорт> Готово

  3. Теперь в обозревателе пакетов eclipse: android-support-v7-appcompat / libs / Make на двух JARS: щелкните правой кнопкой мыши> Build Path> Add to Build Path

  4. Щелкните правой кнопкой мыши libs / folder> Buil Path> Configure Build Path и отметьте эти два JARS> OK

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

  6. Импортируйте ваш проект> Файл> Импорт> Просмотрите ваш проект> Готово

  7. Теперь щелкните правой кнопкой мыши файл проекта и android-support-v7-appcompat> Свойства> Android> И выберите последний появившийся API> OK

  8. Щелкните правой кнопкой мыши файл проекта> Свойства> Android> Добавить> android-support-v7-appcompat

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


2

Я получил ту же ошибку при изменении версии Compile SDK с API: 21 на API: 16. Проблема заключалась в том , AppCompat версии. Если вам нужно использовать более старую версию Android API, то вам также нужно изменить эту версию приложения. В моем случае ( для API: 16 ) мне пришлось использовать appcompat-v7: 19. + .

Поэтому я заменяю зависимости в build.gradle следующим образом:

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

И убедитесь, что у вас есть более старые версии appcompat версий в вашем SDK введите описание изображения здесь


2

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


1

Моя проблема заключалась в том, что у меня были другие библиотеки, на которые ссылался мой проект, и на эти библиотеки ссылалась другая версия appcompat. Вот что я сделал, чтобы решить эту проблему:

(Вы должны сделать резервную копию вашего проекта, прежде чем делать это)

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

2) Решил возникшие проблемы, обычно ошибка в menu.xml

3) Вернуться в основной проект и добавить библиотеку appcompat, очистить, и все работает!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.