Repository navigation
inkScroll 0.3.3
inkScroll 0.3.3
修掉本项目最严重的 bug:release 包完全无法联网。
症状
从 0.2.0 起,NAS 相关功能在手机上一次都没成功过,一律提示"连接不上服务器"。
看起来像地址写错、网络不通、双层 NAT、端口映射未生效 —— 全都不对。
真正的报错是:
SocketException: Connection failed
(OS Error: Operation not permitted, errno = 1)
errno = 1 是 EPERM —— Android 直接禁止了 App 联网,与网络环境无关。
根因
Flutter 模板只在 src/debug/AndroidManifest.xml 里声明了 INTERNET 权限
(为了热重载),src/main/AndroidManifest.xml 里没有。于是:
| 包类型 | 联网 |
|---|---|
| debug | ✅ 正常 |
| release | ❌ 被系统拒绝 |
排查时我一直用 flutter build apk --debug 在模拟器上测试,
完美掩盖了这个问题;而用户装的都是 release 包。
修复
src/main/AndroidManifest.xml补上INTERNET与ACCESS_NETWORK_STATE- 新增
res/xml/network_security_config.xml:Android 9+ 默认禁止明文 HTTP,
而家用 NAS 的 WebDAV 常见是http://192.168.x.x:5005。显式放开,
否则填 http 地址也会被系统拦掉
验证(这次是 release 包)
在真机上用 0.3.3 release 包连接 chmlfrp 隧道 https://8.162.5.68:64815:
| 修复前 | 修复后 | |
|---|---|---|
| 报错 | Operation not permitted (errno=1) |
HTTP 401 |
| 含义 | Android 禁止联网 | 网络通畅,仅账号未通过 |
| 进程日志 | EPERM 异常 | 无异常 |
用假账号测试得到 401 —— 说明隧道、双层 NAT、HTTPS、自签名证书全链路都通。
教训
涉及联网的功能,必须在 release 包上验证。 debug 包自带 INTERNET 权限,
会让这类问题 100% 隐形。已写进代码注释。
下载
| 架构 | 适用机型 |
|---|---|
inkscroll-0.3.3-arm64-v8a.apk |
绝大多数现代手机(推荐) |
inkscroll-0.3.3-armeabi-v7a.apk |
较老的 32 位设备 |
inkscroll-0.3.3-x86_64.apk |
模拟器 |
⚠️ 如果你装过旧版本,可能因签名不同而无法覆盖安装,请先卸载再装。
Full Changelog: v0.3.2...v0.3.3