React Native打包APK后Axios API请求失效问题求助
检查网络权限配置
安卓生产包需要显式声明网络权限,打开app.json或app.config.js,确认安卓配置里包含:"android": { "permissions": ["INTERNET"] }开发模式下Expo会自动添加权限,但EAS生产打包严格遵循配置,漏加的话设备会直接禁止网络请求。
核对API地址是否正确
开发时你可能用的是本地IP(比如http://192.168.x.x:3000),但打包后物理设备没法访问你的本地服务器。赶紧换成公网可访问的API地址,或者确保设备和服务器在同一局域网且IP没变动。
建议用环境变量区分环境,避免硬编码:const BASE_URL = process.env.NODE_ENV === 'production' ? 'https://你的公网API地址' : 'http://192.168.1.100:3000'; const axiosInstance = axios.create({ baseURL: BASE_URL });完善错误捕获逻辑
别光盯着“请求没发起”,说不定是请求发了但被吞了异常。给所有Axios请求加上try/catch,或者全局拦截器里打印错误:axiosInstance.interceptors.response.use( res => res, err => { console.error('API请求出错:', err); return Promise.reject(err); } );用
adb logcat *:S ReactNative:V ReactNativeJS:V过滤日志,能看到JS层的具体报错,比全量日志清晰多了。确认EAS打包的环境变量
如果你用了Expo环境变量,确保EAS打包时能读到正确的配置。比如在.env.production里写好生产环境的API地址,然后在eas.json里指定生产配置:"build": { "production": { "env": { "NODE_ENV": "production", "API_URL": "https://你的公网API地址" } } }打包时执行
eas build --platform android --profile production,别用错了profile。排查SSL证书问题
如果API用的是HTTPS,证书必须是合法的公网证书。安卓7.0以上默认不认可自签名证书,开发时你可能关了安全校验,但生产打包后会严格验证。要是必须用自签名证书,得在安卓项目里手动添加证书信任配置。
内容的提问来源于stack exchange,提问作者Ebubechi Ihediwa

