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

iOS生产构建中weightOfFont(UIFont*)崩溃的排查与解决

TestFlight生产构建崩溃问题解决记录

问题现象

首次将开发的App提交至Apple TestFlight进行Beta测试时,出现生产构建频繁崩溃的情况:模拟器和Expo Go环境下测试完全正常,但TestFlight分发的生产包运行后频繁崩溃。

崩溃线索

查看Apple提供的崩溃报告,所有崩溃的线程调用栈均指向:

weightOfFont(UIFont*) + 212 (RCTFont.mm:60)

多份报告的崩溃触发点一致。

尝试过的无效解决方案

先后尝试以下操作,均未解决崩溃问题:

  • 将Fonts文件夹重命名为font;
  • 在app.json中添加资源打包配置:"assetBundlePatterns": [ "assets/*" ];
  • 运行npx expo-doctor@latest,检测结果无报错或警告;
  • 执行npx react-native-asset命令手动链接字体资源;
  • 创建react-native.config.js并配置字体资源路径:
module.exports = { assets: ['./assets/font'], };
  • 修改字体运行时加载代码,添加异常捕获逻辑:
try {
    Font.loadAsync({
        'RobotoSlab-Medium': require('./assets/font/RobotoSlab-Medium.ttf'),
        'RobotoSlab-Bold': require('./assets/font/RobotoSlab-Bold.ttf')
    }).then(() => {
        setFontLoaded(true)
        setAppIsReady(true);
    })
} catch (e) {
    console.warn('Fonts are not loaded properly');
    console.log(e)
}

最终解决方法

查阅Expo-Fonts文档后发现,问题根源是同时启用了字体嵌入配置和运行时加载两种字体引入方式,两者冲突导致生产构建时字体资源处理异常。移除嵌入字体的相关配置后,重新构建并上传TestFlight,生产版本不再崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:40:06