You need to enable JavaScript to run this app. Flutter打包APK成功后向API发送请求失败如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

Flutter打包APK成功后向API发送请求失败如何解决?

问题原因
  • Android 9(API Level 28)及以上系统默认禁止明文HTTP请求,你调用的接口是http开头的内网地址,属于明文请求类型,Debug模式下默认开启了明文请求权限不会触发拦截,Release打包后就会被系统拦截导致请求无法发出。
  • 打包时未在Android配置文件中声明网络权限,导致Release版应用没有网络访问权限。
解决方法

步骤1:添加网络权限

打开Android项目路径下的android/app/src/main/AndroidManifest.xml,在<manifest>根标签内、<application>标签外添加网络权限声明:

<uses-permission android:name="android.permission.INTERNET" />

步骤2:配置明文请求权限

以下两种方案二选一即可:

方案A:全局允许明文请求(仅推荐测试阶段使用)

修改上述AndroidManifest.xml,在<application>标签中新增android:usesCleartextTraffic="true"属性:

<application
    android:label="你的应用名称"
    android:name="${applicationName}"
    android:icon="@mipmap/ic_launcher"
    <!-- 新增此行配置 -->
    android:usesCleartextTraffic="true">

方案B:仅允许指定域名的明文请求(安全性更高,推荐正式环境使用)

  1. 在android/app/src/main/res目录下新建xml文件夹,在该文件夹内新建network_security_config.xml文件,写入如下配置:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <!-- 此处填写你要允许访问的内网IP或域名 -->
        <domain includeSubdomains="true">192.168.1.9</domain>
    </domain-config>
</network-security-config>
  1. 回到AndroidManifest.xml的<application>标签,添加网络安全配置引用:
<application
    android:label="你的应用名称"
    android:name="${applicationName}"
    android:icon="@mipmap/ic_launcher"
    <!-- 新增此行配置 -->
    android:networkSecurityConfig="@xml/network_security_config">

iOS端适配(如果需要打iOS包)

iOS系统默认同样禁止明文HTTP请求,需要在ios/Runner/Info.plist的<dict>标签内添加如下配置:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

所有配置修改完成后,重新打包APK即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 07:06:06