Flutter打包APK后无法连接000webhost数据库问题求助
问题排查与解决方案
一、核心问题排查方向
1. 网络权限配置
- 检查
AndroidManifest.xml(路径:android/app/src/main/AndroidManifest.xml)是否添加了必要的网络权限:
打包APK时如果遗漏这两个权限,真机完全无法发起网络请求,直接导致登录/注册无响应。<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
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接口,从根源避免明文请求限制。
- 如果你的接口用的是HTTP,需要创建
3. 添加请求错误日志捕获
- 在登录/注册的请求代码里加上错误捕获,打印详细日志,比如用
try-catch包裹请求逻辑:
然后把手机连到Android Studio,打开Logcat查看日志——这是最快定位具体问题的方法。try { var response = await http.post(Uri.parse('你的接口地址'), body: {"username": "xxx", "password": "xxx"}); print('请求状态码:${response.statusCode}'); print('响应内容:${response.body}'); } catch (e) { print('请求失败详情:$e'); }
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
相关产品推荐
相关产品推荐

