React Native构建失败:FontFamilyFont属性缺失致aapt执行异常
解决React Native构建时FontFamilyFont相关属性找不到的问题
我之前也碰到过一模一样的坑,这本质上是Android项目SDK版本和react-native-push-notification这类依赖库的编译/目标SDK版本不兼容导致的——android:fontVariationSettings、android:ttcIndex这些属性是Android Oreo(API 26)及以上才引入的,如果你的项目编译SDK版本低于26,或者依赖库强行调用了更高版本的属性,就会触发这个报错。
下面是我亲测有效的解决步骤,按顺序尝试即可:
1. 统一升级Android项目的SDK版本配置
打开项目根目录下的android/build.gradle文件,修改核心SDK版本配置:
buildscript { ext { buildToolsVersion = "30.0.3" minSdkVersion = 21 // 最低支持版本可以保留21,不影响兼容 compileSdkVersion = 30 // 至少升到26以上,建议选30或31这类稳定版本 targetSdkVersion = 30 // 和compileSdkVersion保持一致即可 } // 其他原有内容保持不变 }
接着打开android/app/build.gradle,确保模块级的版本配置和根目录统一:
android { compileSdkVersion rootProject.ext.compileSdkVersion defaultConfig { targetSdkVersion rootProject.ext.targetSdkVersion // 其他原有内容保持不变 } }
2. 强制适配react-native-push-notification的依赖版本
如果升级SDK后仍报错,大概率是这个库的内部依赖和你的项目冲突了。可以在android/build.gradle里添加强制依赖规则,让它对齐你项目的support库版本:
allprojects { repositories { // 你的仓库配置保持不变 } configurations.all { resolutionStrategy { force 'com.android.support:support-v4:28.0.0' force 'com.android.support:appcompat-v7:28.0.0' } } }
3. 清理构建缓存后重新编译
做完上述修改后,一定要清理旧的构建缓存,否则残留文件会干扰新的编译流程:
# 进入Android目录清理缓存 cd android && ./gradlew clean # 返回项目根目录重新构建Release包 cd .. && npx react-native run-android --variant=release
额外排查点
如果还是没解决,检查下项目里其他依赖库有没有硬编码低版本SDK的情况——比如有些老库可能强行指定了compileSdkVersion低于26,这种情况下要么升级该库,要么替换成仍在维护的替代库。
内容的提问来源于stack exchange,提问作者loyoliteabid
相关产品推荐
相关产品推荐

