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

React Native安卓端自定义字体不生效问题求助

排查React Native安卓端自定义字体不生效的问题

我来帮你梳理几个实际项目中常见的坑,这些都可能导致安卓端自定义字体不生效:

1. fontWeight属性大概率是问题根源

你设置了fontWeight: 'bold',但如果你的Good Feeling Sans.ttf不是专门的粗体版本字体文件,安卓系统会自动 fallback 到系统默认粗体字体,完全忽略你的自定义字体。解决方式分两种:

  • 如果你有单独的粗体字体文件(比如Good Feeling Sans Bold.ttf),把它也放进assets/fonts,然后样式里直接指定该字体文件名作为fontFamily,删掉fontWeight属性:
    const styles = StyleSheet.create({
      textStyles: {
        fontFamily: 'Good Feeling Sans Bold', // 和粗体字体文件名完全一致
        fontSize: 20,
        margin: 10
      }
    })
    
  • 如果没有粗体字体文件,直接移除fontWeight: 'bold',只用自定义字体的常规版本。

2. 严格匹配字体文件名与fontFamily(大小写敏感!)

安卓对文件大小写是严格区分的,比如你的字体文件名叫GoodFeelingSans.ttf,但你写的是'Good Feeling Sans',这就会完全匹配失败。务必保证:

  • fontFamily的值和ttf文件的**完整文件名(不含.ttf后缀)**完全一致,包括空格、大小写、连字符等细节。
  • 比如文件是GoodFeelingSans-Regular.ttf,那fontFamily就必须写'GoodFeelingSans-Regular'。

3. 移除旧版rnpm配置,只保留新版配置

React Native 0.60+版本已经废弃了rnpm配置,改用react-native.config.js。同时存在两个配置会导致冲突:

  • 删掉package.json里的"rnpm"节点。
  • 确保react-native.config.js语法正确、路径无误:
    module.exports = {
      assets: ['./assets/fonts/']
    };
    

4. 清空所有缓存后重新构建

缓存是字体不生效的高频诱因,按顺序执行以下命令:

  1. 清除RN打包缓存:npx react-native start --reset-cache
  2. 清除安卓构建缓存:
    cd android
    ./gradlew clean
    cd ..
    
  3. 卸载模拟器/真机上的旧APP,再重新运行:npx react-native run-android

5. 手动确认字体是否被打包进安卓项目

自动link有时会失效,你可以手动检查:

  • 打开android/app/src/main/assets/fonts文件夹,看看是否存在你的Good Feeling Sans.ttf文件。
  • 如果没有,直接把assets/fonts下的所有ttf文件复制到这个目录,再重新构建。

6. 排查字体文件本身的问题

有些下载的ttf文件可能损坏或不兼容安卓:

  • 在电脑上打开该ttf文件,确认能正常显示字符。
  • 换一个已知可用的ttf文件测试,排除字体文件本身的问题。

内容的提问来源于stack exchange,提问作者Ajith Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:35:43