Expo打包APK后无法连接本地服务器问题求助
解决方案:Expo打包APK后无法连接本地服务器
检查本地服务器的网络监听配置
Expo Go能正常访问是因为和开发机处于同一局域网,且开发环境下服务器通常允许局域网访问,但打包后的APK若遇到服务器仅绑定127.0.0.1(本地回环地址),手机就无法建立连接。- 将服务器的监听地址修改为
0.0.0.0,允许所有外部IP访问 - 确保手机与服务器处于同一Wi-Fi网络,若需跨网访问,给服务器配置公网访问规则(比如路由器端口映射)
- 将服务器的监听地址修改为
处理Android的明文HTTP限制
Android 9及以上系统默认禁止明文HTTP请求,Expo Go为开发需求放宽了该限制,但正式打包的APK会严格遵循系统规则。- 若必须使用HTTP协议,在
app.json的expo.android字段中添加配置:"android": { "usesCleartextTraffic": true, // 保留原有其他配置 } - 长期解决方案建议给服务器配置HTTPS证书,比如使用Let's Encrypt的免费证书
- 若必须使用HTTP协议,在
修正服务器地址的硬编码问题
开发阶段写死的localhost或开发机固定IP,在打包后的APK中是无效的(localhost指向手机自身,而非开发机)。- 开发时可通过
Constants.expoConfig?.hostUri自动获取开发机的局域网IP - 打包APK前,将服务器地址替换为公网域名/IP,或添加配置界面让用户手动输入服务器地址
- 开发时可通过
排查防火墙和端口拦截
开发机的防火墙可能拦截了手机的访问请求,跨网访问时路由器未配置端口转发也会导致连接失败。- 临时关闭开发机的防火墙,或在防火墙上开放服务器使用的端口
- 跨网访问时,在路由器中设置端口转发,将公网端口映射到开发机的内网端口
确认打包时的环境变量配置
开发时使用的服务器地址环境变量,可能未正确注入到打包后的APK中。- 检查
app.config.js或app.json中的生产环境服务器地址配置 - 打包时手动传递环境变量,例如:
EXPO_PUBLIC_SERVER_URL=https://your-server.com expo build:android
- 检查
内容的提问来源于stack exchange,提问作者Kenyer Ramírez
相关产品推荐
相关产品推荐

