React Native打包Android报AAPT: error: resource android:attr/lStar not found
报错根因
android:attr/lStar是Android 12(API等级31)才新增的系统属性,报错是因为你的项目依赖了androidx.core:core*:1.7.0及以上版本的库,该版本库依赖API31的编译环境,而你项目当前的compileSdkVersion低于31导致资源链接失败。
即使你没有在项目中显式声明androidx.core:core-ktx:+依赖,也可能是项目引入的第三方RN组件使用了动态版本号的core依赖,自动拉取了最新的高版本core库导致的问题。
排查步骤
- 进入项目的android目录,执行依赖查询命令:
- Mac/Linux系统:
./gradlew :app:dependencies - Windows系统:
gradlew.bat :app:dependencies
- Mac/Linux系统:
- 在输出的依赖树中搜索
core-ktx或者androidx.core:core,即可定位到是哪个第三方依赖引入了1.7.0及以上版本的core库。
解决方案
方案一(根治推荐):升级编译SDK版本
修改项目android/build.gradle文件中的配置:
buildscript { ext { compileSdkVersion = 31 // 至少升到31,推荐用最新稳定版 targetSdkVersion = 31 // 和compileSdkVersion保持一致 buildToolsVersion = "31.0.0" // 对应版本的构建工具 } }
修改完成后重新构建项目即可,该方案可以避免后续其他新依赖同样出现版本兼容问题。
方案二(临时规避):全局强制锁定core库版本
如果暂时无法升级编译SDK版本,可以在android/build.gradle中添加强制版本配置,锁定core库到支持低版本编译SDK的1.6.0版本:
allprojects { configurations.all { resolutionStrategy { // 强制所有依赖使用指定版本的core库 force 'androidx.core:core-ktx:1.6.0' force 'androidx.core:core:1.6.0' } } }
配置完成后执行./gradlew clean清理构建缓存,再重新打包即可。
方案三:升级问题第三方依赖
如果排查到是某个特定RN组件导致的依赖问题,可以直接将该组件升级到已修复该版本兼容问题的版本,无需修改全局配置。
内容的提问来源于stack exchange,提问作者user4866625
相关产品推荐
相关产品推荐

