Gradle构建失败:资源处理错误,@android:attr/windowBackground未找到
我之前也碰到过一模一样的问题,别着急,咱们一步步排查解决:
第一步:统一所有模块的SDK版本配置
这个错误大概率是不同模块的compileSdkVersion/targetSdkVersion不统一,或者版本过低导致的。打开项目中所有模块的build.gradle(包括主模块和子模块),确保以下配置保持一致,并且至少设置为API 21及以上:android { compileSdkVersion 33 // 或者你项目使用的稳定版本 defaultConfig { targetSdkVersion 33 // ...其他配置 } }注意如果是用根项目的ext变量统一管理的,要确认根目录
build.gradle里的变量定义正确,比如:buildscript { ext { compileSdkVersion = 33 targetSdkVersion = 33 } // ...其他配置 }第二步:清理构建缓存并重新构建
你提到的build文件夹是自动生成的,不能直接修改,先清理掉旧的缓存文件:
执行命令:gradlew clean然后再重新执行构建命令:
gradlew assembleDebug --scan有时候缓存文件损坏会导致这种奇怪的资源处理错误,清理后大概率能解决。
第三步:检查自定义Style的引用方式
如果上面两步没解决,去检查你项目中自定义的Style文件(不是build文件夹下的),看是否有错误引用@android:attr/windowBackground的地方。正确的引用系统属性应该用?android:attr/windowBackground(注意开头是问号),而不是@符号。比如:
错误写法:<item name="android:windowBackground">@android:attr/windowBackground</item>正确写法:
<item name="android:windowBackground">?android:attr/windowBackground</item>或者如果你是要设置具体的颜色/ drawable,直接指定资源即可,比如
@color/white。第四步:检查模块依赖是否正确
如果是Library模块出现的问题,确认该模块的build.gradle中没有错误的依赖配置,比如是否误将compileSdkVersion设置成了compileSdkPreview或者其他非稳定版本,导致无法找到系统属性。
按照上面的步骤排查,基本能解决这个问题。
内容的提问来源于stack exchange,提问作者Orcha

