React Native App打包安装后无法启动,Expo Go可正常运行求解决
使用命令eas build -p android --profile preview构建React Native App后,生成的APK安装到模拟器及真机均无法启动,但Expo Go运行完全正常。相关配置文件如下:
eas.json
{ "cli": { "version": ">= 3.14.0" }, "build": { "preview": { "android": { "buildType": "apk" } }, "development": { "developmentClient": true, "distribution": "internal" }, "production": {} }, "submit": { "production": {} } }
config.json
{ "name": "react_native_test1", "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/vector-icons": "^13.0.0", "@react-navigation/native": "^6.1.7", "@react-navigation/stack": "^6.3.17", "expo": "~48.0.18", "expo-status-bar": "~1.4.4", "react": "18.2.0", "react-native": "0.71.8", "expo-sqlite": "~11.1.1", "expo-file-system": "~15.2.2", "expo-asset": "~8.9.1" }, "devDependencies": { "@babel/core": "^7.20.0" }, "private": true }
抓取崩溃日志定位问题
用adb logcat命令获取设备日志,过滤应用包名对应的错误信息,比如执行adb logcat *:E | grep com.reactnativetest1(替换为你的实际包名),直接查看崩溃原因,这是最有效的排查方式。检查资源打包配置
Expo Go会自动处理资源加载,但独立构建需要明确配置资源打包规则。在app.json中添加或确认assetBundlePatterns配置,确保所有本地资源被正确打包:"assetBundlePatterns": [ "**/*" ]清理依赖并更新工具链
删除node_modules和package-lock.json,重新安装依赖:rm -rf node_modules package-lock.json && npm install;同时更新EAS CLI到最新稳定版:npm install -g eas-cli,之后清理Expo缓存:expo r -c。补充Android权限配置
部分依赖(如expo-file-system)需要特定权限才能在独立构建中运行,在app.json的android字段中添加必要权限:"android": { "permissions": [ "READ_EXTERNAL_STORAGE", "WRITE_EXTERNAL_STORAGE" ] }构建开发版APK调试
使用eas build -p android --profile development构建开发版APK,安装后通过expo start --dev-client连接调试,确认是构建配置问题还是代码逻辑在离线环境下的兼容问题。
内容的提问来源于stack exchange,提问作者sebastian kull

