Expo EAS Build打包的APK无法连接后端问题咨询
排查EAS Build生成的Android APK无法连接后端的问题
检查后端API地址配置
- 确认preview环境下的API地址是否正确:Expo Go调试时可能用的是本地局域网IP(如
192.168.x.x),但APK安装到设备后,若设备和后端不在同一局域网,本地IP会无法访问,需替换为公网域名或设备可访问的局域网IP。 - 核对
app.config.js或app.json中preview profile对应的环境变量,比如API_URL,EAS Build会根据指定profile加载对应配置。
- 确认preview环境下的API地址是否正确:Expo Go调试时可能用的是本地局域网IP(如
验证网络权限
- 检查项目配置中是否添加了
INTERNET权限,Expo项目默认包含,但手动修改配置后可能丢失。配置示例:"android": { "permissions": ["INTERNET"] }
- 检查项目配置中是否添加了
排查HTTPS证书问题
- 若后端使用自签名HTTPS证书,APK版本应用会严格验证证书(Expo Go调试模式会放宽限制),导致连接失败。需更换为受信任的SSL证书,或在preview构建中临时配置允许调试证书(仅用于排查,不建议生产环境)。
检查后端CORS策略
- 后端需允许APK的包名发起请求:Expo Go的包名是
host.exp.exponent,而EAS Build生成的APK包名是app.json中android.package配置的内容,需确保后端CORS规则包含该包名。
- 后端需允许APK的包名发起请求:Expo Go的包名是
调试网络请求细节
- 用Android Studio的Logcat过滤应用包名,查看登录请求的具体错误日志(如连接超时、证书验证失败、HTTP状态码异常等)。
- 在登录请求代码中添加错误捕获,打印详细错误信息:
try { const response = await fetch(`${apiUrl}/login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password }) }); if (!response.ok) { console.error('登录请求失败:', response.status, await response.text()); } } catch (error) { console.error('网络请求错误:', error.message); }
内容的提问来源于stack exchange,提问作者Didier2791
相关产品推荐
相关产品推荐

