React Native Expo打包APK后网络请求失败问题求助
问题分析与解决方案
你的问题核心是Android 9(API 28)及以上版本默认禁止HTTP明文网络请求,Expo开发环境因为自带调试豁免机制所以能正常请求,但打包成正式APK后会触发系统的安全限制,导致HTTP请求失败。
下面是具体解决步骤:
1. 配置Android网络安全规则(关键)
在Expo项目的app.json(或app.config.js)中添加Android网络安全配置,允许你的API域名/IP的HTTP请求:
{ "expo": { // ... 其他原有配置 "android": { // ... 其他Android配置 "networkSecurityConfig": { "domainConfigs": [ { "domain": "你的API域名或IP地址", "cleartextPermitted": true } ] } } } }
如果需要临时允许所有HTTP请求(不推荐生产环境使用),可以用更宽松的配置:
"networkSecurityConfig": { "cleartextTrafficPermitted": true }
配置完成后,重新生成AAB再转APK即可。
2. 确认网络权限
确保你的项目已经声明了网络权限,Expo默认会添加,但可以在app.json里确认:
{ "expo": { "android": { "permissions": ["INTERNET"] } } }
3. 额外排查点
- 确认打包后的APK使用的API地址正确:检查
API_ENDPOINTS.LOGIN在打包环境中是否指向正确的HTTP地址,避免开发环境和生产环境的地址不一致。 - 测试设备网络:确保设备能正常访问该API的HTTP地址(比如用浏览器打开API链接确认),排除网络本身的问题。
你的登录代码本身没有问题,核心是Android系统对HTTP明文请求的限制导致打包后请求失败,按照上面的配置修改后就能解决。
内容的提问来源于stack exchange,提问作者Ahsan Raza
相关产品推荐
相关产品推荐

