Expo构建的独立Android APK需Metro Bundler才能连API,求排查
解决方案:独立APK需依赖Metro Bundler才能连接API的问题
1. 检查API地址配置
- 绝对不要用本地IP/
localhost作为API地址,替换成公网可访问的后端域名或服务器公网IP。 - 若使用环境变量,确保构建生产APK时加载的是生产环境变量:
- 比如在
app.config.js中根据process.env.EXPO_PUBLIC_ENV切换地址; - 构建时用
eas build --profile production(EAS Build)或确保expo build:android时注入了正确的生产环境变量。
- 比如在
2. 确认构建的是生产版本
- 避免构建开发/预览版APK:
- 用
expo build:android时不要加--dev参数; - EAS Build需检查
eas.json的production配置:{ "build": { "production": { "developmentClient": false, "env": { "EXPO_PUBLIC_API_URL": "https://your-production-api.com" } } } }
- 用
3. 清除缓存后重新构建
- 清除Expo本地缓存:
expo r -c - EAS Build清除构建缓存:
eas build --clean - 传统构建可删除
.expo目录后重新执行构建命令。
4. 验证网络权限与跨域设置
- 确保
app.json中添加了网络权限:{ "android": { "permissions": ["INTERNET"] } } - 若后端用HTTP,需在
app.json中允许明文流量(生产环境建议改用HTTPS):{ "android": { "usesCleartextTraffic": true } } - 后端需允许APK的请求来源跨域,或直接使用同域名/IP部署。
5. 调试定位具体错误
- 用
adb logcat查看APK网络日志,搜索关键词如IOException、OkHttp,定位连接失败的具体原因(DNS错误、超时、权限问题等)。 - 在代码中添加日志输出当前API地址,确认是否正确加载了生产环境配置。
内容的提问来源于stack exchange,提问作者Dreamer
相关产品推荐
相关产品推荐

