Ошибка получения родительского элемента для элемента: ресурс не найден, который соответствует указанному имени после обновления до 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
Ответ 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
Убедитесь, что все это в актуальном состоянии.
Ответ 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 (последняя версия)
Я надеюсь, что это поможет кому-то, чтобы он не страдал, как я это делал в течение этих двух дней.