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
相关产品推荐
相关产品推荐

