Не найдено ни одного ресурса, соответствующего имени: 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

Пользователь XH6
источник
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"
peteroid
источник
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"
            }
        }
    }
}
Süther
источник
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'
}
Revansiddh
источник
7

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

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

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

Aweda
источник
Мой проект изменился на 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'
Ajayacharya
источник
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. Очистить проект и восстановить
Jac
источник
Это гораздо проще исправить, чем вручную редактировать все файлы.
Роберт Либераторе
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
dskow
источник
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

обновить их в Gradle

compileSdkVersion 27 buildToolsVersion '27 .0.1 '

Artist404
источник
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в корне вашего проекта.

palia5
источник
0

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

Ph0b0x
источник
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+
Amr.Ayoub
источник
0

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

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

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

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

S HemaNandhini
источник
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.

Ездра
источник