生成APK后模拟器正常但真机无法连接API的问题咨询
问题根本原因
你遇到的登录接口仅在真机APK环境失效、模拟器运行完全正常的情况,完全匹配 Android系统的明文HTTP流量默认拦截规则,和你已经配置的网络权限没有冲突。
- Android 9.0(API 28)及以上版本的真机系统,默认禁止APP发起任何未加密的HTTP明文请求,仅允许HTTPS加密请求通行。
- 你测试加载网络图片功能正常,是因为主流的图片加载组件内部已经内置了明文请求的适配逻辑,你自己用
http包实现的登录POST请求没有这类适配,会被系统网络栈直接拦截,根本不会把请求发到你的后端服务,自然拿不到正常的接口响应。 - 模拟器上运行正常,是因为多数开发使用的模拟器系统版本较低,或者默认开启了全局明文流量允许的开关,没有触发系统的拦截规则。
对应修复方案
- 调试阶段快速验证
打开android/app/src/main/AndroidManifest.xml文件,在<application>标签内添加属性android:usesCleartextTraffic="true",重新打包生成APK安装到真机,登录接口即可正常通信。 - 正式上线版本规范配置
不建议全局放开明文流量限制,可单独为登录接口的HTTP域名配置白名单,降低安全风险:- 在
android/app/src/main/res/xml/路径下新建network_security_config.xml配置文件 - 在配置文件中单独允许
taquillamedicina.mdgsystem.com域名走明文HTTP通道,其余网络请求仍强制走HTTPS加密通道 - 回到
AndroidManifest.xml,将之前全局放开的usesCleartextTraffic属性替换为android:networkSecurityConfig="@xml/network_security_config"
- 在
补充提示
- 明文流量拦截是Android系统的独立安全规则,和基础网络权限不属于同一配置项,不存在加了网络权限就一定会放开明文请求的逻辑。
- 长期开发建议把后端接口升级为HTTPS协议,从根源上规避系统拦截问题,也符合主流应用市场的上架审核要求。
内容的提问来源于stack exchange,提问作者user8419207
相关产品推荐
相关产品推荐

