Flutter测试版正常但Google Play发布版无法连接REST服务
Google Play发布版与测试版的差异排查点
- App签名差异:测试版一般使用调试签名,Google Play发布版会通过Play App Signing重新签名。如果你的REST服务配置了应用签名哈希绑定(比如SSL证书固定),发布版的签名哈希不匹配会导致请求无法建立连接。需检查服务端是否添加了发布版的SHA-1/SHA-256哈希值。
- ProGuard/R8混淆问题:发布版默认启用代码混淆,若网络相关代码(如
http包的核心类)被错误混淆,会导致请求逻辑异常。检查proguard-rules.pro是否添加了必要的保留规则:-keep class io.flutter.plugins.http.** { *; } -keep class okhttp3.** { *; } -keep class okio.** { *; } - 权限配置遗漏:尽管测试版正常,但发布版可能因清单合并或构建配置问题,丢失
INTERNET权限。确认AndroidManifest.xml中明确声明:<uses-permission android:name="android.permission.INTERNET" /> - API环境配置错误:测试版可能连接测试环境API,发布版未正确切换到生产环境地址,或生产环境的端口/域名存在配置问题(比如新端口未在防火墙开放,或域名解析异常)。
- App Bundle拆分问题:使用App Bundle发布时,若配置不当可能导致网络相关的代码或资源未被打包到对应设备的APK中。可尝试生成完整的APK安装测试,验证是否能正常连接。
- SSL证书验证差异:测试版可能临时关闭了SSL证书验证(如设置
badCertificateCallback跳过验证),而发布版未保留该逻辑。若生产环境SSL证书存在链不完整、域名不匹配等问题,会导致请求挂起无响应。 - 系统后台限制:发布版应用可能被Android系统的电池优化、后台限制策略拦截网络请求,尤其是Android 9及以上版本。可引导用户将应用加入电池优化白名单后重试。
内容的提问来源于stack exchange,提问作者Paul Coshott
相关产品推荐
相关产品推荐

