Flutter应用在部分安卓(含华为)机型上全部网络请求被拦截问题求助
Flutter华为机型首页卡住无网络请求排查方案
第一优先级:排查华为系统特有拦截规则
- 先确认出问题的华为设备的HarmonyOS版本,重点排查HarmonyOS 3.0及以上版本的网络访问权限管控:华为新增了「只允许前台使用网络」「限制后台网络访问」「恶意应用网络拦截」的默认规则,部分用户安装应用时误点了禁止后台/前台网络权限会导致该问题
- 排查应用是否触发了华为应用市场的安全管控规则:如果应用未通过华为应用市场的安全检测,被系统判定为风险应用时,会默认拦截所有网络请求
- 检查用户设备是否开启了华为纯模式:纯模式下只允许运行经过华为安全检测的应用,未上架华为应用市场的应用会被限制网络访问
第二优先级:排查Flutter侧网络逻辑适配问题
- 确认安卓Manifest文件中已经正确声明了
INTERNET和ACCESS_NETWORK_STATE权限,部分华为系统对权限声明的校验比其他品牌更严格,缺失权限会直接拦截所有网络请求 - 确认你使用的网络库版本,比如
dio、flutter_http等是否存在鸿蒙系统兼容bug:早期部分版本的网络库对HarmonyOS的网络栈适配存在缺陷,会出现初始化失败完全不发起请求的情况 - 检查是否在网络请求前调用了原生侧的权限校验逻辑:部分权限校验插件对华为设备的权限判断逻辑错误,会误判没有网络权限从而阻断请求发起
- 排查是否存在HTTP证书校验失败问题:华为系统预置的根证书列表和其他安卓设备存在差异,如果你用了自签证书或者小众CA的证书,会出现校验失败直接终止请求的情况
第三优先级:排查处理器架构适配问题
- 确认你的应用打包时是否包含了arm64-v8a、armeabi-v7a两种架构的so文件:部分华为新款设备只支持arm64架构,如果你的应用只打包了armeabi-v7a架构,会出现网络库so加载失败,无法发起请求的问题
- 排查是否使用了对arm64架构适配不完善的第三方原生插件:部分插件的arm64版本存在内存泄漏或者初始化失败的问题,会导致网络模块完全无法工作
快速验证手段
- 拿到对应问题设备的系统日志,重点筛选
flutter、okhttp、network相关的报错信息,优先定位是否有明确的权限拒绝、so加载失败、证书校验失败的报错 - 引导用户在华为设备的「设置-应用和服务-应用管理-找到你的应用-流量使用情况」中确认是否开启了「移动数据」「WLAN」「后台流量使用」等所有权限
- 把未上架的测试安装包上传到华为应用市场的应用自检平台,检测是否存在系统拦截风险
内容的提问来源于stack exchange,提问作者Carlos Pinheiro
相关产品推荐
相关产品推荐

