Flutter应用在Android模拟器中突然完全无法联网问题求助
排查方向与可能故障原因
1. 模拟器运行缓存/实例故障
- 冷启动模拟器:关闭当前运行的模拟器,在Android Studio设备管理器中选择对应模拟器,点击下拉菜单的
Cold Boot Now启动,避免运行时缓存异常导致网络权限分配错误 - 重置模拟器数据:在设备管理器中选择对应模拟器,点击
Wipe Data清除所有模拟器内的用户数据与缓存后重新启动,排查模拟器内应用权限缓存异常的问题 - 更换模拟器API版本测试:新建一个不同API等级的模拟器(比如之前用API 33就换API 32/34)运行应用,排查特定API版本的模拟器系统bug
- 修改模拟器DNS配置:部分模拟器默认DNS服务器会出现域名解析失败问题,可将模拟器DNS修改为公共DNS(比如8.8.8.8)后测试
2. Flutter项目编译缓存异常
- 执行全量清理重新编译:在项目根目录依次执行以下命令:
排查增量编译导致的配置文件未生效、构建缓存异常的问题flutter clean flutter pub get flutter run - 核对构建变体:确认当前运行的debug/profile/release变体对应目录的AndroidManifest.xml配置没有被覆盖,避免特定变体配置文件误加访问限制
3. 安卓网络安全配置限制
- 检查
android/app/src/main/res/xml下的network_security_config.xml文件:如果配置了域名白名单、明文访问限制,排查是否存在目标域名过期、本地测试域名/IP变更的情况 - 核对明文访问配置:安卓高版本默认限制明文HTTP访问,如果应用访问的是HTTP接口,确认网络安全配置中已添加对应域名的明文访问许可,或在AndroidManifest.xml的application标签中配置了
android:usesCleartextTraffic="true" - 检查应用运行时权限:在模拟器设置-应用中找到你的Flutter应用,查看网络权限是否被系统意外禁用,部分模拟器版本会出现权限声明正常但运行时被拦截的情况
4. 依赖库兼容问题
- 核对网络依赖版本:检查
pubspec.lock中依赖的网络库(比如dio、http)是否发生了被动升级,如果依赖写的是^x.x.x形式的版本范围,执行pub get时可能会升级到兼容小版本,部分版本升级后会出现默认配置变更(比如默认强制HTTPS、默认绑定代理等) - 回滚历史依赖版本:对比2个月前的
pubspec.lock文件,将网络相关依赖固定为当时的版本后重新编译测试
5. 代理配置异常
- 检查Flutter运行参数:排查是否残留了Charles/Fiddler等抓包工具的代理配置在IDE运行参数中,导致应用网络请求被转发到不可用的代理地址
- 检查模拟器系统代理:在模拟器设置-网络中查看是否配置了代理,即使Chrome可以正常访问,也可能存在部分应用代理规则不兼容的情况
内容的提问来源于stack exchange,提问作者Tal Rofe
相关产品推荐
相关产品推荐

