Ошибка получения родительского элемента для элемента: ресурс не найден, который соответствует указанному имени после обновления до AppCompat v23
Я всегда программировал Android с Eclipse и решил начать переход на Android Studio. Я решил использовать тот же SDK, который у меня уже был для Eclipse, а затем:
- Начал новый проект
- Установить минимальный SDK 4.0 (API-уровень 14)
- Выберите вариант "Пустое действие"
- Используемые имена по умолчанию для имени активности и имени макета
- Нажмите "Готово"
Через несколько секунд Gradle завершает сборку, и она бросает мне две ошибки со следующими сообщениями в файле Teste4\app\build\intermediates/exploded-aar\com.android.support\appcompat-v7\23.0. 0\Рез\значения-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
Что мне делать, чтобы исправить это?
Я уже пробовал, что было предложено в вопросе appcompat-v7: 21.0.0 ': ресурс не найден, который соответствует указанному имени: attr' android: actionModeShareDrawable ', но это не сработало.
Ответы
Ответ 1
Ваша версия SDK для компиляции должна соответствовать основной версии библиотеки поддержки.
Поскольку вы используете версию 23 библиотеки поддержки, вам необходимо скомпилировать ее до версии 23 Android SDK.
В качестве альтернативы вы можете продолжить компиляцию по сравнению с версией 22 Android SDK, переключившись на самую последнюю библиотеку поддержки v22.
Ответ 2
Это происходит потому, что после обновлений 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. Это определенно будет работать.
Ответ 3
Когда вы обновляете свой Android Studio, он использует API версии 23 по умолчанию,
что является основной причиной его возникновения. Таким образом,
Сначала проверьте версию AppCompat в файле build.gradle(Module: app)
То есть
![Введите описание изображения здесь]()
Если после смены на 23 происходит ошибка, просто скачайте
Compile Sdk Version to API 23, and Build Tools Version to 23.0.0
из диспетчера SDK. Если он уже загружен, то:
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, чтобы открыть настройку
- Выберите приложение из списка.
- Нажмите свойства
- Измените версию SDK Compile на API 23
- Измените версию Build Tools на 23.0.0
![Введите описание изображения здесь]()
Не забудьте перестроить свой проект.
Затем ваша ошибка исчезнет.
Ответ 4
Если вы попытались изменить цель на предыдущую версию 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.
Ответ 5
Я согласен с предыдущим ответом. Ваша версия SDK для компиляции должна соответствовать библиотеке поддержки. Вот что я сделал.
- Вы можете перейти в SDK Manager и под платформой SDK Platform, установить Android 5.X с уровнем API 23.
- В разделе "Структура проекта" смените версию SDK версии на API 23 и версию "Инструменты для сборки" до 23.0.0
Затем он должен строиться без проблем.
Ответ 6
Вам необходимо установить для 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'
}
Ответ 7
Эта проблема возникает, потому что теперь скомпилированная версия SDK должна соответствовать основной версии библиотеки поддержки Android.
В моем случае у меня есть версия Android Support Library
23, поэтому мне пришлось скомпилировать ее с Android SDK version 23
, и мне пришлось изменить ее в файле build.gradle
:
![введите описание изображения здесь]()
Ну, некоторые из вас должны будут установить SDK, Android 6.0 (API 23)
![введите описание изображения здесь]()
и не забывайте проект синхронизации с gradle файлами
Ответ 8
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. (Показывается ниже на снимке экрана)
![введите описание изображения здесь]()
Ответ 10
Вы должны скомпилировать свой проект с последней версией, поэтому обновите и установите из своего SDK. Синхронизируйте свой проект с помощью кнопки sync project with Gradle file
.
Вы также можете продолжить работу с существующей версией, но проверьте правильность установки ниже изображения, чтобы указать API 22, который правильно установлен. ![введите описание изображения здесь]()
И при необходимости синхронизируйте свой проект.
![введите описание изображения здесь]()
это может помочь.
Ответ 11
Как указано Tanis.7x, версия библиотеки поддержки (23) не соответствует targetSdkVersion (22)
Вы можете исправить это, выполнив следующие действия:
В файле build.grade
вашего модуля приложения измените следующую строку кода
compile 'com.android.support:appcompat-v7:23.0.0'
To
compile 'com.android.support:appcompat-v7:22.+'
Это будет использовать последнюю версию версии appcompat, совместимую с SdkVersion 22.
Ответ 12
Ваша версия SDK для компиляции должна соответствовать основной версии библиотеки поддержки. Это решение вашей проблемы. Вы можете легко проверить его в сценариях Gradle в файле build.gradle
.
Fx: если ваш compileSdkVersion
равен 23, ваша библиотека компиляции должна начинаться с 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, например:
![введите описание изображения здесь]()
Ответ 13
В моем случае это была более высокая версия Google-play-сервисов. Я установил их в 7.0.0 (а не 8.x), и все было в порядке.
Ответ 14
Я хотел отказаться от 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'
}
Ответ 15
Вот что мне помогло: Добавление конкретной платформы Android
Что нужно сделать, так это следующее: в моем случае это было cordova
, но то же самое имеет значение для ionic
, phonegap
и других фреймворков, подобных этим:
- укажите все платформы, установленные для вашего проекта:
cordova platform list
. Вы увидите что-то вроде этого:
![введите описание изображения здесь]()
-
удалите платформу Android: cordova platform remove android
.
-
затем добавьте конкретную платформу Android: cordova platform add [email protected]
.
Удачи!:)
Ответ 16
У меня были те же проблемы. Я решил проблему, обновив gradle.build для каждого подмодуля до последней версии компилятора.
Ответ 17
Все отлично, но никто из вас не объяснил, где скачать инструменты для сборки SDK
![Everything is greate but none of you explained where to download the SDK build tools]()
Ответ 18
Другое решение:
перейдите к
\sdk\extras\android\m2repository\com\android\support\appcompat-v7\23.x.x
откройте файл .aar
с 7-zip или winrar, в папке res удалите папку values-23
и сохраните изменения.
Ответ 19
on module: app (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'
}
project: nameAppXXXX (Gradle)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
allprojects {
repositories {
jcenter()
}
}
и отредактируйте свою активность AppCompatActivity, например, Activity:
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);
}
}
Ответ 20
![Менеджер SDK]()
Убедитесь, что все это в актуальном состоянии.
Ответ 21
Обновление Android Studio.
У меня была эта проблема с Android Studio 1.3.1, и ни один из других ответов не работал у меня, но после обновления до 1.5.1 проблем не было.
Ответ 22
Если вы используете телефонную кросс-платформу и получили такую же проблему выше,
просто удалите платформу Android с помощью команды ниже.
телефонная платформа удалить андроид
И добавьте его снова.
телефонная платформа добавить android
Тогда проблема решена для меня.
Ответ 23
Как уже упоминали другие, ваша compile sdk version
должна соответствовать основной версии вашей support library's
. Это, однако, также актуально для subprojects
если они у вас есть.
В этом случае вы можете настроить компиляцию версий SDK для ваших subprojects
с помощью следующего скрипта:
subprojects { subproject ->
afterEvaluate{
if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
}
}
}
}
Добавьте этот скрипт в свой корневой файл build.gradle
.
Ответ 24
Если вы получаете ошибки даже после загрузки новейших SDK и Android Studio, вот что я сделал:
- Загрузите последнюю версию SDK
- Открыть файл-Структура проекта (Ctrl + Alt + Shift + S)
- В модулях выберите приложение
- На вкладке свойств: измените версию SDK для компиляции в API 23 Android 6.0 marshmallow (последняя версия)
Я надеюсь, что это поможет кому-то, чтобы он не страдал, как я это делал в течение этих двух дней.