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
相关产品推荐
相关产品推荐

