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

React Native应用安卓真机启动即崩溃,求排查指导

React Native Expo应用真机启动崩溃排查

我的React Native Expo应用mytodoapp在Android模拟器和Web端运行正常,但安装到真实Android设备后启动即刻崩溃。以下是项目配置文件:

package.json内容

{
  "name": "mytodoapp",
  "version": "1.0.0",
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web"
  },
  "dependencies": {
    "@expo/webpack-config": "^0.17.4",
    "@react-navigation/drawer": "^6.5.7",
    "@react-navigation/native": "^6.1.2",
    "@react-navigation/native-stack": "^6.9.8",
    "axios": "^1.2.3",
    "expo": "~47.0.13",
    "expo-app-loading": "^2.1.1",
    "expo-cli": "^6.1.0",
    "expo-font": "~11.0.1",
    "expo-status-bar": "~1.4.2",
    "formik": "^2.2.9",
    "moment": "^2.29.4",
    "react": "18.1.0",
    "react-dom": "18.1.0",
    "react-native": "0.70.5",
    "react-native-calendars": "^1.1293.0",
    "react-native-paper": "^5.1.4",
    "react-native-web": "~0.18.10",
    "react-navigation": "^4.4.4"
  },
  "devDependencies": {
    "@babel/core": "^7.20.12"
  },
  "private": true
}

eas.json内容

{
  "build": {
    "preview": {
      "android": {
        "buildType": "apk"
      }
    },
    "preview2": {
      "android": {
        "gradleCommand": ":app:assembleRelease"
      }
    },
    "preview3": {
      "developmentClient": true
    },
    "production": {}
  }
}

app.json内容

{
  "expo": {
    "name": "mytodoapp",
    "slug": "mytodoapp",
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "userInterfaceStyle": "light",
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ],
    "ios": {
      "supportsTablet": true
    },
    "android": {
      "adaptiveIcon": {
        "foregroundImage": "./assets/adaptive-icon.png",
        "backgroundColor": "#FFFFFF"
      },
      "package": "com.hanudas.mytodoapp"
    },
    "web": {
      "favicon": "./assets/favicon.png"
    },
    "extra": {
      "eas": {
        "projectId": "b5bb265d-679e-4a9b-b6d5-0b4089aa554f"
      }
    }
  }
}

排查方向

  • 抓取崩溃日志:连接真机后执行adb logcat *:E,启动应用后查看输出的错误信息,这是定位问题的核心步骤。
  • 解决依赖冲突:项目同时安装了@react-navigation/native(v6)和react-navigation(v4),两个版本完全不兼容,会引发运行时冲突,建议移除react-navigation依赖,统一使用v6系列导航库。
  • 验证资源文件:确认icon.png、splash.png等资源文件存在于指定路径,打包时资源缺失会直接导致启动崩溃。
  • 检查权限配置:如果应用用到相机、存储等权限,需在app.json的android.permissions字段中声明,真机权限缺失可能触发崩溃。
  • 测试开发客户端:用preview3配置构建开发客户端(执行eas build --profile preview3 --platform android),安装到真机后启动,可获得更详细的错误提示。
  • 清理缓存重建:执行expo r -c清理缓存后重新打包,排除缓存导致的构建异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:10:23