Expo@49 Android端网络请求失败,iOS端API调用正常求助
Expo 49 Android 全量网络请求失败排查与解决
1. 检查 Android 网络安全配置
Expo 49 对 Android 11+ 的网络安全策略做了更新,即使是 HTTPS 请求也可能因配置限制失败:
- 打开
app.json或app.config.js,确认android.networkSecurityConfig配置,添加目标域名的信任规则:"android": { "networkSecurityConfig": { "domainConfigs": [ { "domain": "api.mydomain.com", "cleartextTrafficPermitted": false }, { "domain": "2factor.in", "cleartextTrafficPermitted": false } ] } } - 若使用自签名证书,需在配置中额外添加证书信任规则。
2. 验证 HTTP 客户端兼容性
Expo 49 升级后,部分旧版 HTTP 客户端库可能出现兼容性问题:
- 若使用原生
fetch,检查请求头是否包含 Android 不支持的字段,简化请求头后重试。 - 若使用
axios,升级到最新稳定版,旧版本可能与 Expo 49 的 Android 环境冲突。测试基础请求示例:try { const res = await fetch('https://api.mydomain.com/health'); const data = await res.json(); console.log('请求成功:', data); } catch (err) { console.error('请求失败详情:', err.message, err.stack); }
3. 确认 Android 权限配置
确保app.json中已声明必要的网络权限:
"android": { "permissions": ["INTERNET", "ACCESS_NETWORK_STATE"] }
Expo 49 默认会包含这些权限,但手动确认可排除权限缺失问题。
4. 排除代理/VPN干扰
- 模拟器或真机若开启代理,可能导致请求被拦截,关闭代理后重试。
- 部分 VPN 会修改网络路由,尝试断开 VPN 测试请求是否恢复正常。
5. 临时降级 Expo 版本
若以上方案均无效,可临时降级到之前正常的 Expo 版本(如 48),确认是否为 Expo 49 的特定问题:
expo upgrade 48
内容的提问来源于stack exchange,提问作者MAYANK THAKUR
相关产品推荐
相关产品推荐

