【问题标题】:No resource found that matches the given name: attr 'android:keyboardNavigationCluster'. when updating to Support Library 26.0.0找不到与给定名称匹配的资源:attr 'android:keyboardNavigationCluster'。更新到支持库 26.0.0 时
【发布时间】:2017-07-25 10:53:04
【问题描述】:

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

有什么想法吗?

【问题讨论】:

标签: android android-gradle-plugin android-support-library android-appcompat


【解决方案1】:

我能够通过更新 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

【讨论】:

  • 这对我不起作用。我不得不将google play服务升级到11.2,然后出现上述错误,您的回答没有帮助。我还将所有支持内容升级到 26.0.1,但仍然没有运气。您还有其他想法吗?
  • 但是更新到 26 也会对许多其他事情产生重大影响。包括在为 Android 8.0 创建适当的频道之前无法正常工作的通知,对吗?
  • @patric 它的编译SDK不是目标SDK。
  • 如果此解决方案不适合您,请查看下面 Sam 的回答。
  • 如果由于业务需求我不想从 25 更新 compileSdkVersion 怎么办?如何摆脱这种情况?
【解决方案2】:

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

【讨论】:

  • 收到警告:避免在版本号中使用 +。
  • 这对我有用。从所有人中删除 + 以消除警告
  • 不要使用 +,您希望获得可重现的构建并完全控制您的依赖项。您不希望您的应用在新构建后开始出现错误,因为它悄悄地升级了一个库...
  • 您无需更新targetSdkVersion 即可使用。将其设置为 26 会产生其他影响 - 即您必须使您的应用与 Android 8.0 兼容。
  • 我必须在哪个文件中添加这些东西你能指导@ataulm
【解决方案3】:

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

【讨论】:

  • 您应该在 gradle.properties 中为您的所有版本号使用一个常量,并在您的 build.gradle 文件中使用它:api "com.android.support:appcompat-v7:$ANDROID_COMPATIBILITY_VERSION"
【解决方案4】:

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

compileSdkVersion 26
buildToolsVersion "26.0.1"

【讨论】:

  • 在根目录下添加 build.gradle 不需要编辑模块的 build.gradle 文件subprojects { afterEvaluate {project -&gt; if (project.hasProperty("android")) { android { compileSdkVersion 26 buildToolsVersion '26.0.1' } } } }
【解决方案5】:

我遇到了同样的错误,并且一直在谷歌搜索试图找出我做错了什么,因为这是生成的构建值 26 代码而不是我提供的样式。我尝试了从 Gradle 4.0 到 Android Studio 预览版 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 也可以正常工作。

【讨论】:

  • 它确实解决了问题(如果你有几个模块)
【解决方案6】:

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

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

编辑:我的targetSDKVersion 也设置为26

【讨论】:

    【解决方案7】:

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

    发现这些项目的 build.gradle 使用 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"
                }
            }
        }
    }
    

    【讨论】:

      【解决方案8】:

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

      【讨论】:

        【解决方案9】:

        我的 Ionic 2 项目遇到了同样的问题,我为解决这些问题所做的只是

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

        希望这对某人有所帮助!

        【讨论】:

        • 我的项目更改为 target=android-26 ,但仍然显示此错误
        【解决方案10】:
        //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'
                        }
                    }
                }
            }
        

        【讨论】:

        • 您能否与代码分享更多信息,以更好地理解您的答案。
        • 通常最好解释一个解决方案,而不是仅仅发布一些匿名代码行。你可以阅读How do I write a good answer,也可以阅读Explaining entirely code-based answers
        • 谢谢!最佳答案。本质上,项目依赖项(node_modules 项目)具有不同的 sdk 版本。将此代码添加到根级别 build.gradle 可确保所有这些依赖项都使用指定的 sdk 版本并且项目能够构建。 :D
        【解决方案11】:

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

        compileSdkVersion 26
        
        targetSdkVersion 26
        
        buildToolsVersion '26.0.2'
        

        【讨论】:

        • 26.0.2 build version 为我修复了问题。
        【解决方案12】:

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

        compileSDkVersion 26
        buildToolsVersion '26.0.1'
        

        但是,问题实际上出在react-native-fbsdk 包上。我不得不更改 node_modules/react-native-fbsdk/android/build.gradle 中的相同设置。

        【讨论】:

          【解决方案13】:

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

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

          【讨论】:

          • 这比手动编辑所有文件更容易解决这个问题。
          【解决方案14】:

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

          当前VS2017新项目15.5.3nuGetXamarin.Android.*默认为25.4.0.2,跨平台开发默认VS安装为以下Android SDK包:

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

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

          • 安卓8.0 - 奥利奥
            • Android SDK平台26
            • Google API 英特尔 x86 Atom 系统映像

          【讨论】:

            【解决方案15】:

            我的一个 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/o11xc8dy0c2c7elsaoppa0kwe1d94oghhttps://app.box.com/s/ofdcg0a8n0zalumvpyju58he402ag1th

            【讨论】:

              【解决方案16】:

              当您尝试将 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'
                          }
                      }
                  }
              }
              

              【讨论】:

                【解决方案17】:

                我在编译 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')
                

                【讨论】:

                  【解决方案18】:

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

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

                  只是让compileSdkVersion to 26buildToolsVersion to 26.0.2 为我工作。

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

                  【讨论】:

                    【解决方案19】:

                    在 gradle 中更新这些

                    compileSdkVersion 27 buildToolsVersion '27.0.1'

                    【讨论】:

                      【解决方案20】:

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

                      【讨论】:

                        【解决方案21】:

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

                        compileSdkVersion 26
                        buildToolsVersion '26.0.1'
                        

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

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

                        【讨论】:

                          【解决方案22】:

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

                          【讨论】:

                            【解决方案23】:

                            我对 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+
                            

                            【讨论】:

                              【解决方案24】:

                              为此,您必须执行以下操作 1.右键项目点击。

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

                              3.点击确定。

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

                              【讨论】:

                                【解决方案25】:

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

                                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'
                                

                                【讨论】:

                                【解决方案26】:

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

                                ./gradlew  app:clean app:assembleDebug
                                

                                但targetSdkVersion或compileSdkVersion为25时不起作用。

                                【讨论】:

                                  猜你喜欢
                                  • 2018-03-21
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2018-05-25
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2017-10-13
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多