代码未改动却报Android resource linking failed找不到lStar错误如何解决
解决方案
问题根因
android:attr/lStar是Android 12(API 31)才新增的系统属性,报错的核心原因是:
- 你的项目配置的
compileSdkVersion为29,本身无法识别API 31新增的属性 - 依赖中声明了
androidx.core:core-ktx:+,+号会自动拉取最新版本的core库,core-1.7.0及以上版本使用了lStar属性,导致资源链接失败 - 项目中重复声明了多个不同版本的
com.google.android.material:material依赖,部分alpha版本也会依赖高版本core库,进一步加剧依赖冲突
方案1:不升级compileSdk(适配现有API 29配置)
- 将模块级build.gradle中的
implementation "androidx.core:core-ktx:+"替换为固定低版本:
implementation "androidx.core:core-ktx:1.6.0"
- 将已有的
implementation 'androidx.core:core:1.3.2'同步升级为1.6.0,避免版本不一致:
implementation 'androidx.core:core:1.6.0'
- 删除所有重复声明的
com.google.android.material:material依赖,仅保留一个兼容API 29的稳定版本:
implementation 'com.google.android.material:material:1.4.0'
- 清理缓存并重建项目:依次点击Android Studio菜单栏
File -> Invalidate Caches / Restart,重启后执行Build -> Clean Project再执行Build -> Rebuild Project
方案2:升级compileSdk到31(长期兼容方案)
- 修改模块级build.gradle中的SDK版本配置:
android { compileSdkVersion 31 defaultConfig { // 其他配置不变 targetSdkVersion 31 } }
- 固定core相关依赖版本:
implementation "androidx.core:core-ktx:1.7.0" implementation 'androidx.core:core:1.7.0'
- 统一material依赖版本为API 31兼容的稳定版:
implementation 'com.google.android.material:material:1.5.0'
- 升级gradle插件适配API 31:修改根目录build.gradle中的gradle插件版本:
classpath "com.android.tools.build:gradle:4.2.2"
- 同步修改项目根目录下
gradle/wrapper/gradle-wrapper.properties中的gradle版本:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
- 清理缓存并重建项目,操作同方案1最后一步
内容的提问来源于stack exchange,提问作者SUADD
相关产品推荐
相关产品推荐

