You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Play商店发布版Flutter安卓应用HTTP请求被拦截,调试/直装版正常

解决Flutter安卓Play内部测试版HTTP请求失败问题

核心问题定位

仅Play商店内部测试渠道的包出现SocketException: Operation not permitted, errno=1,本地构建的release/debug包正常,说明问题出在Play商店的构建、签名或权限处理流程,而非本地代码逻辑。

具体修复步骤

1. 补全网络权限声明

你的AndroidManifest.xml未声明必要的网络权限,本地构建时Flutter可能自动注入,但Play商店的App Bundle构建不会。在<manifest>根标签下添加:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2. 确认明文流量配置有效性

虽然你加了android:usesCleartextTraffic="true",但如果存在network_security_config.xml,需确保它没有限制目标API的明文流量:

  • 检查android/app/src/main/res/xml/network_security_config.xml(若存在),添加目标域名的明文许可:
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">你的API域名</domain>
    </domain-config>
</network-security-config>
  • 若没有该文件,无需额外操作。

3. 检查Google Play App Signing配置

Play商店的重新签名流程可能覆盖部分配置:

  • 确认上传的App Bundle是本地正常构建的release版本,未修改核心配置文件
  • 登录Play控制台,进入「应用签名」页面,确认签名证书无额外权限限制

4. 临时禁用R8混淆排查

Play商店的R8优化可能误处理网络代码,临时禁用测试:
在android/app/build.gradle的release构建类型中修改:

release {
    minifyEnabled false
    shrinkResources false
}

若修复,再在proguard-rules.pro中添加网络库(如http、dio)的混淆豁免规则。

5. 排除Play Protect拦截

测试设备的Play Protect可能拦截未知应用的网络请求:

  • 设备设置→安全→Play Protect,关闭「扫描设备以查找安全威胁」,重装测试包验证

验证流程

修改后重新构建App Bundle,上传至Play内部测试渠道,等待10分钟后下载测试,确认请求正常后再逐步恢复优化配置。


内容的提问来源于stack exchange,提问作者Laurent K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 03:22:32