未修改代码时Android release变体执行测试出现资源链接失败错误
错误根本原因
报错核心是androidx.core:core依赖版本与项目compileSdkVersion不匹配:core-1.7.0-alpha02是基于Android 12(API 31)编译的官方核心库,内部代码用到了仅API 31才新增的android:attr/lStar系统属性,而你的项目compileSdkVersion仅为28,构建时无法识别该系统属性,就会触发AAPT资源链接错误。
代码无改动却突发报错的可能原因
- 你的项目依赖配置使用了动态版本声明,比如
androidx.core:core:+、androidx.core:core:1.+这类不锁定具体版本的写法,只要远程仓库发布了符合版本规则的新版本,构建时就会自动拉取最新版,哪怕你的业务代码没有任何改动,依赖版本的变化也会触发构建失败。 - 项目依赖的第三方组件的依赖规则包含动态版本的core库,或者第三方组件最近发布的新版本刚好将core依赖升级到了1.7.0-alpha02及以上版本,通过传递依赖拉高了你项目的core库整体版本。
- 你的构建环境没有配置依赖版本锁定规则,也没有对依赖仓库做版本缓存,每次构建都会向远程仓库查询最新的符合规则的依赖版本,刚好
core-1.7.0-alpha02是近期发布的版本,就在本次构建时被拉取到了。
验证与修复方案
执行./gradlew :am:dependencies(Windows环境执行gradlew.bat :am:dependencies)检索core库的依赖路径,即可定位到抬升core版本的来源,随后可以选择以下方案修复:
- 直接锁定兼容版本:在模块级build.gradle的dependencies块中指定适配compileSdk 28的core版本
// Kotlin项目 implementation("androidx.core:core-ktx:1.6.0") // Java项目 implementation("androidx.core:core:1.6.0")
- 全局强制约束版本:如果是传递依赖导致的版本抬升,在根build.gradle的allprojects块中添加强制配置
allprojects { configurations.all { resolutionStrategy { force 'androidx.core:core:1.6.0' } } }
- 长期兼容方案:后续将compileSdkVersion升级到31及以上,即可兼容更高版本的官方核心库。
内容的提问来源于stack exchange,提问作者Oscar Reyes
相关产品推荐
相关产品推荐

