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

React Native iOS添加自定义字体时每次执行react-native link命令都出错

问题根源

旧版本React Native(0.59及以下)的react-native link命令会自动扫描所有node_modules内带原生资源/配置的依赖,同时读取项目根目录package.json中的rnpm配置,将所有匹配的字体资源同时添加到Xcode的Copy Bundle Resources构建阶段和Info.plist的UIAppFonts字段中。react-native-vector-icons本身自带字体资源配置,每次执行全局link命令都会重复添加对应字体,和手动删除的操作形成冲突,最终触发Xcode的重复拷贝资源报错。

解决步骤
  • 弃用全局无参数的react-native link命令,改为仅对指定依赖执行链接操作:安装新依赖后执行npx react-native link <依赖包名>,避免触发所有依赖的自动链接逻辑
  • 若使用React Native 0.60及以上版本,直接使用官方AutoLinking机制即可,无需配置rnpm字段:
    1. 先删除package.json中的rnpm配置段
    2. 在项目根目录新建react-native.config.js文件,写入以下配置,指定仅处理自定义字体,同时禁用iOS端react-native-vector-icons的自动链接:
    module.exports = {
      // 指定自定义字体目录
      assets: ['./assets/fonts/'],
      dependencies: {
        // 禁用iOS端vector-icons的自动链接,避免重复添加字体
        'react-native-vector-icons': {
          platforms: {
            ios: null,
          },
        },
      },
    };
    
  • 手动清理Xcode中已有的冲突配置:
    • 打开Xcode项目,进入Target → Build Phases → Copy Bundle Resources,删除所有重复的vector-icons字体文件,仅保留自己添加的自定义字体
    • 打开Info.plist,找到Fonts provided by application字段,删除所有vector-icons相关的字体条目,仅保留自定义字体
  • 后续仅在需要更新自定义字体时执行npx react-native link即可,不会再自动添加vector-icons的字体
  • 若需要使用vector-icons的字体,可手动将需要的字体文件从node_modules/react-native-vector-icons/Fonts目录拖入Xcode的Resources文件夹,勾选「Copy items if needed」和你的项目target,再在Info.plist的Fonts provided by application字段手动添加对应字体文件名即可,后续自动链接操作不会修改这部分手动配置

内容的提问来源于stack exchange,提问作者Nazish Aslam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:12:01