Cordova Android9构建报错:app:processDebugResources失败求助
android:attr/lStar错误解决方案 报错根本原因
android:attr/lStar是Android 12(API Level 31)新增的系统属性,出现该报错是因为构建过程中拉取的androidx.core、androidx.appcompat等依赖自动升级到了1.7.0及以上版本,这类版本最低要求编译SDK版本为31,而Cordova Android 9.0.0默认的编译SDK版本为30,版本不匹配导致属性找不到。
就算没有改动项目代码,只要构建配置没有锁定依赖版本,gradle拉取最新版依赖就会突然触发该问题。
可选择的解决方案
方案1:强制锁定依赖版本(无需改动基础环境,最快捷)
无需升级Cordova Android版本,直接在项目platforms/android目录下新建build-extras.gradle文件,写入以下配置:
configurations.all { resolutionStrategy { // 锁定androidx相关依赖到支持SDK30的最新版本 force 'androidx.core:core-ktx:1.6.0' force 'androidx.core:core:1.6.0' force 'androidx.appcompat:appcompat:1.3.1' } }
配置完成后重新执行cordova build android即可。如果担心后续重新添加Android平台配置丢失,可以把该文件放到项目根目录,用Cordova钩子在添加平台后自动复制到对应路径。
方案2:升级Cordova Android版本
如果可以接受升级基础环境,直接升级到支持编译SDK31+的Cordova Android版本即可:
# 移除旧版本Android平台 cordova platform rm android # 安装10.1.2以上版本的Android平台 cordova platform add android@10.1.2
升级完成后直接执行构建命令即可,新版本Cordova Android默认编译SDK版本高于31,适配高版本androidx依赖。
方案3:手动修改编译SDK版本
如果不想升级Cordova Android版本,也可以直接在项目根目录的config.xml中添加以下配置,指定编译版本为31:
<preference name="android-compileSdkVersion" value="31" /> <preference name="android-targetSdkVersion" value="31" />
修改后重新添加Android平台,再执行构建即可。
补充说明
如果项目中使用了第三方Cordova插件,部分插件可能也会引入高版本androidx依赖,上述强制锁定依赖的配置可以覆盖所有依赖引入的版本,不受插件影响。
内容的提问来源于stack exchange,提问作者Marc Rasmussen

