Skip to content

NetPilot 1.3.0 — 自动化接口总开关 + 自适应采样间隔

Choose a tag to compare

@katiusu katiusu released this 05 Oct 04:55
· 10 commits to main since this release

1.3.0 更新内容

1. 自动化接口总开关(默认关)

Tasker / Locale 的 3 个 exported 组件(命令接收器、Locale 插件、插件配置界面)现在默认被系统层面禁用(manifest 写 android:enabled="false" + PackageManager.setComponentEnabledSetting)。关着时 Tasker 广播连派发都不会发生——不是「收到再判断」,而是彻底的零唤醒。不用自动化的用户完全不会被拉起进程。

要用的话:设置 → 功能 →「自动化接口」→「启用 Tasker / Locale 接口」。从 1.2.0 升级上来的用户需要重新打开一次。

2. 自适应采样间隔(默认开)

读数靠近任一门限时,采样间隔逐轮 ×0.8 缩短:60s → 48s → 38s → 30s(下限为设置值的一半,且不低于 15 秒);一旦远离门限,立刻恢复成设置的间隔。目的很明确:察觉阈值附近的变化更快,而不是省电——远离门限时不产生任何额外开销。

带宽可在功能页用「灵敏度」滑块调整(2–30 dBm,默认 10 dBm,对应 RSRP 10 dBm / SINR 3 dB / ping 50 ms 三条带)。

它只决定「多久采一次」,不参与判定:门限比较仍然使用原始读数,自适应不可能改变降级/恢复的结果。不想要就关掉这个开关,行为与 1.2.0 逐字符相同。

3. 保活失败时日志会说得清

以前被系统拒绝启动前台服务时只有一句笼统的「保活广播处理失败」,还会跟着记一条自相矛盾的「已拉起」。现在会单独识别并写明「系统拒绝了后台启动前台服务(未授予『忽略电池优化』)」,直接给出下一步该做什么。

4. 一项查证后没有做的优化

原本打算「已降级 + 冷却期内跳过整轮网络探测」。逐行核对状态机后否掉了:已降级分支里 noResponse 的消费点排在冷却闸门之前,跳过探测会让失败计数凭空 +1,触发本不该发生的回滚。要安全地做就得改状态机的输入语义,按「漏检比多耗电糟糕得多」的原则放弃。这一条如实写进了 docs/POWER_REPORT.md §6.2。

5. 其它

  • 跑了一次 lint 排查 compileSdk 37 + minSdk 34 下的高版本 API 误用:NewApi 0 条。
  • docs/TESTING.md 新增 §17(本次三处改动的验收步骤),并记录了构建环境的一个真实陷阱:Gradle 配置缓存命中时,APK 会沿用上一版的 versionCode / versionName(构建全绿、时间戳也是新的,值却还是旧的),发布前必须用 aapt2 dump badging 核对。

兼容性与约束

  • 判定语义、既有默认值、用户可见行为均未改变。新增的两个配置项:np_tasker_enabled 默认关,np_fake5g_adaptive_interval 默认开。
  • 未新增任何依赖;未引入唤醒锁、精确闹钟权限或第二个前台服务通知。
  • versionName 1.3.0 / versionCode 2026100502(minSdk 34 / targetSdk 36 / compileSdk 37)。
  • 同一把签名 key(SHA-256 34100875…4c4c,与 1.0.1 / 1.1.0 / 1.2.0 一致),可直接覆盖安装,配置不会丢。

校验(可自行复现)

apksigner verify --print-certs NetPilot-1.3.0-2026100502-release.apk
#  SHA-256: 34100875b45d7c4dc9928030b3329b5490869a236155f9ce08b1dc70c7434c4c

aapt2 dump badging NetPilot-1.3.0-2026100502-release.apk | head -1
#  versionCode='2026100502' versionName='1.3.0'

zipalign -c -P 16 -v 4 NetPilot-1.3.0-2026100502-release.apk
#  Verification successful  (16 KB 页对齐,满足 2027-02-01 起的强制要求)
文件 NetPilot-1.3.0-2026100502-release.apk
大小 33,146,557 B
MD5 0e528d52fef4390ca48fd5e6cd3069e8
SHA-256 744b44e10f1bf8ade85f5035560ca41aa67a214d0646c1feed7987b51841b84a

安装与验收步骤见仓库内的 docs/TESTING.md §16(1.2.0 的耗电优化)与 §17(本次改动)。