Skip to content

inkScroll 0.3.3

Choose a tag to compare

@BaiFeng940 BaiFeng940 released this 19 Oct 10:19

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 包。

修复

  1. src/main/AndroidManifest.xml 补上 INTERNET 与 ACCESS_NETWORK_STATE
  2. 新增 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