You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:19:50