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

Expo打包APK后含React Navigation的应用启动显示空白屏求助

Expo打包APK后含React Navigation的应用启动显示空白屏求助

你遇到的这个问题我之前也碰到过几次,大概率是依赖兼容或者打包配置的问题,咱们一步步来排查解决:

1. 先调整NavigationContainer的层级,去掉多余的外层View

你的App.js里把NavigationContainer嵌套在了一个View里,虽然开发环境可能没问题,但打包后可能因为布局优先级的问题导致渲染异常。NavigationContainer本身就是一个占满全屏的容器组件,直接返回它就行:

import { NavigationContainer } from "@react-navigation/native";
import { createNativeStackNavigator } from "@react-navigation/native-stack";
import Home from "./screens/Home";
import About from './screens/About';

const Stack = createNativeStackNavigator();

export default function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator initialRouteName='Home'>
        <Stack.Screen component={Home} name="Home"/>
        <Stack.Screen component={About} name="About"/>
      </Stack.Navigator>
    </NavigationContainer>
  );
}

2. 关闭新架构(New Architecture)

你的app.json里开启了newArchEnabled: true,目前React Navigation的部分版本对新架构的适配还不够完善,很容易因为兼容性问题出现空白屏。先把这个选项改成false:

"newArchEnabled": false,

3. 用Expo官方命令重新安装依赖,避免版本冲突

你之前用npm install安装了react-native-screens和react-native-safe-area-context,但Expo项目最好用expo install来安装依赖,它会自动匹配当前Expo SDK对应的兼容版本,手动npm安装很容易出现版本不匹配的情况:

expo install react-native-screens react-native-safe-area-context

4. 查看设备运行时日志,定位具体错误

如果上面的方法都没用,那就要找到具体的错误信息了。可以用安卓的adb工具查看设备的日志:

  1. 把手机连到电脑,开启USB调试
  2. 运行命令过滤错误日志:
adb logcat *:E

启动空白屏的应用后,就能看到具体的报错信息,比如某个模块找不到、未捕获的异常等,这样就能精准定位问题了。

5. 临时关闭代码混淆,排除压缩导致的问题

可以在eas.json的preview profile里关闭代码压缩,看看是不是混淆导致的导航模块出错:

"preview": {
  "android": {
    "buildType": "apk",
    "minify": false,
    "proguard": false
  },
  "distribution": "internal"
}

按照上面的步骤逐一尝试,应该能解决空白屏的问题。如果还是不行,把adb日志里的错误信息贴出来,就能进一步排查了~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 08:08:03