使用com.android.support:recyclerview-v7:26.0.0-beta2时出现attr/colorError未找到的错误。

68

我正在使用Android Studio 3.0 Canary 4版本。我导入了recyclerview库,但是遇到了“attr/colorError未找到”的错误信息。

以下是我的app build.gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "com.robyn.myapplication"
        minSdkVersion 19
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testImplementation 'junit:junit:4.12'
    implementation 'com.android.support:recyclerview-v7:26.0.0-beta2'
    implementation 'com.android.support:appcompat-v7:26.0.0-beta2'
}
每当我添加这两个库implementation 'com.android.support:recyclerview-v7:26.0.0-beta2'和implementation 'com.android.support:appcompat-v7:26.0.0-beta2'时,就会出现以下错误信息:enter image description here
我尝试了清理并重新构建,但错误消息仍然存在。我检查过res/values/colors,颜色值都在那里。为什么会出现这个颜色错误?如果我想使用recycler view,应该导入哪个库版本?

5
你最好将compileSdkVersion与之相匹配。 - OneCricketeer
9个回答

134

修改以下细节,它就能正常工作。

compileSdkVersion 26
buildToolsVersion "26.0.0-beta2"

50
谢谢您。我们正在开发一款应用程序,每3个月左右更新一次,但令人沮丧的是,每次打开Android Studio时都需要下载和应用大量的更新、补丁和“快速修复”,才能开始进行任何开发工作。不能说XCode更好,因为它有所有不兼容的Swift版本。哎呀,对突然的发泄感到抱歉 :) 不过还是感谢您分享解决此问题的方法! - Fredrik Johansson
14
我该如何给Fredrik的评论点赞一百万次左右? - Deborah
@Muthukrishnan Rajendran,已经可以工作了,朋友。谢谢。 - Chetan Joshi

33

compileSDKVersionbuildToolsVersion升级到26(之前是25),对我来说解决了这个问题:

compileSdkVersion 26
buildToolsVersion '26.0.2'
...
dependencies {
    ...
    compile 'com.android.support:appcompat-v7:26.0.2'

}

通常情况下,请确保所有版本保持一致(编译,构建,支持库)。

这是为了确保在运行时的编译和稳定性(如果lint发现不同的支持库版本,也可以看到有关后者的lint警告)。


4

版本号 26.0.0 Beta 2

请注意,26.0.0-beta2 是一个预发布版本。其 API 可能会发生变化,并且不一定包括来自 Support Library 最新稳定版本的功能或错误修复。

对于您的问题,您可以使用 "26.0.0-beta2" 版本。如果您使用稳定版,效果会更好。


1
我使用稳定版本(26.0.1)也遇到了同样的问题。 - deviant
1
@deviant 谷歌开发者们应该关注这个问题。每天都会出现新的bug。 - IntelliJ Amiya
@deviant,26.0.0-beta2 也有同样的问题吗? - IntelliJ Amiya

3
在 Android/build.gradle 文件底部粘贴以下代码对我有所帮助:
subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 28
                buildToolsVersion "28.0.3"
            }
        }
    }
}

1
我曾经遇到过同样的错误,当我的应用程序在appcompat-26上运行时,试图包含一个使用appcompat-25的Android库。 到目前为止,我的解决方案是将应用程序保持在25上。
我不知道是否应该这样做。肯定有可能发布一个使用支持库版本X的库,并让它在使用支持库版本X+1的应用程序中运行。
我正在使用AS 3.0-beta7,所以也许在几天前发布的稳定版3.0上已经解决了这个问题。

0

只需更改minSdk

e.g.:

android {
   compileSdkVersion 26
   buildToolsVersion "26.0.0-beta2"
   defaultConfig {
      applicationId "com.parse.starter"
      minSdkVersion 15
      targetSdkVersion 21
      versionCode 1
      versionName "1.0"
   }
}

希望这能有所帮助


0
我发现当我创建产品口味并在我的build.gradle(在“app”文件夹中)中将“legacy”放在“current”之后时,出现了“attr/colorError”错误。当我将“legacy”放在“current”之前(如下所示),错误就消失了。也许较低的“versionCode”或“Sdk”版本需要先出现?
   flavorDimensions "legacycurrent"
   productFlavors {

      legacy {
               dimension "legacycurrent"
               versionCode 98
               minSdkVersion 9
               targetSdkVersion 25
               compileSdkVersion 25
             }
      current {
               dimension "legacycurrent"
               versionCode 99
               minSdkVersion 14
               targetSdkVersion 26
               compileSdkVersion 26
             }
   }

0

修改 android/build.gradle 中的代码后,我的错误问题得到了解决。

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

0

对于未来的搜索者,我已经将以下代码添加到我的根build.gradle中,以向下搜索依赖项并将它们修复为与我的根项目匹配。可能有一些注意事项和原因说明这是一个不好的想法,但它对我来说始终有效。

subprojects {
    afterEvaluate {subproject ->
        if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
            android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                buildToolsVersion rootProject.ext.buildToolsVersion
            }
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接