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


215

У мене виникла ця проблема під час оновлення до останньої версії бібліотеки підтримки 26.0.0 ( https://developer.android.com/topic/libraries/support-library/reitions.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/reitions.html#26-0-1


4
Це не спрацювало для мене. Мені довелося оновити сервіси google play до 11.2, і тоді з’явилася вищезгадана помилка, і ваша відповідь не допомогла. Я також оновив усі матеріали підтримки до 26.0.1, але все одно не пощастило. Чи є у вас інші ідеї?
Nandor Poka

Але оновлення до 26 також матиме великий вплив на багато інших речей. У тому числі сповіщення не працюють, поки не створені належні канали для Android 8.0, правда?
Патрик

5
@patric Його компіляційний SDK не націлений на SDK.
Користувач XH6

Якщо це рішення не допоможе для вас, перегляньте відповідь Сема нижче.
Бенні

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
це працювало для мене. видалено + з усіх, щоб позбутися попереджень
Qadir Hussain

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

1
Вам не потрібно оновлювати цю функцію targetSdkVersionдля роботи. Якщо встановити, що до 26 буде мати інші наслідки - тобто ви повинні зробити свою програму сумісною для Android 8.0.
ataulm

в якому файлі я повинен додати ці речі, чи можна вам керувати @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
додавання нижче до root 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 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. це вирішило проблему для мене.

EDIT: моє targetSDKVersionтакож було встановлено як26


8

У мене була аналогічна помилка щодо орієнтації на реакцію-рідний-ютуб та реакцію-рідну.

З'ясували, що build.gradle цих проектів використовує, compileSdkVersion 23окрім функції api 26(android 8), додано Feature: android: keyboardNavigationCluster .

Так як виправити?

Один із способів легко виправити це - відредагувати /android/build.gradle (!!! НЕ /android/app/build.gradle) та додати цей код у нижній частині файлу.

Це дозволяє змусити SDK та BuildTool-версії, якими користуються ваші підмодулі:

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 змінити версію complsdk та buildToolVersion так:

compileSdkVersion 26 buildToolsVersion "26.0.2"

і в

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

7

У мене була та сама проблема з моїм проектом Ionic 2, і все, що я робив, щоб вирішити проблеми

  • Відкрийте "ionic_project_folder / platforms / android / project.properties"
  • Змініть target = android-25 на target = 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'
                }
            }
        }
    }

чи можете ви поділитися додатковою інформацією з кодом, щоб зрозуміти відповідь.
Праги

Зазвичай краще пояснити рішення, а не просто розміщувати кілька рядків анонімного коду. Ви можете прочитати Як написати гарну відповідь , а також пояснити відповіді на основі коду
Anh Pham

1
Дякую! Найкраща відповідь. По суті залежності проекту (проекти node_modules) мали різні версії sdk. Додавання цього коду до кореневого рівня build.gradle гарантує, що всі ці залежності використовують вказану версію sdk, і проект зможе побудувати. : D
Nigh7Sh4de

4

Після оновлення андроїд-студії до 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

В андроїд-студії
клацніть правою кнопкою миші на проекті (оскільки у мене був проект Кордова, у мене були CordovaLib та android: у моєму випадку я вибрав android),

  1. Виберіть Відкрити налаштування модуля
  2. У спливаючому моді Project Structure виберіть проект у розділі модулів на бічній панелі (знову ж андроїд у моєму випадку)
  3. Перейдіть на вкладку Залежності
  4. Натисніть на зелену кнопку плюс у верхньому правому куті
  5. Виберіть залежність бібліотеки
  6. Виберіть додаток-compat-v7 зі спадного меню
  7. Очистити проект та відновити

Це набагато простіший спосіб виправити це, ніж вручну редагувати всі файли.
Роберт Лібераторе

2

Я вдарив це нещодавно і пам’ятаю, звідки воно походить. Це невідповідність між версією Xamarin.Android. * Та встановленою версією Android SDK.

Поточні 15.5.3нові проекти за замовчуванням VS2017 для nuGet Xamarin.Android.*є, 25.4.0.2а встановлення VS за замовчуванням для розробки крос-платформ є такими пакетами Android SDK:

  • Android 7.1- Нуга
    • Платформа SDK для Android 25
    • API API Intel x86 Atom System Image

Якщо ви оновлювали вам рішення NuGet для Xamarin.Android.*до , 26.1.0.1то вам потрібно буде встановити слідувати в Android SDK:

  • Android 8.0- Oreo
    • Платформа SDK для Android 26
    • API API Intel x86 Atom System Image

2

Я зіткнувся з тією ж проблемою для одного з мого проекту PhoneGap (Android studio 3.0.1). Для вирішення цього питання я дотримувався наступного кроку

1) Клацніть правою кнопкою миші на назві проекту (У моєму випадку android), виберіть "Відкрити налаштування модуля"

2) Виберіть модулі (android та CordovaLib)

3) Клацніть властивості вгорі

4) Оберіть версію компіляції SDK (я вибрав API 26: Android 8.0)

5) Оберіть версію інструментів побудови (я вибрав 26.0.2)

6) Сумісність із джерелами (1.6)

7) Цільова сумісність (1.6)

Клацніть Ок і відновіть проект.

Наступне посилання показує моє налаштування для кроку, який я дотримувався

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


2

коли ви намагаєтесь змінити targetSDKVersion 26 на 25, це сталося, тоді було знайдено рішення "Не знайдено жодного ресурсу, який би відповідав даному імені: 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

Цю проблему я отримав, коли збираю reakct-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

Для всіх, хто використовує нативну скрипт і стикається з цим питанням: ви можете додати

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'

Будь ласка, використовуйте лише англійську мову на цьому сайті . Якщо ви віддаєте перевагу використовувати португальську, є Stack Overflow em Português .
Том

-1

Просто очистіть проект і будуйте заново.

./gradlew  app:clean app:assembleDebug

Але це не працює, коли targetSdkVersion або compileSdkVersion дорівнює 25.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.