Cordova构建编译报错:<declare-styleable> FontFamilyFont找不到指定Android属性
我之前也碰到过一模一样的Cordova构建报错,折腾了好一阵才搞定,给你几个针对性的方案试试:
检查并统一所有插件的支持库版本
很多时候问题出在第三方插件上——有些插件会硬编码使用Android Support Library 28+的版本,哪怕你自己改了主项目的配置也没用。你需要遍历项目plugins目录下每个插件的plugin.xml文件,找到所有引用com.android.support:appcompat-v7(或AndroidX对应的androidx.appcompat:appcompat)的<framework>标签,把版本号改成27.x系列(比如27.1.1)。如果有插件混用了Support Library和AndroidX,建议统一换成AndroidX,同时安装cordova-plugin-androidx和cordova-plugin-androidx-adapter来自动适配旧插件。强制项目依赖版本统一
插件之间的依赖版本不一致也会导致冲突,你可以在项目根目录的build.gradle文件中添加强制统一配置,确保所有依赖都用指定版本的支持库:configurations.all { resolutionStrategy { force 'com.android.support:appcompat-v7:27.1.1' force 'com.android.support:support-v4:27.1.1' } }配置完成后执行
cordova clean,再重新构建项目。降级Cordova Android平台版本
如果你当前使用的Cordova Android平台版本过高(比如9.0+),它默认会使用AndroidX或更高的SDK版本,容易和旧插件产生兼容性问题。可以尝试降级到更稳定的版本:cordova platform remove android cordova platform add android@8.1.0Android 8.1.0版本默认适配SDK 27,对大多数旧插件的兼容性更好。
彻底清理缓存并重装插件
缓存的旧依赖也可能导致奇怪的冲突,执行以下命令彻底清理后重新初始化项目:cordova clean rm -rf platforms/android rm -rf plugins rm package-lock.json npm install cordova prepare android之后再逐个添加你需要的插件,尽量选择官方维护或兼容性好的版本。
如果以上方法都没用,建议创建一个空白的Cordova项目,逐步添加插件并测试构建,这样能快速定位是哪个插件引发的问题。
内容的提问来源于stack exchange,提问作者SANGEETH KUMAR S G

