执行cordova build android报错:找不到android:fontVariationSettings等属性
android:fontVariationSettings和android:ttcIndex的问题 这种情况我之前踩过坑,大概率是Android构建工具链的版本没对齐导致的——毕竟android:fontVariationSettings和android:ttcIndex这俩属性是Android API 26(也就是Android 8.0)才引入的,要是你的构建环境里的SDK、Gradle或者Cordova Android版本没跟上,就会报找不到属性的错。结合你两台机器同代码不同结果的情况,下面是一步步解决的思路:
1. 统一Cordova Android平台版本
先确认两台机器上的Cordova Android平台版本是否一致:
cordova platform list
如果出问题的机器版本和正常机器不一样,直接删掉重装成匹配的版本:
cordova platform remove android cordova platform add android@x.x.x # 把x.x.x换成正常机器显示的版本号
2. 对齐Android SDK Build Tools版本
这俩属性需要Build Tools 26.0.0及以上版本支持,所以要确保出问题的机器上的Build Tools版本和正常机器一致:
- 可以打开Android Studio的SDK Manager,在「SDK Tools」标签里勾选对应版本的Build Tools进行安装;
- 或者用命令行安装:
sdkmanager "build-tools;x.x.x" # 替换成正常机器的Build Tools版本
另外,检查platforms/android/build.gradle文件里的compileSdkVersion和targetSdkVersion,确保它们的值是26或更高,并且和正常机器的配置一致。
3. 同步Gradle版本
Cordova Android平台对Gradle版本有严格要求,比如Cordova Android 9.x需要Gradle 6.x,10.x需要Gradle 7.x。先检查两台机器的Gradle版本:
gradle -v
如果版本不匹配,可以直接修改项目里的Gradle wrapper配置,在platforms/android/gradle/wrapper/gradle-wrapper.properties里指定和正常机器一致的Gradle版本:
distributionUrl=https\://services.gradle.org/distributions/gradle-x.x.x-all.zip
4. 排查插件依赖冲突
有些插件可能硬编码了较低的SDK版本,导致整体构建环境降级。你可以尝试:
- 更新所有插件到最新版本,减少版本冲突:
cordova plugin update --all - 如果更新后还是有问题,尝试逐个移除插件并重新编译,找出哪个插件导致的冲突;
- 针对有问题的插件,可以修改它的
plugin.xml文件,把依赖的Android框架版本改成API 26+的版本,比如把:
修改为:<framework src="com.android.support:appcompat-v7:25.4.0" /><framework src="com.android.support:appcompat-v7:28.0.0" />
5. 清理构建缓存
有时候旧缓存会导致奇怪的环境不一致问题,执行以下命令清理:
cordova clean android cd platforms/android && ./gradlew clean
按照上面的步骤把出问题的机器的构建环境完全对齐正常机器的配置,应该就能解决属性找不到的报错了。
内容的提问来源于stack exchange,提问作者Stéphane Padovani

