Ionic 3安卓打包后API接口GET请求404问题求助
我之前也碰到过一模一样的坑!本地用ionic serve测试接口全正常,一打包成安卓release(甚至debug)版本就出现GET 404,折腾了好一阵才捋清楚几个关键排查点,你可以挨个试试:
别用localhost/127.0.0.1作为API地址
本地开发时,localhost指向你的开发机器,但安卓设备或模拟器是独立的系统,它的localhost是自己本身,自然访问不到你的本地API。要换成开发机的局域网IP(比如http://192.168.1.100:3000/api),如果是生产构建,记得切换到正式环境的API域名。检查安卓网络权限与明文HTTP限制
- 确认
platforms/android/app/src/main/AndroidManifest.xml里有没有添加网络权限:<uses-permission android:name="android.permission.INTERNET" /> - 如果你用的是HTTP而非HTTPS,Android 9及以上默认会拦截明文请求。需要在
res/xml/network_security_config.xml中配置允许明文:
然后在<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true" /> </network-security-config>AndroidManifest.xml的<application>标签里添加引用:android:networkSecurityConfig="@xml/network_security_config"
- 确认
确认Prod环境的API配置正确
如果你用了Ionic的环境变量,src/environments/environment.prod.ts里的API地址一定要和environment.ts区分开!因为执行--prod构建时,Ionic会自动加载prod环境的配置,别不小心把本地地址留在prod配置里了。
可以临时在接口调用处加个日志:console.log('当前API地址:', environment.apiUrl),然后用ionic cordova run android --prod -l启动livereload模式,通过logcat查看输出,确认地址是否正确。验证设备网络与API可达性
先排除网络本身的问题:在安卓设备的浏览器里直接输入API的完整地址,看看能不能正常返回数据。如果浏览器也访问不了,那要么是设备没连对网络(比如本地API需要和开发机同局域网),要么是API服务本身有问题。注意Cordova打包后代理不生效
本地开发时你可能在ionic.config.json里配置了代理来解决CORS问题,但打包成安卓后,Cordova的WebView不需要代理,直接访问真实API地址即可。这时候要确保后端API已经配置了正确的CORS规则,允许安卓应用的请求(开发阶段可以临时允许所有跨域,生产环境建议限制具体域名)。
如果以上方法都试过还是不行,可以补充下你的Ionic/Cordova版本、安卓系统版本、API地址类型(本地/线上)这些细节,方便进一步排查!
内容的提问来源于stack exchange,提问作者Vinicius Andrade

