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

Flutter打Release APK正常 但Google Play分发版本无法联网怎么解决

可能的原因及对应排查方案

  • Google Play 应用签名证书指纹未加入服务白名单
    这是概率最高的原因。如果你开启了Google Play的Play App Signing服务,Google会用其管理的官方签名证书对你上传的AAB进行重签,最终分发到用户的APK签名和你本地打包的Release APK签名完全不同。如果你的后端服务、第三方API(如地图、推送、统计等)配置了签名证书SHA-1/SHA-256校验,仅添加了本地打包的证书指纹,就会导致Google Play分发的版本请求被拦截。
    排查方式:在Google Play控制台的「应用完整性」页面复制Google管理的签名证书指纹,添加到你的后端、第三方服务的白名单中即可。

  • 网络安全配置仅对Debug环境生效
    如果你在项目中配置了network_security_config.xml,或者配置了android:usesCleartextTraffic属性,仅修改了debug目录下的AndroidManifest.xml,而main/release目录下的AndroidManifest未添加对应配置,会导致Release版本的网络请求被系统限制:

    • 如果你的应用需要访问HTTP明文流量,必须在main目录下的AndroidManifest的application节点添加属性 android:usesCleartextTraffic="true",或者在网络安全配置中明确放行对应明文域名
    • 如果你在网络安全配置中仅添加了Debug阶段的抓包证书、测试域名放行规则,需要补充生产环境所需的域名、证书配置
  • AAB构建时的资源/规则裁剪问题
    部分开发者构建AAB时会开启极端的代码混淆、资源缩减配置,如果误裁剪了和网络请求相关的类、资源、或者AndroidManifest的权限配置项,也会导致网络异常。
    排查方式:在本地构建AAB后用bundletool工具拆分出通用APK,安装测试是否复现问题,如果复现可以调整proguard-rules.pro文件,添加Flutter网络库相关的保留规则,比如常用的Dio库的混淆规则:

    -keep class com.dio.** {*;}
    -keep class io.flutter.app.** { *; }
    -keep class io.flutter.plugin.**  { *; }
    -keep class io.flutter.util.**  { *; }
    -keep class io.flutter.view.**  { *; }
    -keep class io.flutter.**  { *; }
    -keep class io.flutter.plugins.**  { *; }
    
  • 权限配置位置错误
    虽然你确认已添加INTERNET权限,但需要确认权限是写在main目录下的AndroidManifest.xml的根节点下,而不是application节点内部,也不是仅写在debug目录的配置文件中。正确的配置位置示例:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.your.package">
        <!-- 正确的权限配置位置 -->
        <uses-permission android:name="android.permission.INTERNET" />
        <application
          ...
        >
        </application>
    </manifest>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:30:05