Не найдено ни одного ресурса, соответствующего имени: attr 'android: keyboardNavigationCluster'. при обновлении до библиотеки поддержки 26.0.0


215

У меня возникла эта проблема при обновлении до последней версии библиотеки поддержки 26.0.0 ( https://developer.android.com/topic/libraries/support-library/revisions.html#26-0-0 ):

Ошибка: (18, 21) Не найден ресурс, соответствующий указанному имени: attr 'android: keyboardNavigationCluster'.

/.../app/build/intermediates/res/merged/beta/debug/values-v26/values-v26.xml
Error:(15, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:(18, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:(15, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:(18, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:Execution failed for task ':app:processBetaDebugResources'.

com.android.ide.common.process.ProcessException: не удалось выполнить aapt

Файл из библиотеки поддержки:

<style name="Base.V26.Widget.AppCompat.Toolbar" parent="Base.V7.Widget.AppCompat.Toolbar">
    <item name="android:touchscreenBlocksFocus">true</item>
    <item name="android:keyboardNavigationCluster">true</item>
</style>

Мы используем следующие версии:

ext.COMPILE_SDK_VERSION = 26
ext.BUILD_TOOLS_VERSION = "26.0.1"

ext.MIN_SDK_VERSION = 17
ext.TARGET_SDK_VERSION = 26
ext.ANDROID_SUPPORT_LIBRARY_VERSION = "26.0.0"
ext.GOOGLE_PLAY_SERVICES_LIBRARY_VERSION = "11.0.2"

compile 'com.android.support:appcompat-v7:' + ANDROID_SUPPORT_LIBRARY_VERSION
compile 'com.android.support:design:' + ANDROID_SUPPORT_LIBRARY_VERSION
compile 'com.android.support:recyclerview-v7:' + ANDROID_SUPPORT_LIBRARY_VERSION

Любые идеи?


5
остается проблема с последним выпуском (26.0.1): developer.android.com/topic/libraries/support-library/...
— Alécio Carvalho

Ответы:


314

Я смог решить эту проблему, обновив версию SDK и инструменты в Gradle compileSdkVersion 26 buildToolsVersion "26.0.1"

и support library 26.0.1 https://developer.android.com/topic/libraries/support-library/revisions.html#26-0-1


4
Это не сработало для меня. Мне пришлось обновить сервисы Google Play до 11.2, а затем появилась вышеупомянутая ошибка, и ваш ответ не помог. Я также обновил всю поддержку до 26.0.1, но все равно не повезло. У тебя есть другие идеи?
— Нандор Пока

Но обновление до 26 также будет иметь большое влияние на многие другие вещи. Включая уведомления, не работающие, пока не созданы надлежащие каналы для Android 8.0, верно?
— Патрик

5
@patric Его SDK для компиляции не предназначен для SDK.
— пользователь

Если это решение не работает для вас, посмотрите ответ Сэма ниже.
— Бенни

2
Что делать, если я не хочу обновлять compileSdkVersion с 25 из-за требований бизнеса? Как от этого избавиться?
— binaryKarmic

53

Изменить версию SDK для компиляции:

compileSdkVersion 26

Версия инструмента сборки:

buildToolsVersion "26.0.1"

Целевая версия SDK:

targetSdkVersion 26

зависимости:

compile 'com.android.support:appcompat-v7:26+'
compile 'com.android.support:design:26+'
compile 'com.android.support:recyclerview-v7:26+'
compile 'com.android.support:cardview-v7:26+'

Синхронизировать Gradle.


2
получение предупреждения: избегайте использования + в номере версии.
— Кадир Хуссейн

2
это сработало для меня. убрал + из всех, чтобы избавиться от предупреждений
— Кадир Хуссейн

2
не используйте +, вы хотите получать воспроизводимые сборки и иметь полный контроль над своими зависимостями. Вы не хотите, чтобы ваше приложение начинало глючить после новой сборки, потому что оно незаметно обновило
— библиотеку

1
Вам не нужно обновлять, targetSdkVersionчтобы это работало. Установка этого значения в 26 будет иметь другие последствия - т.е. вы должны сделать ваше приложение совместимым с Android 8.0.
— 17

в каком файле я должен добавить эти вещи, вы можете руководствоваться @ataulm
— Рави Мехта

35

Я должен был изменить compileSdkVersion = 26и buildToolsVersion = '26.0.1'во всех моих build.gradleфайлах зависимостей


2
вы должны использовать константу в gradle.properties для всех ваших номеров версий и использовать ее в файлах build.gradle: api "com.android.support:appcompat-v7:$ANDROID_COMPATIBILITY_VERSION"
— Snicolas

13

В моем реактивном проекте эта ошибка генерируется в react-native-fbsdk. Обновление react-native-fbsdk/android/build.gradleследующим образом устраняет проблему.

compileSdkVersion 26
buildToolsVersion "26.0.1"

7
добавление ниже к корню build.gradle не работало, не нужно редактировать файл subprojects { afterEvaluate {project -> if (project.hasProperty("android")) { android { compileSdkVersion 26 buildToolsVersion '26.0.1' } } } }
— build.gradle

9

Я столкнулся с той же самой ошибкой и все время гуглял, пытаясь выяснить, что я делаю неправильно, так как генерируется код значений сборки 26, а не стили, которые я предоставил. Я перепробовал все, от Gradle 4.0 до Android Studio Preview 3.0 и канареечного канала.

Я никогда не нашел ответ в Интернете. В конце концов, я смог вернуться к стандартному Dev Android Studio и 2.3.3 Gradle, так как я случайно его исправил :).

Оказалось, что я был так сосредоточен на обновлении своего библиотечного проекта, что не заметил, что ошибка была вызвана неиспользуемым субмодулем (демонстрационным приложением), который вложен в мой библиотечный проект. Как только я обновил подмодуль, чтобы он соответствовал 26 инструментам сборки и 26+ библиотекам проектирования и поддержки, моя проблема ушла.

Не уверен, что это то, что вы видите, но лично я только обновлял библиотеку, чтобы выпустить ее снова, поэтому не заботился о модуле примера приложения, и ошибка, похоже, была связана с 26 SDK, к которым я только прикасался модуль lib, поэтому не думал проверять другой. Так что это была проблема для меня. Надеюсь, это исправит и вас. У меня была эта ошибка в двух проектах библиотеки, и она исправила в обоих.

Goodluck в любом случае, и если это не решит вашу проблему, пожалуйста, поделитесь тем, что сделал. BTW 26.0.01 инструменты для сборки и 26.1.0 дизайн и поддержка - это то, к чему я в итоге и пришел, хотя 26.0.1 также работала нормально.


Это действительно решает проблему (если у вас несколько модулей)
— Д. Сергеев

8

У меня была точная ошибка, и я понял, что мой compileSdkVersionбыл установлен на 25и мой buildToolsVersionбыл установлен на "26.0.1".

Так что я просто изменил compileSdkVersionк 26и синхронизируются с Gradle. это решило проблему для меня.

РЕДАКТИРОВАТЬ: мой targetSDKVersionтакже был установлен как26


8

У меня была похожая ошибка для response-native-youtube и реагировать-native-ориентации.

Выяснилось, что build.gradle этих Project используют, compileSdkVersion 23но с тех пор была добавлена ​​Feature: android: keyboardNavigationCluster api 26(android 8).

Так как исправить?

Один из способов легко это исправить - отредактировать ваш /android/build.gradle (!!! NOT /android/app/build.gradle) и добавить этот код внизу файла.

Это позволяет вам принудительно использовать SDK и BuildTool-Version, которые используют ваши подмодули:

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 27
                buildToolsVersion "27.0.2"
            }
        }
    }
}

7

Я также столкнулся с этой проблемой, вам просто нужно сделать 2 изменения:

Имя файла: android / build.gradle упомяните этот код ниже

subprojects {
   afterEvaluate { 
     project -> if (project.hasProperty("android")) { 
       android { 
        compileSdkVersion 26 buildToolsVersion '26.0.2' 
       } 
      }
    } 
}

Имя файла: android / app / build.gradle измените свою версию compliesdk и buildToolVersion следующим образом:

compileSdkVersion 26 buildToolsVersion "26.0.2"

И в

dependencies {
    compile 'com.android.support:appcompat-v7:26.0.2'
}

7

У меня была та же проблема с моим проектом Ionic 2, все, что я сделал, чтобы решить проблемы,

  • Откройте "ionic_project_folder / platform / android / project.properties"
  • Изменить цель = Android-25 на цель = Android-26
  • Бегать ionic build --release android

Надеюсь, это поможет кому-то!


Мой проект изменился на target=android-26, но все еще показывает эту ошибку
— Yuyang He

6
//Adding this to the root build.gradle solved my problem, thanks @Yalamber
subprojects {
        afterEvaluate { project ->
            if (project.hasProperty("android")) {
                android {
                    compileSdkVersion 26
                    buildToolsVersion '26.0.2'
                }
            }
        }
    }

Можете ли вы поделиться информацией с кодом для лучшего понимания вашего ответа.
— Prags

Обычно лучше объяснить решение, чем просто разместить несколько строк анонимного кода. Вы можете прочитать Как мне написать хороший ответ , а также Объяснить полностью основанные на коде ответы
— Anh Pham

1
Спасибо! Лучший ответ. По существу, зависимости проекта (проекты node_modules) имели разные версии SDK. Добавление этого кода на корневой уровень build.gradle гарантирует, что все эти зависимости используют указанную версию SDK, и проект может собираться. : D
— Nigh7Sh4de

4

После обновления вашей Android Studio до 3.0, если эта ошибка возникает, просто обновите свойства gradle, вот настройки, которые решили мою проблему:

compileSdkVersion 26

targetSdkVersion 26

buildToolsVersion '26.0.2'

26.0.2сборка версии исправила вещи для меня.
— Карл Тейлор

3

Я обновил свой проект, app/build.gradleчтобы иметь

compileSDkVersion 26
buildToolsVersion '26.0.1'

Однако проблема была на самом деле с react-native-fbsdkпакетом. Мне пришлось изменить те же настройки в node_modules/react-native-fbsdk/android/build.gradle.


3

В Android Studio
щелкните правой кнопкой мыши на проекте (так как у меня был проект Cordova, у меня был CordovaLib и Android: я выбрал Android в моем случае),

  1. Выберите «Открыть настройки модуля».
  2. В появившемся модальном окне «Структура проекта» выберите проект в разделе «Модули» на боковой панели (снова в моем случае Android)
  3. Нажмите на вкладку Зависимости
  4. Нажмите на зеленую кнопку плюс в верхнем правом углу
  5. Выберите Зависимость библиотеки
  6. Выберите app-compat-v7 из выпадающего
  7. Очистить проект и восстановить

Это гораздо проще исправить, чем вручную редактировать все файлы.
— Роберт Либераторе

2

Я недавно попал в это и помню, откуда это взялось. Это несоответствие между версией Xamarin.Android. * И установленной версией Android SDK.

Текущие VS2017 15.5.3новых значений по умолчанию для проекта NuGet Xamarin.Android.*являются 25.4.0.2и по умолчанию VS установки для разработки кроссплатформенной являются следующими пакетами Android SDK:

  • Android 7.1- Нуга
    • Платформа Android SDK 25
    • API Google Образ системы Intel x86 Atom

Если вы обновили свое решение nuGet для Xamarin.Android.*до, 26.1.0.1вам нужно будет установить следующее в Android SDK:

  • Android 8.0- Oreo
    • Платформа Android SDK 26
    • API Google Образ системы Intel x86 Atom

2

Я столкнулся с той же проблемой для одного из моих проектов PhoneGap (Android Studio 3.0.1). Чтобы решить эту проблему, я следовал, следующий шаг

1) Щелкните правой кнопкой мыши на имени проекта (в моем случае Android), выберите «Открыть настройки модуля»

2) Выберите модули (Android и CordovaLib)

3) Нажмите свойства сверху

4) Выберите Compile SDK версию (я выбрал API 26: Android 8.0)

5) Выберите Build Tools Version (я выбрал 26.0.2)

6) Совместимость с источниками (1.6)

7) Целевая совместимость (1.6)

Нажмите Ok и пересоберите проект.

Следующая ссылка показывает мои настройки для шага, за которым я следовал

https://app.box.com/s/o11xc8dy0c2c7elsaoppa0kwe1d94ogh https://app.box.com/s/ofdcg0a8n0zalumvpyju58he402ag1th


2

при попытке изменить targetSDK версии 26 на то время, когда это произошло, я нашел решение «Не найден ресурс», соответствующий указанному имени: attr 'android: keyboardNavigationCluster'. при обновлении до библиотеки поддержки 26.0.0

Просто Chage Этот код из вашего Build.gradle

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '26.0.1'
            }
        }
    }
}

в

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.2.0'
            }
        }
    }
}

2

Я получил эту проблему при компиляции реагировать-native-fbsdk

Я решил эту проблему путем изменения build.gradleвreact-native-fbsdk

из

compile('com.facebook.android:facebook-android-sdk:4.+')

в

compile('com.facebook.android:facebook-android-sdk:4.28.0')

1

Эта проблема была вызвана одной из библиотек для меня, которая нуждалась в версии 26 для компиляции.

Установка targetSdkVersion в значение 26 вызовет другие проблемы, и вам придется настроить приложение для адаптации к платформе Oreo. Это не правильное решение для всех.

Просто заработал compileSdkVersion to 26и buildToolsVersion to 26.0.2работал на меня.

Нужно также обновить все их библиотеки поддержки, чтобы использовать 26.1.0 или позже.



1

Я решил эту проблему, внеся некоторые изменения в файл build.gradle

Изменения в root build.gradle следующие:

subprojects {
   afterEvaluate { 
     project -> if (project.hasProperty("android")) { 
       android { 
        compileSdkVersion 26 
        buildToolsVersion '26.0.1' 
       } 
      }
    } 
}

В build.gradle внесены следующие изменения:

compileSdkVersion 26 
buildToolsVersion "26.0.1"

и

dependencies {
    compile 'com.android.support:appcompat-v7:26.0.1'
}

1

Для тех, кто использует nativescript и сталкивается с этой проблемой: вы можете добавить

compileSdkVersion 26
buildToolsVersion '26.0.1'

в App_Resources / Android / app.gradle (под android {)

Затем запустите tns platform remove androidи tns build androidв корне вашего проекта.


0

Убедитесь, что у вас Android SDK 8.0 в вашей среде разработки. У меня была та же проблема на моем MAC, и я установил SDK 8.0, и его инструменты устранили это. У меня такая же проблема на Windows. Я сейчас скачиваю SDK.


0

У меня была такая же проблема с ионной.

cordova platform remove android
cordova platform add android@6.4.0

И заменить в платформе / Android / Projet.properties

cordova.system.library.1=com.android.support:support-v4+

к

cordova.system.library.1=com.android.support:support-v4:26+

0

Для этого вы должны сделать следующее: 1. щелкните правой кнопкой мыши проект.

2. открыть настройки модуля-> на вкладке свойств-> изменить версию SDK для компиляции и сборки на 26,26.0.0.

3. Нажмите ОК.

Это работает для меня через час попробовал.


0

Я решил эту проблему, сделав следующее:

compileSdkVersion 26
buildToolsVersion "26.0.1"

compile 'com.android.support:appcompat-v7:26.0.1'
compile 'com.android.support:design:26.0.1'
compile 'com.android.support:cardview-v7:26.0.1'
compile 'com.android.support:recyclerview-v7:26.0.1'

Пожалуйста, используйте только английский на этом сайте . Если вы предпочитаете использовать португальский, есть переполнение стека em Português .
— Том

-1

Просто очистите ваш проект и постройте снова.

./gradlew  app:clean app:assembleDebug

Но это не работает, когда targetSdkVersion или compileSdkVersion равен 25.

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