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

Flutter Release版本运行异常,APK装真机部分页面失效如何解决?

常见原因及解决方案

  • 检查安卓网络权限配置
    调试模式下Flutter默认会给应用加INTERNET权限,但是release打包需要手动在安卓项目的android/app/src/main/AndroidManifest.xml里添加权限声明,位置在<manifest>标签下、<application>标签外:
<uses-permission android:name="android.permission.INTERNET" />
  • 处理明文HTTP请求限制
    如果你的接口请求用的是HTTP而非HTTPS,安卓9(API level 28)及以上默认禁止明文流量请求,需要在<application>标签里添加属性:
<application
    android:usesCleartextTraffic="true"
    ...其余原有配置保持不变
>
  • 补全FutureBuilder的错误处理逻辑
    你当前的代码只判断了数据加载完成和加载中两种状态,没有处理请求异常的场景,如果getParentCategoryList方法抛出了异常(比如数据解析失败、网络请求失败),页面会一直停留在加载动画状态,看不到具体报错。可以修改代码如下:
searchFlag
    ? SearchResultsListView(searchText)
    : Expanded(
        child: FutureBuilder(
          future: getParentCategoryList(context),
          builder: (context, data) {
            if (data.hasData) {
              return CategoryGridView(data.data);
            } else if (data.hasError) {
              // 此处可打印错误日志方便排查,也可直接把错误信息展示在页面上定位问题
              return Center(
                child: Text("加载失败:${data.error.toString()}"),
              );
            } else {
              return Center(
                child: CircularProgressIndicator(),
              );
            }
          },
        ),
      ),
  • 检查Release打包的混淆配置
    如果你开启了R8代码压缩/混淆,没有给数据解析用到的实体类配置keep规则的话,打包后实体类的字段名会被重命名,导致JSON解析失败拿不到数据。需要在android/app/proguard-rules.pro里添加对应实体类的keep规则,或者使用json_serializable这类自动生成解析代码的库避免手动解析的混淆问题。

  • 排查接口访问限制
    确认真机和模拟器是否在同一个网络环境,后端有没有做IP白名单限制,导致真机无法访问你的后端接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:06:04