React Native Expo项目执行run:android时CMake任务失败求助
解决Expo React Native自定义字体加载失败及Android构建CMake/Prefab错误
一、先解决自定义字体加载问题(无需prebuild,适配Expo Go)
你遇到的“not a system font”问题,本质是Expo Go需要显式加载字体,仅靠app.json配置无法完成预加载,不用急着prebuild,按以下步骤操作:
- 安装依赖
npx expo install expo-font expo-app-loading
(如果用Expo SDK 48+,也可以用expo-splash-screen替代expo-app-loading)
- 在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> ); }
- 确认app.json配置正确
确保expo.assets包含字体目录:
{ "expo": { "assets": ["./assets/fonts/"] } }
- 清除缓存重新运行
npx expo start -c
然后在Expo Go中刷新应用,字体即可正常加载。
二、解决Android构建的CMake/Prefab错误(若必须使用prebuild)
如果你的项目确实需要预构建原生代码,构建失败的核心原因是Windows用户名含非ASCII字符(错误日志中路径C:\\Users\\kawÒ\\.gradle的Ò是特殊字符),以及可能的CMake版本问题,按以下步骤修复:
迁移项目到无特殊字符的路径
把项目从C:\Users\Public\FaculdadeTrabalhos\ViaSeguraTeste2移动到不含特殊字符、空格的路径,比如C:\Projects\ViaSeguraTeste2。修复Gradle缓存路径(可选,若无法修改用户名)
设置GRADLE_USER_HOME环境变量到不含特殊字符的目录:
- 打开系统环境变量设置,新建系统变量
GRADLE_USER_HOME,值设为C:\Gradle\Cache(确保该目录存在) - 重启终端,执行
echo %GRADLE_USER_HOME%确认生效
- 安装兼容的CMake版本
打开Android Studio:
- 进入
File > Settings > Appearance & Behavior > System Settings > Android SDK - 切换到
SDK Tools标签,勾选CMake,选择3.22.1及以上版本安装,点击Apply
- 重置项目构建文件
# 删除预构建的原生目录和依赖 rm -rf node_modules android ios # 重新安装依赖 npm install # 清理预构建缓存后重新生成 npx expo prebuild --clean # 重新运行Android构建 npx expo run:android
内容的提问来源于stack exchange,提问作者Bazante
相关产品推荐
相关产品推荐

