错误:(9,5)错误:找不到资源android:attr / dialogCornerRadius

162

我安装了Android Studio 3.0.1,但一打开gradle就出现以下错误。我尝试添加design和support等依赖项,但都失败了。有人可以帮我吗?

enter image description here

这表明一些属性,例如dialogCornerRadiusfontVariation设置未找到。


9
我曾使用compileSdkVersion 27compileSdkVersion 28,将compileSdkVersion更改为28后,问题得到解决。 - Blasanka
20个回答

201

这个错误是由于compileSdkVersion和库的版本不匹配导致的。

例如:

compileSdkVersion 27
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:design:26.1.0'

同时避免在库中使用加号,如下所示:

implementation 'com.android.support:appcompat-v7:26.+'

像这样使用精确的库版本

implementation 'com.android.support:appcompat-v7:26.1.0'

使用加号与库一起使用会使构建过程难以收集所需的确切版本,从而使系统不稳定,因此应该避免使用。


我不得不更新我的compileSdkVersion主版本号,使其与com.android.support:support-annotations、com.android.support:appcompat-v7、com.android.support:support-v4、com.android.support:design相同。 - oddmeter
这在我的情况下是解决方案。 - Zurmati

89
如果您正在迁移到 AndroidX 并遇到此错误,则需要将编译 SDK 设置为 Android 9.0(API 级别 28)或更高版本。

2
有没有办法将AndroidX与SDK编译27一起使用? - Phil
2
@Phil 在你进行迁移之前,请先更新你的应用程序。我们建议将你的项目更新到使用支持库的最终版本:版本28.0.0。这是因为具有版本1.0.0的AndroidX构件与Support Library 28.0.0构件在二进制上是等效的。来源。因此,对于使用AndroidX的SDK 27没有选项。 - murgupluoglu

28

我曾经遇到相同的问题。以下主题帮助我解决了这个问题。只需将您的编译SDK版本设置为Android P即可。

https://dev59.com/qFUM5IYBdhLWcg3wMeAk#49172361

我通过选择以下内容来解决此问题:

API 27+ : Android API 27,P preview (Preview)

在项目结构设置中。下图显示了我的设置。构建应用时出现的13个错误已经消失。

Gradle settings


3
请注意,您不必将其定向到28,您只需将compileSdkVersionbuildToolsVersion设置为28,并将您的targetSdkVersion保留在较低版本即可。 - Kirill Karmazin

18

在处理一个包含多个模块的应用时,我遇到了同样的问题,请确保当你将一个模块的compileSdkVersiontargetSdkVersion 增加到28+时,你也要对其他模块执行相同操作。

一个模块运行在compileSdkVersion 29targetSdkVersion 29上,而另一个模块则运行在compileSdkVersion 27targetSdkVersion 27上。

将第二个模块的编译和目标SDK版本也改为29后,我的问题得到了解决。希望这能帮助有需要的人。


1
很高兴能帮到你。 - Abdulsalam Opeyemi
好的,需要升级LVL许可证,感谢您的提醒。 - Oded

17

检查您的依赖项是否在版本中使用了+。某些依赖关系可能正在使用com.android.support:appcompat-v7:+。当发布新版本时,这会导致问题并可能破坏功能。

解决方法要么是使用com.android.support:appcompat-v7:{compileSdkVersion}.+,要么根本不使用+,而是使用完整版本(例如com.android.support:appcompat-v7:26.1.0)。

如果您的build.gradle文件中没有看到这条线,请在android studio终端中运行以概述每个依赖项的用途

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath(包括androidtest依赖项)

或者

gradlew -q dependencies app:dependencies --configuration debugCompileClasspath(调试的常规依赖项)

它将得到类似于此的结果

------------------------------------------------------------
Project :app
------------------------------------------------------------

debugCompileClasspath - Resolved configuration for compilation for variant: debug
...
+--- com.android.support:appcompat-v7:26.1.0
|    +--- com.android.support:support-annotations:26.1.0
|    +--- com.android.support:support-v4:26.1.0 (*)
|    +--- com.android.support:support-vector-drawable:26.1.0
|    |    +--- com.android.support:support-annotations:26.1.0
|    |    \--- com.android.support:support-compat:26.1.0 (*)
|    \--- com.android.support:animated-vector-drawable:26.1.0
|         +--- com.android.support:support-vector-drawable:26.1.0 (*)
|         \--- com.android.support:support-core-ui:26.1.0 (*)
+--- com.android.support:design:26.1.0
|    +--- com.android.support:support-v4:26.1.0 (*)
|    +--- com.android.support:appcompat-v7:26.1.0 (*)
|    +--- com.android.support:recyclerview-v7:26.1.0
|    |    +--- com.android.support:support-annotations:26.1.0
|    |    +--- com.android.support:support-compat:26.1.0 (*)
|    |    \--- com.android.support:support-core-ui:26.1.0 (*)
|    \--- com.android.support:transition:26.1.0
|         +--- com.android.support:support-annotations:26.1.0
|         \--- com.android.support:support-v4:26.1.0 (*)
+--- com.android.support.constraint:constraint-layout:1.0.2
|    \--- com.android.support.constraint:constraint-layout-solver:1.0.2

(*) - dependencies omitted (listed previously)

如果您无法控制更改版本,请尝试强制使用特定版本。

configurations.all {
    resolutionStrategy {
        force "com.android.support:appcompat-v7:26.1.0"
        force "com.android.support:support-v4:26.1.0"
    }
}

根据设置为 28.0.0 的内容不同,力的依赖关系可能需要不同。


“bash: gradlew: command not found” 这个错误提示在哪里可以找到gradlew命令? - John Perry
找到了。有趣的是,在Linux上,你经常不能在当前目录下执行命令,除非在前面加上“./”,所以:./gradlew等。 - John Perry

13

也许现在有点晚了,但我找到了解决办法:

您需要在 build.gradle 中进行编辑,将 compileSdkVersion -->更改为最新版本(现在是28)。像这样:

android {
compileSdkVersion 28
defaultConfig {
    applicationId "NAME_OF_YOUR_PROJECT_DIRECTORY"
    minSdkVersion 21
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

或者您可以更改实现的版本:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    api 'com.android.support:design:27.+'
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

9

尝试将compileSdkVersion更改为:compileSdkVersion 28


3
但我希望它是26。 - Taslim Oseni
是的,我也想在26号。有什么解决方案吗@TaslimOseni - Vigneswaran A
1
@VigneswaranA,最终我不得不坚持使用28版本,因此更新了所有其他依赖项。我找不到解决办法。 - Taslim Oseni

8

在我的情况下,我在更新compileSdkVersion到29时,在AndroidStudio 4.1.1中遇到了这个错误。

如果您的build.gradle文件中有依赖项目,您需要在依赖项目的build.gradle文件中更新相同的compileSdkVersion。

步骤:

  1. 在AndroidStudio的Project视图中单击您的应用程序文件夹。
  2. 选择打开模块设置。
  3. 在项目结构中检查有多少个模块?
  4. 如果有多个模块,则还必须更新compileSdkVersion、buildToolsVersion和项目依赖项。

对我来说有效 :)


1
就是这样,非常感谢你。我卡在这里了,你救了我的一天。 - Mohammad Reza Mrg

8
这是因为compileSdkVersion、buildToolsVersion和Dependecies implementations不匹配。你需要像这样完成:我有28个库。
compileSdkVersion 28
targetSdkVersion   28
buildToolsVersion  28.0.3
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'

如果您在任何地方使用小于28的版本,则会出现此错误,请尝试在所有地方匹配库。

7
我曾经在添加Mapbox导航API时遇到了同样的问题,通过进入 "文件" > "项目结构" 并将编译SDK版本和构建工具版本设置为最新版本来解决此问题。以下是屏幕截图:settings Screenshot希望这可以帮助您。

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