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

Flutter打包APK后无法连接000webhost数据库问题求助

问题排查与解决方案

一、核心问题排查方向

1. 网络权限配置

  • 检查AndroidManifest.xml(路径:android/app/src/main/AndroidManifest.xml)是否添加了必要的网络权限:
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
    打包APK时如果遗漏这两个权限,真机完全无法发起网络请求,直接导致登录/注册无响应。

2. 000webhost访问限制与明文请求问题

  • 000webhost免费托管的接口,可能存在非浏览器请求拦截;另外Android 9及以上系统默认禁止HTTP明文网络请求:
    • 如果你的接口用的是HTTP,需要创建android/app/src/main/res/xml/network_security_config.xml,内容如下:
      <?xml version="1.0" encoding="utf-8"?>
      <network-security-config>
          <base-config cleartextTrafficPermitted="true" />
      </network-security-config>
      
      再在AndroidManifest.xml的<application>标签里添加:
      android:networkSecurityConfig="@xml/network_security_config"
      
    • 优先推荐给000webhost配置SSL,改用HTTPS接口,从根源避免明文请求限制。

3. 添加请求错误日志捕获

  • 在登录/注册的请求代码里加上错误捕获,打印详细日志,比如用try-catch包裹请求逻辑:
    try {
      var response = await http.post(Uri.parse('你的接口地址'), body: {"username": "xxx", "password": "xxx"});
      print('请求状态码:${response.statusCode}');
      print('响应内容:${response.body}');
    } catch (e) {
      print('请求失败详情:$e');
    }
    
    然后把手机连到Android Studio,打开Logcat查看日志——这是最快定位具体问题的方法。

4. 打包模式差异排查

  • 模拟器用的是debug模式,release打包可能因代码混淆或优化导致请求异常:
    打开android/app/build.gradle,暂时关闭release模式的混淆测试:
    buildTypes {
        release {
            minifyEnabled false // 先设为false测试
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    

二、需要提供的文件/信息

  • 完整的AndroidManifest.xml内容
  • 登录/注册功能的Dart请求代码
  • 真机调试时Logcat里的网络请求错误日志
  • 你的000webhost接口地址(若方便提供)
  • android/app/build.gradle中的buildTypes配置段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 03:03:14