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

React Native Expo项目执行run:android时CMake任务失败求助

解决Expo React Native自定义字体加载失败及Android构建CMake/Prefab错误

一、先解决自定义字体加载问题(无需prebuild,适配Expo Go)

你遇到的“not a system font”问题,本质是Expo Go需要显式加载字体,仅靠app.json配置无法完成预加载,不用急着prebuild,按以下步骤操作:

  1. 安装依赖
npx expo install expo-font expo-app-loading

(如果用Expo SDK 48+,也可以用expo-splash-screen替代expo-app-loading)

  1. 在App入口文件中加载字体
import { useFonts } from 'expo-font';
import AppLoading from 'expo-app-loading';

export default function App() {
  // 替换为你的字体文件名
  const [fontsLoaded] = useFonts({
    'YourFont-Regular': require('./assets/fonts/YourFont-Regular.ttf'),
    'YourFont-Bold': require('./assets/fonts/YourFont-Bold.ttf'),
  });

  if (!fontsLoaded) {
    return <AppLoading />;
  }

  return (
    // 你的应用组件内容
    <Text style={{ fontFamily: 'YourFont-Regular' }}>测试自定义字体</Text>
  );
}
  1. 确认app.json配置正确
    确保expo.assets包含字体目录:
{
  "expo": {
    "assets": ["./assets/fonts/"]
  }
}
  1. 清除缓存重新运行
npx expo start -c

然后在Expo Go中刷新应用,字体即可正常加载。


二、解决Android构建的CMake/Prefab错误(若必须使用prebuild)

如果你的项目确实需要预构建原生代码,构建失败的核心原因是Windows用户名含非ASCII字符(错误日志中路径C:\\Users\\kawÒ\\.gradle的Ò是特殊字符),以及可能的CMake版本问题,按以下步骤修复:

  1. 迁移项目到无特殊字符的路径
    把项目从C:\Users\Public\FaculdadeTrabalhos\ViaSeguraTeste2移动到不含特殊字符、空格的路径,比如C:\Projects\ViaSeguraTeste2。

  2. 修复Gradle缓存路径(可选,若无法修改用户名)
    设置GRADLE_USER_HOME环境变量到不含特殊字符的目录:

  • 打开系统环境变量设置,新建系统变量GRADLE_USER_HOME,值设为C:\Gradle\Cache(确保该目录存在)
  • 重启终端,执行echo %GRADLE_USER_HOME%确认生效
  1. 安装兼容的CMake版本
    打开Android Studio:
  • 进入File > Settings > Appearance & Behavior > System Settings > Android SDK
  • 切换到SDK Tools标签,勾选CMake,选择3.22.1及以上版本安装,点击Apply
  1. 重置项目构建文件
# 删除预构建的原生目录和依赖
rm -rf node_modules android ios
# 重新安装依赖
npm install
# 清理预构建缓存后重新生成
npx expo prebuild --clean
# 重新运行Android构建
npx expo run:android

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:56:04