我在更新到最新的支持库版本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'.

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

什么好主意吗?


当前回答

当您尝试将targetSDKVersion 26更改为25时,就会发生这种情况 我发现解决方案没有资源找到匹配给定的名称: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'
            }
        }
    }
}

to

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'
            }
        }
    }
}

其他回答

我在react-native-youtube和react-native-orientation上也有类似的错误。

搞清楚了,那就是建造。这些项目的gradle使用compileSdkVersion 23,但Feature: 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"
            }
        }
    }
}

我也遇到过这个问题,你只需要做2个改变:

文件名称:android/build。Gradle在下面的代码中提到这一点

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

文件名称:android/app/build.gradle 像这样修改你的complesdk版本和buildToolVersion:

compileSdkVersion 26 buildToolsVersion "26.0.2"

而在

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

清除你的项目并重新构建。

./gradlew  app:clean app:assembleDebug

但当targetSdkVersion或compileSdkVersion为25时,它就不起作用了。

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

我的一个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)

单击Ok并重新构建项目。

下面的链接显示了我所遵循的步骤的设置

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