找不到与给定名称匹配的资源: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卡瓦略

Answers:


314

我可以通过更新Gradle中的SDK版本和工具来解决此问题 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,但仍然没有运气。你还有其他建议吗?
Nandor Poka

但是更新到26也将对许多其他方面产生重大影响。包括在为Android 8.0创建正确的频道之前通知不起作用对吗?
Patric's

5
@patric它的编译SDK不是目标SDK。
XH6用户

如果此解决方案不适合您,请在下面查看Sam的答案。
Benny

2
如果由于业务需要而我不想将compileSdkVersion从25更新怎么办?如何摆脱这个?
binaryKarmic '17

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

同步摇篮。


2
收到警告:避免在版本号中使用+。
卡迪尔·侯赛因

2
这对我有用。从所有人中删除+摆脱警告
Qadir Hussain

2
不要使用+,您希望获得可复制的版本并完全控制您的依赖项。您不希望您的应用在新构建后开始出现错误,因为它悄悄升级了一个库...
Snicolas

1
您无需更新targetSdkVersion即可正常运行。将其设置为26还会有其他含义-即您必须使您的应用程序兼容Android 8.0。
ataulm

我必须在哪个文件中添加此内容,您可以指导@ataulm
Ravi Mehta

35

我不得不改变 compileSdkVersion = 26buildToolsVersion = '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中添加以下内容即可,无需编辑模块的build.gradle文件subprojects { afterEvaluate {project -> if (project.hasProperty("android")) { android { compileSdkVersion 26 buildToolsVersion '26.0.1' } } } }
Yalamber

9

我碰到了这个完全相同的错误,并且一直在谷歌搜索中试图找到我做错的地方,因为它生成的是构建值26代码而不是我提供的样式。我尝试了从Gradle 4.0到Android Studio Preview 3.0到金丝雀频道的所有内容,您可以命名。

我从未在网上找到答案。最后,我最终回到标准的Dev Android Studio和2.3.3 Gradle,因为我最终不小心对其进行了修复:)。

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

不知道这是否也是您所看到的,但是就我个人而言,我只是在更新lib以便再次发布,因此不再关心示例应用程序模块,而且错误肯定与我只涉及的26 sdk有关lib模块因此不打算检查另一个模块。所以这一直是我的问题。希望这也能解决您的问题。我在2个图书馆项目中都有此错误,并且在两个项目中均已修复。

无论哪种方式,祝您好运,如果这不能解决您的问题,请分享。BTW 26.0.01的构建工具以及26.1.0的设计和支持是我最终要解决的问题,尽管26.0.1也可以正常工作。


它确实解决了问题(如果您有多个模块)
D. Sergeev

8

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

所以,我只是改变了compileSdkVersion26和同步的摇篮。它为我解决了问题。

编辑:我targetSDKVersion也被设置为26


8

对于react-native-youtube和react-native-orientation,我也遇到了类似的错误。

弄清楚,那些Project的build.gradle使用了,compileSdkVersion 23但自api 26(android 8)起添加了功能:android:keyboardNavigationCluster 。

那么如何解决?

轻松解决此问题的一种方法是编辑/android/build.gradle(!!!不/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 / 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'
                }
            }
        }
    }

您可以与代码共享更多信息,以便对答案有更多的了解。
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. 清理项目并重建

与手动编辑所有文件相比,这是解决此问题的简便得多的方法。
Robert Liberatore

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
    • Google API Intel x86 Atom系统映像

如果您将解决方案nuGet升级为Xamarin.Android.*26.1.0.1则需要在Android SDK中安装以下组件:

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

2

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

1)右键单击项目名称(在我的情况下为android),选择“打开模块设置”

2)选择模块(android和CordovaLib)

3)点击顶部的属性

4)选择Compose 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时

恰好从您的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

编译react-native-fbsdk时出现此问题

我通过改变解决了这个问题build.gradlereact-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 26buildToolsVersion 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 androidtns 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

并替换为platform / 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.单击确定。

经过一个小时的尝试,它为我工作。



-1

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

./gradlew  app:clean app:assembleDebug

但是,当targetSdkVersion或compileSdkVersion为25时,则无法使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.