找不到与给定名称匹配的资源:attr 'android:keyboardNavigationCluster'。更新到支持库 26.0.0 时

No resource found that matches the given name: attr 'android:keyboardNavigationCluster'. when updating to Support Library 26.0.0

我在更新到最新的支持库版本 26.0.0 (https://developer.android.com/topic/libraries/support-library/revisions.html#26-0-0) 时遇到了这个问题:

Error:(18, 21) No resource found that matches the given name: 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: Failed to execute 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

有什么想法吗?

只需清除您的项目并重新构建。

./gradlew  app:clean app:assembleDebug

但targetSdkVersion或compileSdkVersion为25时不生效

我在 gradle 中通过更新 sdk 版本和工具解决了这个问题 compileSdkVersion 26 buildToolsVersion "26.0.1"

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

我必须更改所有依赖项 build.gradle 文件中的 compileSdkVersion = 26buildToolsVersion = '26.0.1'

改变 编译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。

我遇到了这个完全相同的错误,并且在谷歌上到处搜索,试图找出我做错了什么,因为这是生成的构建值 26 代码,而不是我提供的样式。我尝试了从 Gradle 4.0 到 Android Studio preview 3.0 到 Canary 频道的一切,随便你怎么说。

我从来没有在网上找到答案。最后,我能够回到标准的 Dev Android Studio 和 2.3.3 Gradle 因为我最终不小心修复了它:).

原来我非常专注于更新我的库项目,以至于我没有注意到错误是由嵌套在我的库项目中的未使用的子模块(演示应用程序)引起的。一旦我更新了子模块以匹配 26 个构建工具和 26 个以上的设计和支持库,我的问题就消失了。

不确定这是否也是您所看到的,但就我个人而言,我只是更新了 lib 以再次发布,所以并不关心示例应用程序模块,并且该错误肯定与 26 sdk 有关我只在 lib 模块中接触过,所以没有考虑检查另一个。所以这一直是我的问题。希望这也能解决你的问题。我在 2 个库项目中遇到了这个错误,并且在两个项目中都修复了它。

祝你好运,如果这不能解决你的问题,请分享解决的问题。顺便说一句,26.0.01 构建工具和 26.1.0 设计和支持是我最终要去的地方,尽管 26.0.1 也工作得很好。

将 android studio 更新到 3.0 后,如果出现此错误,只需更新 gradle 属性,这些设置解决了我的问题:

compileSdkVersion 26

targetSdkVersion 26

buildToolsVersion '26.0.2'

我遇到了这个确切的错误,我意识到我的 compileSdkVersion 设置为 25,我的 buildToolsVersion 设置为 "26.0.1"

所以我只是将 compileSdkVersion 更改为 26 并同步了 Gradle。它为我解决了问题。

编辑:我的 targetSDKVersion 也被设置为 26

这个问题是由我需要 26 版编译的库之一引起的。

将 targetSdkVersion 设置为 26 会导致其他问题,您将不得不调整您的应用程序以适应 Oreo 平台。这不是适合所有人的正确解决方案。

只是让 compileSdkVersion to 26buildToolsVersion to 26.0.2 对我有用。

还应该更新所有 支持库以使用 26.1.0 或更高版本。

确保您的开发环境中有 Android SDK 8.0。我在 MAC 上遇到了同样的问题,安装 SDK 8.0 及其工具修复了它。我在 Windows 上遇到了同样的问题。我现在正在下载SDK。

在 gradle

中更新这些

compileSdkVersion 27 buildToolsVersion '27.0.1'

在我的react-native项目中,这个错误是在react-native-fbsdk中产生的。按以下方式更新 react-native-fbsdk/android/build.gradle 可解决此问题。

compileSdkVersion 26
buildToolsVersion "26.0.1"
//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'
                }
            }
        }
    }

我也遇到了这个问题,你只需要进行 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'
}

我的一个 PhoneGap 项目 (Android studio 3.0.1) 也遇到了同样的问题。为了解决这个问题,我遵循了以下步骤

1) 右键单击​​项目名称(在我的案例中 android),select "Open Module Settings"

2) Select 个模块(android 和 CordovaLib)

3) 单击顶部的属性

4)选择编译SDK版本(我选择了API26:Android8.0)

5)选择构建工具版本(我选择了26.0.2)

6) 源兼容性 ( 1.6)

7) 目标兼容性 ( 1.6)

单击确定并重建项目。

以下link 显示了我已遵循的步骤设置

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

我更新了我的项目 app/build.gradle 以拥有

compileSDkVersion 26
buildToolsVersion '26.0.1'

然而,问题实际上出在 react-native-fbsdk 包上。我不得不在 node_modules/react-native-fbsdk/android/build.gradle.

中更改相同的设置

我的 Ionic 2 项目也遇到了同样的问题,我所做的只是

  • 打开"ionic_project_folder/platforms/android/project.properties"
  • target=android-25更改为target=android-26
  • 运行 ionic build --release android

希望这对某人有所帮助!

我通过在 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'
}

我最近打了这个,还记得它是从哪里来的。 Xamarin.Android.* 版本与安装的 Android SDK 版本不匹配。

当前 VS2017 15.5.3 nuGet Xamarin.Android.* 的新项目默认值是 25.4.0.2 并且跨平台开发的默认 VS 安装是以下 Android SDK 包:

  • Android 7.1 - 牛轧糖
    • Android SDK 平台 25
    • Google API Intel x86 Atom 系统映像

如果您将 Xamarin.Android.* 的解决方案 nuGet 升级到 26.1.0.1,那么您将需要在 Android SDK 中安装以下内容:

  • Android 8.0 - 奥利奥
    • Android SDK 平台 26
    • Google API Intel x86 Atom 系统映像

对于使用 nativescript 并遇到此问题的任何人:您可以添加

compileSdkVersion 26
buildToolsVersion '26.0.1'

在 App_Resources/Android/app.gradle(在 android { 下)

然后在您的项目根目录中 运行 tns platform remove androidtns build android

在 android studio 中,
右键单击该项目(因为我有一个 Cordova 项目,所以我有 CordovaLib 和 android:我 selected android 在我的例子中),

  1. Select 打开模块设置
  2. 在弹出的项目结构模式中 select 侧面板模块部分中的项目(在我的例子中也是 android)
  3. 单击“依赖项”选项卡
  4. 点击右上角的绿色加号按钮
  5. Select 库依赖性
  6. Select app-compat-v7 来自下拉列表
  7. 清理项目并重建

我对 ionic 也有同样的问题。

cordova platform remove android
cordova platform add android@6.4.0

并在 platform/android/projet.properties

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

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

当您尝试将 targetSDKVersion 26 更改为 25 时发生 我找到了 No resource found that matches the given name: attr 'android:keyboardNavigationCluster' 的解决方案。更新到支持库 26.0.0

只需从您的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'
            }
        }
    }
}

为此你必须做以下事情 1.right 点击项目点击。

2.open模块设置->属性选项卡->将编译sdk和构建工具版本改为26,26.0.0.

3.click 好的。

经过一个小时的尝试,它对我有用。

编译react-native-fbsdk时遇到这个问题

我通过更改 react-native-fbsdk

build.gradle 解决了这个问题

来自

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

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

我在 react-native-youtube 和 react-native-orientation 上遇到了类似的错误。

发现,这些项目的 build.gradle 使用了 compileSdkVersion 23,但特征:android:keyboardNavigationCluster 是自 api 26 (android 8) 以来添加的。

那怎么解决呢?

一种轻松解决此问题的方法是编辑 /android/build.gradle(!!! 而不是 /android/app/build.gradle)并在底部添加这些代码文件。

这允许您强制您的子模块使用的 SDK 和 BuildTool-Version:

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

我通过执行以下操作解决了这个问题:

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'