ошибка ресурса в студии Android после обновления: ресурс не найден


101

После недавнего обновления Android Studio у нас возникли проблемы с компиляцией проекта, который ранее работал. Сначала мы получали следующую ошибку:

/Users/james/Development/AndroidProjects/myapp/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.0/res/values-v23/values-v23.xml
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.

Я обновил цель сборки sdk в нашем файле gradle до 23, что устранило эту конкретную проблему, но оставило нам массу ошибок пакета apache.http (в частности, тонна пакетов apache, которые мы используем для HTTP-материалов, теперь исчезли в SDK 23).

Что я хочу сделать, так это решить странную ошибку ресурса, но без обновления до sdk 23. У меня нет времени, чтобы прямо сейчас переписать нашу библиотеку инструментов, чтобы использовать любую новую реализацию компонентов apache http. У кого-нибудь есть идеи?


Разве вы не получаете ошибку в самом appcompat_v7 res / values-v23 / styles.xml (а не в вашем проекте)?
Solace

1
Не уверен, что понимаю ваш вопрос? У нас возникла проблема в сгенерированном файле, на что указывает путь к файлу в сообщении об ошибке, опубликованном выше.
Джеймс Добсон

Если ошибка возникает в сгенерированных файлах, вам необходимо обновить инструменты сборки в gradle, чтобы они соответствовали версии библиотеки. ie buildToolsVersion "23.0.1"
BK Batchelor

Ответы:


78

Измените версию appcompat в файле build.gradle обратно на 22.2.1 (или то, что вы использовали раньше).


5
Спасибо, это было решение. Я выполнил инструкции здесь: code.google.com/p/android/issues/detail?id=183122#makechanges, в частности, решение, предложенное Скоттом. Мне пришлось удалить 23.0.0 в моей папке sdk, удалить sdk версии 23 в диспетчере SDK, а затем выполнить чистку и перестройку
Джеймс Добсон,

4
Джеймс, спасибо за решение. Однако я чертовски поражен этой ситуацией с PITA - у меня никогда не было установлено appcompat-v7: 22.2.1 !!
Someone Somewhere

Есть ли способ сделать это в Eclipse?
Solace

10
@Solace Eclipse бесполезен
Back Packer

6
@BackPacker Нет. Android Studio - это проблема. У меня хороший компьютер, и Android Studio требует вечности, чтобы собрать простое приложение hello world.
TheRealChx101

197

Вам нужно установить 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'
}

1
Это будет работать, но вы обязательно захотите установить новую версию SDK. API 23 (платформа Android 6.0). Это позволит вам поддерживать новые устройства. Вот почему, когда вы меняете «версию appcompat» на более новую версию, вам потребуется более новая версия SDK.
JamesDeHart

4
Этот ответ намного лучше, чем вернуться к 22.2.1
Йорн Буйтинк,

4
Это, безусловно, идеальный ответ и, очевидно, правильный курс действий для большинства людей, однако он не отвечает на мой вопрос, который заключался в решении проблемы без обновления версии sdk. Это приведет к поломке библиотеки, от которой мы зависим, но у нас не было времени на обновление в то время. С тех пор мы обновили библиотеку, чтобы использовать новые функции, и теперь мы можем безопасно обновиться до SDK 23.
Джеймс Добсон

@RobertoB. Спасибо, это хорошая информация. Мы уже обновили нашу кодовую базу, чтобы использовать новые библиотеки apache, но, надеюсь, это поможет другим!
Джеймс Добсон

Как это связано с сообщениями об ошибках, которые сообщает OP? Я думаю, что compileSdkVersion - допустимый обходной путь, но использование устаревшей библиотеки apache - всего лишь косвенное требование.
mdelolmo

21

в файле build.gradle ваших проектов ... напишите, как показано ниже .. Я решил эту ошибку, изменив версию appcompat с v7.23.0.0 на v7.22.2.1 ..

dependencies

{

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

}

Ниже приведен снимок экрана для лучшего понимания.


1
Нет Нет Нет .... Я этого не ожидал! НО ЭТО РАБОТАЛО !! Какой тогда смысл обновлять до 23.0.1?
sud007

Этот получает мой +1: не всегда уместно просто обновлять все до последней версии сразу же, как кто-то говорит вам. Это отвечает на исходный вопрос и решает проблему для меня.
Марк Смит

10

Внимание, идет неправильный ответ! Но любой, у кого нет библиотек Apache, может найти

compileSdkVersion 23
buildToolsVersion "23.0.0"



//...


dependencies {
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.android.support:design:23.0.0'    

}

полезно, это помогло мне.


Почему у него такая проблема с библиотеками apache?
NinjaCoder

4

вам следует изменить compiledsdkversion и targetversion на 23 в файле Gradle сборки, относящемся к приложению. Убедитесь, что вы установили sdk 23, версия 6.0 до этого. Вы можете посмотреть этот видеоролик для получения дополнительной помощи. https://www.youtube.com/watch?v=pw4jKsOU7go


2

Если у вас возникают ошибки даже после загрузки новейшего SDK и Android Studio, я новичок: я сделал следующее: 1. Загрузите последний SDK (я был) 2. Откройте структуру файлового проекта (ctrl + alt + shift + S) 3. В модулях выберите приложение 4. На вкладке свойств ... измените версию компиляции sdk на api 23 Android 6.0 marshmallow (последняя)

убедитесь, что скомпилированная версия adk и инструменты сборки имеют одинаковую версию (23)

Надеюсь, это поможет кому-то, чтобы он не страдал так, как я эти пару дней.


2

Попробуйте сопоставить все версии:

compileSdkVersion 23
buildToolsVersion '23.0.0'
targetSdkVersion 23
compile 'com.android.support:appcompat-v7:23.0.0'

Для меня это работа.


1

compileSDK должен соответствовать версии appCompat. TargetSDK все еще может быть 22 (например, если вы еще не обновились до новой модели разрешений)


1

если у вас есть :

/Users/james/Development/AndroidProjects/myapp/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.0/res/values-v23/values-v23.xml
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.

ошибка, вы должны изменить ваш appcompat, buildtools, sdkк 23 , но, если вам не нравится , чтобы изменить его и должно быть в 22 сделать это:

  • собрать 23
  • цель 22

0

Это работает только тогда, когда build.grade был изменен на это:

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "blablabla"
        minSdkVersion 15
        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.android.support:appcompat-v7:22.0.0'
}

0

Я заметил, что у меня не установлен sdk 23. Поэтому я сначала установил его, а затем заново собрал свой проект. И все работало нормально. Также compilesdkVersion должен быть 23


0

Прежде всего,

Попробуйте проверить папку SDK, для меня это были mydocuments / appdata / sdk .... и т. Д. Таким образом, моя папка sdk не была полностью загружена, в основном это источник этой проблемы. Вам нужно либо использовать другой полностью загруженный SDK для Android (включая раздел «Инструменты» и дополнительные функции, которые вам действительно нужны), либо использовать SDK для eclipse, который вы могли загрузить ранее для своих разработок Eclipse для Android. Затем создайте-> очистите свой проект еще раз.

Стоит попробовать.


0

Выполните обновление для использования API 23 (Android 6.0) или верните версию appcompat-v7 на 22.2.2 в Gradle. Это работает для меня при добавлении службы Google Play


0

Метод 1. Отображается. Вы не установили Api 23. Поэтому установите API 23.

Способ 2:

Измените версию appcompat в файле build.gradle обратно на 22.0.1 (или меньше).

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