Flutter http库在release构建版本下无法正常使用的问题
Flutter Release模式http库无法访问网络解决方案
问题背景
debug模式下所有功能运行正常,但打包生成release构建版本后,Flutter的http库无法正常工作。已在AndroidManifest文件中添加了互联网权限,使用的Flutter版本为2.5.0,http库版本为0.13.3,新建空白项目测试也可复现该问题。
排查与解决步骤
- 首先检查安卓系统明文流量限制规则:安卓9(API Level 28)及以上系统默认禁止应用使用HTTP明文流量,debug模式默认豁免明文限制,release模式会严格遵循系统规则,若你的请求地址为HTTP而非HTTPS协议,会直接被系统拦截。
解决方法:在android/app/src/main/AndroidManifest.xml的<application>标签中添加明文流量许可属性:
配置示例:android:usesCleartextTraffic="true"<application android:name="io.flutter.app.FlutterApplication" android:label="应用名称" android:icon="@mipmap/ic_launcher" android:usesCleartextTraffic="true"> <!-- 新增该行配置 --> - 其次排查Release版本代码压缩混淆问题:Flutter 2.5.0版本打包release默认开启R8代码压缩,http库依赖的类如果被误裁剪会导致请求逻辑异常。
解决方法:在android/app/proguard-rules.pro文件中添加http库对应的混淆保留规则:
同时确认-keep class com.google.common.net.** { *; } -keep class io.flutter.plugins.http.** { *; }android/app/build.gradle中release构建配置已关联混淆规则文件:release { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // 其余原有配置保持不变 } - 临时验证方案:可在release构建配置中添加
minifyEnabled false和shrinkResources false关闭代码压缩和资源裁剪,确认是否为压缩逻辑导致的问题。
生效验证
所有配置修改完成后,执行flutter clean清理项目缓存,再重新打包release版本测试即可。
内容的提问来源于stack exchange,提问作者Julia Breitenbach
相关产品推荐
相关产品推荐

