‹ 返回全端总门户

核桃云秤 APP · 版本更新记录

凤庆核桃交易中心 · 云秤终端(安卓一体机横屏)· 每次发布详细记录改了什么、优化了什么
当前最新:v1.56.0
累计发布 64 个版本(v1.2.0 ~ v1.56.0)
最新版本 v1.56.0(versionCode 71)
当前包体 13.9MB(含阿里云 TTS)
适配设备 rk3568 / 1280×752
下载页 hty/download.html
v1.56.0
断网续传补齐 + 报表排版(1.54.0 完整基线上的增量)
2026-10-08 00:50 · versionCode 71 · 13.9MB
修复优化
▾
  • ★★本版基于 v1.54.0 完整基线(hty-build3)重建,已逐文件比对确认零功能缺失: assets 8.39 MB / dex 9.07 MB / lib 8.55 MB 三项与 1.54.0 完全一致, 仅省略 3 个 V1 签名文件(改用 V2 签名,属正常)
  • 断网缓存续传(业主报「该功能失效」)· 真实根因:v1.44.0 起界面就提示 「已存入离线队列(恢复后自动补传)」,但队列只有 queue() 读与 enqueue() 写,没有出队方法(Store.setQueue)—— 无任何消费方,属「承诺了但没实现」
  • 本次补:Store.setQueue()(用 commit() 与enqueue 一致) + Sync.flush()(逐条补传、成功出队; 业务被拒 code≠0 也出队,否则一条永远传不过的记录会把队列堵死)
  • 触发点两个:网络恢复(NetworkCallback,零轮询开销) + 回到前台(BaseActivity.onResume) ★ 只在 onResume 加两行,不改动 v1.40.4 起的残留观察逻辑(那部分有 4 轮踩坑史)
  • 报表中心排版:原字号 11~15sp 在 1280×800 屏上等于 11px 根本看不清 (业主 v1.50.0 已批「文字太小」当时漏掉报表页); 统一为 7 个常量:页头26/主数据30/面板标题22/副标16/表头18/数据19/小计19sp
  • 连带:明细表列宽 74→96dp 防 ellipsize 截断成「称重…」;比例条 150→210dp
  • 签名配置:基线工程缺 signingConfigs,产物是 app-release-unsigned.apk,业主点安装报「未安装应用」—— 看起来像没发布,其实是包没签名。已用与线上一致的 debug 证书签名 (SHA1 CC:CA:36:37…),可覆盖安装并保留本地数据
  • ★ 新增 apk_gate.py 发布门禁(查关键文件 / 解压分项下限 / 与基线体积比 / 逐条目比对),不通过则禁止发布。 本包已过门禁 + verify_apk.py 双验证
v1.55.0
★已撤回 · 构建自错误工程,功能文件缺失
2026-10-08 00:10 · versionCode 70 · 已回滚至 v1.54.0
撤回
▾
  • ★★本条记录保留作为教训,不可发布。此包构建自hty-build 工程, 而 v1.54.0 实际来自 hty-build3——两个平行工程,不是一条线
  • 后果:包体从 14.66 MB 缩到 5.39 MB,丢失 17.10 MB / 54 个条目:
  •  assets/tts/languagedata_embedded.bin 4.83 MB(阿里云 TTS 语音数据)
  •  lib/arm64-v8a/libneonui_shared.so 8.59 MB(讯飞语音 native)
  •  res/ 下 41 个资源文件(徽章、对话框背景等)
  •  9 个 java 类(AliTts CloudTts SpeakDialog ReportActivity OperatorActivity 等)
  •  6 个 Manifest 声明(TTS_SERVICE QUERY_ALL_PACKAGES 等)
  • ★为什么「自检全过」却发出了问题:verify_apk.py 只查版本号与签名, 查不出功能文件缺失——「12 项全过」与「包是残废的」可以同时成立
  • 处置:已立即回滚线上至 v1.54.0(code 69),sha256 核对一致; 已从 1.54.0 的 APK 反向提取全部缺失文件补回工程; 已新建 apk_gate.py 发布门禁(查体积/关键文件/与基线逐项比对), 不通过则禁止发布
v1.54.0
登录页整改 + 报表字号 + 返回首页收口
2026-10-07 02:14 · versionCode 69 · 14.0MB
修复优化
▾
  • 登录页去除测试检测内容并重排
  • ★删 btnQuickLogin 一键进入及其 quickLogin() 方法——账号密码本已预填在正上方,此键等于绕过验证的后门
  • 删「串口自检✓ 网络✓」写死假状态(不做任何检测却永远显示 ✓)
  • 删硬编码「已绑定平兴核桃合作社」无真实数据源
  • 微信扫码按业主裁定整行置灰 alpha 0.45 + 按钮 clickable=false + 文案「待开放平台资质」
  • 设备信息重排为双列卡片
  • 密码标签改「登录密码(首次登录请使用验证码登录)」——布局与 switchMode 两处同改,setText 会覆盖布局,本项目已因此返工 3 次
  • preflight 自检扩到 16 组 129 项
v1.53.0
订单页品类与去皮 + 净重扣皮重
2026-10-06 · versionCode 66~68 · 14.0MB
修复
▾
  • ★净重改为毛重 − 皮重——原实现 net = weight 根本没扣皮重,属静默错误:称重显示正常但结算重量偏大
  • 订单页新增品类只读卡(该页原本无此控件)
  • 订单页新增去皮功能(含键盘)
  • 订单页显示订单品类与标准重量:订单已标定则引用订单值,未标定则按实际称重写入
  • 计工页品类统一为 chip 样式(原两套样式不统一)
  • 落地 preflight_check.py 第 3 组自动查 /hty-api/log/list 的 appVer,不再要业主截图确认设备版本
v1.52.0
容器方向修复 + 五格高度治理 + 删扫码卡
2026-10-06 23:13 · versionCode 65 · 14.0MB
修复优化排障
▾
  • ★★本轮最重要:「品类 14 个只显示 3 个 + 下方大片空白」的**真根因**—— 我前两轮都判错了
  • ★真根因:布局写的是 catChips orientation=horizontal,而代码往里 addView 的是**多个「行」LinearLayout**(每行横排若干 chip)。父容器横向 → 6 个行被并排成一行 → 只有第 1 行 3 个 chip 可见、其余 11 个在右侧被裁掉,父容器高度又只按一行算 → 看起来「3 个 + 一大片空白」
  • ★**限高从来不是问题**(我前两轮一直在调 20%→30%,属白查)。定案:horizontal → vertical,14 个全部显示
  • ★症状识别口诀:「显示不全 + 下方有本不该存在的空白」= 父容器方向写反,别去调限高
  • ★五格高度溢出(业主截图抓出,我算漏了):+3rpx 后格子实高 108−16=**92px**,而内容需 112.2px(标签21.8+数值48.4+单位21+间距5+内边距16)→ **溢出 20px**,LinearLayout 把单位行挤到数值上方。定案:容器 108 → **134dp**(格子 118px,留 6px 余量)
  • 首页五格:标签 16→**19sp**(+3rpx) 贴左上 / 数值 44sp 居中 / 单位 18→**21sp**(+3rpx) 贴右下 / 「参与人数」改「计工人数」;第5格状态行 21→15sp + maxLines=1(6 字×21sp 会换行)
  • ★今日数据按钮 32→**20sp**:根因是我上一轮把它从 16sp 一下放大到 32sp,而底部 5 个按钮挤在 60dp 一行里放不下 → 撑出边框。加 maxLines=1 兜底
  • 订单称重页:业主要求**字号沿用之前的** → 本轮曾全页提到 18sp 的 **22 处已全部回滚**
  • 订单称重页:相机扫码卡**整块删除**(标题 + tvScan 状态 + btnCamScan 按钮,23 行)+ **同步删 3 处 findViewById**(否则进页面 NPE 崩溃)
  • ★扫码状态三态(未扫码/已扫码/扫码错误)改由**语音条 + 语音播报**承载 —— 信息不丢、不占版面。**扫码枪链路不受影响**(onScannerCode 由 BaseActivity 按键监听触发)
  • ★业主批评「你的 1:1 复现要结合 Android 设备的分辨率,不是一句空话」—— 我上一版写「18sp→27px」是**自己编的换算**。已固化:预览必须先声明设备物理分辨率/窗口尺寸/density/fs,并逐行算内容高度够不够
  • ★本项目设备实测参数:物理 1280×800px | 窗口 1280×752px | 布局 1280×800dp | 160dpi | **density=1.00fs=1.00 → 1sp=1px=1dp**
  • ★回下载验证踩坑(记录以免再犯):搜 android:textSize="19sp" 必然搜不到(编译后是资源ID);orientation 被AAPT 转成枚举索引;scanCard 在 dex 里搜到但**是别的功能的同名前缀**。正确分工:布局属性在源码侧断言,包内只验文案与类名
  • preflight_check 自检扩到 **14 组**,新增覆盖本轮四条(含 catChips 方向、五格容器高度、删控件的 NPE 防护)
  • ★交付验证:回下载双证据终验 **20 项全过**(改动真在包内 + 旧 UI 文案彻底清除 + 保留项未被误删)
v1.51.0
交互式整改:分类标签/品类区/清单聚焦/删除弹窗/改密
2026-10-06 21:18 · versionCode 64 · 14.0MB
修复新增优化
▾
  • ★业主实机反馈「分类标签点击后按钮无变化」根因:v1.50.0 我只改了「点击后调 buildFilters() 重建」,**却没改重建时的判断依据**
  • ★根因代码:stylePill(pill, t.isEmpty()) —— t 是循环里的候选类别,与当前筛选状态 curType 毫无关系 → 重建后永远只有「全部」是绿
  • ★教训:改了刷新机制 ≠ 改了状态来源。三种错法对照:只刷被点的→两个同时绿;重建但判断依据错→点了完全没变化;**遍历全部按curType 统一刷新**才是正解
  • ①定案:pill.setTag(t) 存类别 + refreshFilterStyles() 遍历全部按 curType==t 改样式,不动 view 树(无闪烁、不可能漏)
  • ②品类区「14 个只显示 3 个」根因:限高屏高20%=160px 只够 4 行,而 14 个需排 6 行 210px,后 2 行被裁
  • ②品类区「不会向下滚动」根因:内层 ScrollView 嵌在外层 ScrollView 内,**Android 嵌套同向 ScrollView 时内层无法独立滚动**(手势被外层吃掉)
  • ②定案:applyCatChipsHeight() 按实际行数算 min(需要, 屏高30%) —— 装得下全部显示、超出才可滑;加 nestedScrollingEnabled=false
  • ③累加清单加「当前笔」聚焦:最后一行深墨绿实底 + 白字加粗 + 左侧薄荷色条,新建 bg_acc_row_cur.xml(原来 26 笔长得一模一样,看不出刚称哪笔)
  • ④删除确认「没有 UI 效果」根因:用系统 AlertDialog,深绿主题下标题与背景几乎同色 → 像点了没反应(同 v1.41 白底白字同源)
  • ④定案:改自绘弹窗(白底深墨字 + 取消/红色删除双按钮 + 语音确认),并加兜底降级直接删除,绝不出现点了没反应
  • ⑤★自绘 Dialog 白底不渲染根因(业主截图显示半透明深灰):忘设 window 透明背景,且 setBackgroundDrawable 写在 show() **之后 = 无效代码**
  • ⑤定案:透明背景移到构造时立刻设,宽度也移到 show 前。已全项目排查 5 处 Dialog,只有我新写的这处漏了
  • ⑥★改密改成交互式:删除三个一模一样的假输入框(点框→弹键盘→显示 ******,用户不知道哪个是哪个),改为单入口「开始修改密码」+ 步骤提示
  • ⑥★联动检索:删三框后代码里还有 7 处 findViewById(含成功回调里给三框赋值)→ 进系统设置页会 NPE 崩溃,已同步删除
  • ⑦关闭页面名语音播报(ANNOUNCE_PAGE=false):解决「选择操作员输完密码后报首页」的串台 —— waitTtsThenSpeak 只查 isFinishing 不校验前台页
  • ★preflight_check 自检扩到 13 组,并修脚本自身 7 项误报(Math.min 前缀、注释未排除、切片过短、假设本身错)
  • ★★自检拦下真缺口:业主上一轮要求的改密交互,我**只做了 demo 预览、根本没写 APP 代码** → demo 改了 ≠ APP 改了
  • ★交付验证:回下载逐条核 24 项全过(改动真在包内 + 4 处旧 UI 文案彻底清除)
v1.50.0
11 项 UI 整改:3 个真 bug + 8 项 UI
2026-10-06 19:33 · versionCode 63 · 14.6MB
新增修复优化
▾
  • ★业主 11 条全部处理,其中 3 条是**真代码 bug**(不是 UI 问题)
  • ①★去皮数字不显示根因:`if (!sent) tare = v;` —— 只有串口去皮失败时才赋值,串口成功时 tare 保持旧值,界面读旧值不刷新。订单页同一处 bug 同步修
  • ①修复:改为无条件赋值(业主口径:皮重值不参与任何计算与统计,但要留痕让人知道当时做了去皮)。流水本来就带 tare 字段,留痕链路本就通
  • ②品类候选区按业主口径隐藏滚动条(靠滑动),限高仍为屏高 20%,不影响下方容器展示
  • ③选择操作员页 UI:姓名 14→22sp、角色 11→16sp、标题 22→30sp、头像 44→56dp(11~14sp 在 1280×800 工控屏属看不清级别)
  • ④★点验证不弹密码根因:verify() 只做空值判断 + 文字提示,**没调 openPwdNumpad()** → 必须先精确点中密码框才弹键盘,界面上像坏了。修复:未输入时自动弹
  • ⑤累加清单「点击某笔删除」加确认对话框(原来一点即删,误触一整笔无法恢复)
  • ⑥对账弹窗宽度 62%→78%,按钮显式最小宽 150dp / 高 52dp(原中文按钮在窄弹窗里被裁)
  • ⑦结算扫码弹窗:收款码 200→150dp(原来把底部按钮顶出对话框)+ 主按钮改琥珀实底白字(#A86800,白字对比度 4.52:1 达 WCAG AA)
  • ⑧销售称重「返回首页」改描边按钮(18sp + 48dp 触控),原来是 14sp 纯文字不像可点
  • ⑨首页五连格:白底卡片化 + 8dp 容器内边距 + 3dp 格间 + 容器加高 92→108dp(解决贴边与缺设计感)
  • ⑩首页「流水」改「今日数据」并 16→32sp;流水页标题与按钮同步去掉「今日流水」旧文案
  • ⑪★分类标签状态不刷新根因:`stylePill(pill, ...)` 只刷新被点的那个标签,其余 4 个保持旧样式 → 出现两个标签同时是绿的。修复:改为整体重建
  • ⑪分类标签放大一倍(14→28sp,触控高度 ≥56dp);右上角「继续称重」按业主要求取消;「首页」链接改按钮形态
  • ⑪★联动检索抓到崩溃风险:布局删掉 btnToWeigh 后代码仍有 findViewById(R.id.btnToWeigh) → 进流水页 NPE 崩溃,已同步删除绑定
  • ★preflight_check.py 自检扩展到 10 组,新增覆盖本轮 11 条需求的存在性检查
  • ★自检脚本自身两次误报(工具也有 bug):匹配到注释里的旧代码、检查时取第一个 setOnClickListener。已加块注释区间过滤 + 定位目标监听器
v1.49.0
UI 整改:chip 实测宽度 + 订单页品类与去皮
2026-10-06 18:14 · versionCode 62 · 14.6MB
新增修复优化
▾
  • ★业主 4 张截图 11 条红字全部处理,逐条含根因
  • ①★chip 竖排根因:v1.48.0 用整屏 1280dp 估算,但右栏权重 1.62:1 实际仅 495dp,差 2.6 倍 → 每行塞太多导致最后一个 chip 被压缩成竖排单字
  • ①修正:catChipsScroll.post() 取容器实测宽度重排 + 缓存 chipContainerW + setSingleLine(false) + 显式 LayoutParams 宽度;退化估算改为屏宽/2.62
  • ②品类卡标题 32sp → 20sp + maxLines=1(业主反馈文字太大挤两行)
  • ③chip 区限高 26% → 20%(销售流程说明不再被挤住)
  • ④★订单称重页新增品类只读卡:本单品类(由订单指定,不可改)+ 标重来源(订单 stdWeight → 品类标准 → 未设则按实际称重写入)
  • ⑤★订单称重页新增去皮功能(含小键盘,与销售页同口径:打开即空不预填、0~10kg 校验、空值确认拦截)
  • ⑥★同步修掉静默失败:原 net = weight 根本没扣皮重,只加去皮 UI 会让操作员设的去皮被静默忽略(界面显示 0.50 实际按毛重计入)→ 改为 net = 毛重 − 本单去皮
  • ⑦计工页品类由「切换 ›」统一为 chip 样式(业主要求各称重页 UI 一致)
  • ⑧计工页去皮文案统一:原把「kg · 仅本件有效」整句塞进单位位导致挤成「仅本件有 效」两行,现标签与单位分离
  • ⑨★新增交付前置自检 aliyun-tts/preflight_check.py(9 组:包内值/签名/设备遥测版本/线上清单/联动检索/旧文案残留/对比度/密码禁播/需求存在性),退出码非 0 禁止发布
  • ⑩自检第 3 组自动查设备遥测 appVer,不再问业主装的是哪一版
  • ★自检脚本自身教训:首版查 tareBox/btnTare(销售页命名)而订单页实际是 orderTareBox/btnOrderTare,误报 FAIL → 报 FAIL 必须先核对真实代码
v1.48.0
UI 整改三原则 · WCAG 对比度定案
2026-10-06 15:51 · versionCode 61 · 14.6MB
新增修复优化
▾
  • ★问题一:去皮区放大(业主要求 0.00 再放大 0.5)
  • 去皮数值 38sp → 57sp 加粗;kg 16sp → 28sp 加粗(从合并文案拆出)
  • 去皮标签 56sp → 20sp(56sp 喧宾夺主且撑爆换行,数值才是主信息)
  • ★问题二:品类候选区改自动换行 + 限高下滚
  • 根因:原实现横向不换行,chip 空间不足时被压成竖排单字
  • 标准:外层改纵向 ScrollView;每行新建 LinearLayout 按 Paint 实测宽度塞 chip;高度按屏高 26% 动态限高,保证下方去皮卡/价格卡不被挤出(业主要求不影响下面容器)
  • 支持 20 个品类(原来按 8 个设计)
  • ★问题三:全站 UI 审计(业主要求整体检查所有页面)
  • ★同一处返工三次的教训:v1.41 白底+纸白字(对比度≈0)→ v1.47 深墨绿底+纸白字(能读但发闷)→ v1.48 浅底深墨字(12.21:1 AAA)定案
  • 前两次都在「换底色」而没算对比度。已固化:正文对比度 ≥4.5:1(AA)
  • 全局 muted 色 #7D8B83(3.24:1 不合格)→ #5F6F67(4.83:1 达标)
  • 亮琥珀配白字 2.77:1 不合格 → 深琥珀 #A86800(4.52:1)
  • 改底色必同步改字色;禁止纸白字 #F6F4EF 印任何浅底
  • 可点元素识别性:登录页/首页透明背景按钮(background=#00000000)改描边底
  • ★联动坑:WeighActivity:144 有 btnTare.setText 会运行时覆盖 XML 文案,只改布局=没改(靠查包内字节才发现「修改 ›」仍在)
  • ★问题四:密码键盘禁止语音播报(逐位朗读会泄露管理密码)
  • 双保险:PwdGateDialog 不注入 speaker + NumpadView 类内按 password 模式硬拦截
  • ★去皮不再预填 0.00(业主要求直接可输入),并加空值确认拦截防止 parseNum 空串被当 0 静默清零皮重
v1.47.1
APP 端全量逻辑核查 · 14 项核心缺陷修复
2026-10-06 14:40 · versionCode 60 · 14.6MB
修复
▾
  • ★14 项修复多为静默失败,逐条含根因:
  • ②累加多笔结算时品类与皮重被最后一笔全局值覆盖 → A 品种重量凭空消失
  • ③置零/累加/结算后未复位 stable → 重复计件与 0kg 脏订单
  • ④doSettle 缺净重校验,可写出 0kg 正式流水
  • ⑤结算与订单计入无防重入,连点写两笔
  • ⑥订单称重明细 ts.substring 越界会崩
  • ⑦订单流水只判网络不判业务 code,失败既不落库也不入队
  • ⑧流水/报表把网络失败伪装成「今日无数据」并清空已有数据
  • ⑨订单「今日」拉的是全量历史订单
  • ⑩订单金额用约定价回算,违反以订单表为准
  • ⑪离线队列 apply 不落盘,断电丢单
  • ⑫密码判据不一致会把自己锁在设置页外
  • ⑬域名先存后测,存错后整个 APP 不可用且无恢复入口
  • ⑭断网时码校验失败仍放行,可重复计工
  • ★记忆教训:此版本不在我主动记忆范围内,14:57 我曾断言「线上是 1.46.2」,实际 14:40 已发布 1.47.1 → 已固化「禁止凭记忆断言线上状态」最高原则
v1.47.0
首页实时称重带取消 + 键盘语音播报 + 品类三价
2026-10-06 04:46 · versionCode 60 · 14.6MB
新增优化
▾
  • ★首页「一闪被盖住」根因定案:实时称重带在残留重量瞬间 >0.05kg 时显示,把下面「今日收购/今日销售」KPI 条顶开并闪一下 → 业主决定整条取消,永不显示
  • 处置:liveBand 整条 visibility=gone,保留 findViewById 绑定防 NPE
  • ★新增 NetState 网络连通性检测
  • 键盘按键语音播报接入 5 个 Activity
  • 品类三价分离(工资价/收购价/销售价),后台价仅作带入值,最终以订单表为准
  • ★Price 带入曾完全失效:只写文本未赋值 price 字段 → 按钮被禁用、「点累加没反应」成为死代码
v1.46.2
v1.46.x 收尾
2026-10-05 22:35 · versionCode 59 · 14.6MB
优化
▾
  • v1.46.x 收尾
v1.46.1
物理分辨率探测 + 字号落地
2026-10-05 22:30 · versionCode 59 · 14.6MB
新增优化
▾
  • ★原则升级(业主 2026-10-06 追认为最高原则):登录页探测真实 density 并上报,废止「先给 21sp 回头再校准」的做法
  • 根因:Android 端 sp 与 px 不是一回事,不实测就定字号属于猜
  • 去掉扫码区、页头/输入/去皮/单次连续/流程说明字号成倍放大
  • 右区改 ScrollView + 底部按钮常驻,根治内容溢出
v1.42.1
销售累加汇总订单 · 全链路复核
2026-10-05 05:50 · versionCode 56 · 14.6MB
新增修复
▾
  • ★静默失败事故:WeighActivity 调 /orders/orderAdd 想生成「销售累加汇总订单」
  • ★根因:该接口契约是给订单称重页往「已有且进行中」的采购订单加重量用的(OrderChainService 内校验「订单不存在或不在称重中」即返回 err)
  • 而销售累加没传 orderNo(String.valueOf(null) → 字符串 null),100% 命中 err 分支
  • ★结果:订单没生成 + 流水写了 + 收款码照弹 + 页面无异常提示,业主完全看不出异常
  • ★已立铁律:写任何跨端调用前必须先读后端 Controller 和 Service 两层,确认必填字段/校验分支/语义归属(这张表属于哪条业务线)
  • ★配套铁律:接口能调通 ≠ 语义正确(/orders/publish 技术上能插进去,但它是采购方发布需求,会污染加工厂订单列表)
  • 收款码走 /api/settings/update 通用键值配置闭环(payQrUrl),无需改后端代码
  • ★不搞「假上传」:后端唯一文件上传接口绑定问题反馈单,故老实做成「填 URL + 操作指引」
v1.41.0
按 Demo 生产化全部页面
2026-10-05 04:38 · versionCode 54 · 14.6MB
优化
▾
  • 按 Demo 基准生产化全部页面
v1.40.6
修复「语音仍被顶掉」+「误报台面残留」
2026-10-05 04:02 · versionCode 53 · 14.6MB
修复
▾
  • 根因①:startTts 后就 finally 释放 speaking 锁 → 300ms 限流一过下一条就被顶掉
  • 根因②:正常称重被误报,台面有残留
v1.40.5
修复「有提示条但仍无语音」
2026-10-05 03:48 · versionCode 52 · 14.6MB
修复
▾
  • 根因:视觉提示条已有,但语音未触发
v1.40.4
修复「非 0 提示只有首次生效」
2026-10-05 03:36 · versionCode 51 · 14.6MB
修复
▾
  • 根因:非 0 提示只在首次生效,后续不再出现
  • 同时修复「红色提示闪一下就过去」
v1.40.3
回归修复与遥测补齐
2026-10-05 03:23 · versionCode 50 · 14.6MB
修复
▾
  • 回归修复与遥测补齐
v1.40.1
修 v1.40.0 回归 + 补齐遥测盲区
2026-10-05 03:16 · versionCode 49 · 14.6MB
修复
▾
  • 修复 v1.40.0 引入的回归问题
  • 补齐遥测盲区(此前出问题但无埋点、看板查不到)
v1.40.0
4 个现场问题定因与修复
2026-10-05 02:59 · versionCode 48 · 13.9MB
修复
▾
  • 按业主实测反馈修复 4 个现场问题
v1.39.0
业主新需求 7 项全部落地
2026-10-05 02:24 · versionCode 47 · 13.9MB
新增优化
▾
  • ★发布事故:文件名写 HtyScale-1.39.0.apk,但包内 versionCode=43 / versionName=1.36.0,设备装的是 1.38.0(code46) → 业主点安装装不上(版本倒退被 Android 拒绝)
  • 根因:功能改动后忘记改 versionCode
  • ★已固化为永久纪律:交付 APK 前必须跑 verify_apk.py 12 项机械自检,返回码非 0 即禁止发布
  • ★并已修 verify_apk.py:改为一律联网取线上 version.json,失败才退回本地快照并标注「非线上真实值,仅供参考」
  • 教训:文件名会骗人,只有包内真实值算数
v1.38.0
提示去重机制
2026-10-05 01:33 · versionCode 46 · 13.9MB
修复
▾
  • 语音提示去重机制,避免同一提示反复播报
v1.37.1
TTS 诊断版 · speak() 全链路打点
2026-10-05 01:21 · versionCode 45 · 13.9MB
排障
▾
  • speak() 入口各关卡打点上报 —— 这个诊断版救了整条链路
v1.37.0
TTS 链路修复
2026-10-05 01:11 · versionCode 44 · 13.9MB
修复
▾
  • TTS 调用链路修复
v1.36.0
阿里云 TTS 上线
2026-10-05 00:53 · versionCode 43 · 13.9MB
新增
▾
  • 阿里云 TTS 正式启用
v1.35.0
阿里云 TTS 接入 · 包体回升
2026-10-04 22:50 · versionCode 42 · 13.9MB
新增
▾
  • 接入阿里云 TTS:包体 5.3MB → 13.9MB(+8.6MB = 阿里云 so 8.9MB + 语音包 3.8MB)
v1.34.0
语音链路稳定性推进
2026-10-04 22:19 · versionCode 41 · 5.3MB
优化
▾
  • 语音调用链路稳定性改进
v1.33.0
显式引擎方案落地
2026-10-04 22:09 · versionCode 40 · 5.3MB
优化
▾
  • 按 v1.32.0 诊断结论推进显式引擎接入
v1.32.0
显式引擎测试 · 语音调试工具收口
2026-10-04 22:02 · versionCode 39 · 5.3MB
新增排障
▾
  • 遥测取回关键发现:设备 settings tts_engine=null,queryIntentServices=0(零引擎)
  • 已装 162 应用中含 XFTTSDemo(新飞扬)与原厂溯源秤 ScaleDemo
  • 原厂 dex 全量扫描确认只用讯飞(Synthesizer×46 / SpeechSynth×25,无任何 xf/3DFly 符号)
  • ★方案转向:Android 支持 new TextToSpeech(ctx, cb, 引擎包名) 显式指定引擎,完全绕过系统默认引擎(tts_engine=null 也能用)
  • 调试工具新增「⑦ 显式引擎初始化测试」:候选写死 9 个 + 已装包按关键词补捞,逐个 probeEngine() 显式初始化 + 读中文可用性 + 真播一次回报
v1.31.0
我的工钱 + 调试工具自更新能力
2026-10-04 21:32 · versionCode 38 · 5.3MB
新增
▾
  • 新增 WageActivity(纯代码构建 UI),数据源 GET /api/wages/table
  • 汇总卡:今日称重合计/参与人数/调整合计/应发工资合计
  • 明细按工资降序,进页自动语音播报合计金额
  • 首页新增「我的工钱」按钮 + Manifest 注册
  • 调试工具独立自更新:SelfUpdate.java + 独立清单 ttsdoctor-version.json
  • 启动 1.2s 静默检查 + 手动 checkManually() 明确反馈
  • 下载走 DownloadManager + FileProvider 授权安装
v1.30.0
订单收尾闭环 + 讯飞云端 TTS 中转
2026-10-04 21:28 · versionCode 37 · 5.3MB
新增
▾
  • ★业务盘点发现:订单只能开始不能收尾(后端 20 表/接口齐全,APP 端缺交付→核销→结算)
  • doneCard() 按 deliveryStatus 渲染四态(未发货/部分交货/已发货/已收货)
  • 发货走两步自绘弹窗(先输本次重量→再填司机)调 POST /api/orders/deliver
  • 确认收货调 POST /api/orders/confirmReceipt;已收货后按钮变「定金结算」
  • 定金结算先拉保证金流水展示再调 settle
  • SpeakDialog 新增 confirmInput()(带 EditText 的确认框)
  • 讯飞走在线 TTS + 服务器中转:密钥不落 APK、可后台改、无需重新部署
v1.29.0
修掉「下载调试工具」写死旧包的隐患
2026-10-04 19:08 · versionCode 36 · 5.3MB
修复
▾
  • 核实云秤本身没问题(遥测:远程 v1.28.0(35) / 本地(35),提示正确)
  • 真bug:v1.26.0 把调试工具下载地址写死为 /hty/apk/TtsDoctor-1.0.apk(5.3MB 旧 flavor 包)
  • 新增 showTtsDocStatus() 用 PackageManager 查已装版本并显示
  • fetchLatestAndDownload() 改为先 GET 独立清单取真实 url/version/notes
  • 抽出 siteBase() 统一站点根推导
  • 下载完成广播改 RECEIVER_NOT_EXPORTED(Android 13+ 必需)
v1.28.0
调试工具图标/名称/文件名三重隔离
2026-10-04 18:56 · versionCode 35 · 5.3MB
修复
▾
  • 根因①:调试变体 icon 仍写死 @mipmap/ic_launcher(云秤核桃图标)→ 两个 App 图标一模一样
  • 根因②:业主装的是下载目录里的旧 TtsDoctor-1.0.apk
  • 新建 ic_ttsdbg_launcher.xml(绿底+白喇叭+三道声波)
  • main manifest 改 icon 为 placeholder 形式,两 flavor 各给值
  • ★发布流程升级为强制 checklist
v1.26.0
调试工具彻底独立 + 云秤内一键下载
2026-10-04 17:53 · versionCode 33 · 5.3MB
修复
▾
  • 根因:调试变体虽有独立包名,但 LAUNCHER 仍指向 main 的 LoginActivity,label 也写死
  • main manifest 改 android:label 为 placeholder 形式,flavor 各自给值
  • 新建 app/src/ttsdbg/AndroidManifest.xml:tools:node=remove 移除全部云秤组件,tools:node=replace 把 TtsDebugActivity 设为唯一 LAUNCHER
  • 云秤设置新增「下载语音调试工具」按钮(DownloadManager + 完成广播)
v1.25.0
语音根因 100% 定案 + 语音调试工具 TtsDoctor 发布
2026-10-04 17:28 · versionCode 32 · 5.3MB
新增排障
▾
  • ★解剖原厂 APK(87.8MB,18 个 dex)确认:原厂完全不用系统 TTS,用讯飞 MSC 自带引擎
  • ★致命点定案:讯飞校验调用方 APK 签名,原厂证书 34b86876… 与我们 7E2B07… 不同 → 用原厂 appid 在我们包里永远过不了授权
  • 设备侧 0 个 TTS 引擎 → 系统 TTS 路线也断,仅剩两条路
  • 资源完整留档 vendor/msc/(dex+jets+双ABI so,30MB)
  • 新增 productFlavors(cloud / ttsdbg)产出独立调试包
  • TtsDoctor 四项能力:全量诊断上报 / 引擎三通道扫描 / 多语言探测 / 试播
  • 含已安装应用扫描与原厂 APK 解剖
v1.24.0
语音根因锁定(包可见性)+ 错误报告上传链路打通
2026-10-04 17:00 · versionCode 31 · 5.3MB
新增修复
▾
  • ★根因:manifest 完全缺 声明 → targetSdk 30+ 包可见性限制下 queryIntentServices(ACTION_TTS_SERVICE) 恒空,即 TextToSpeech status=-1 真凶
  • manifest 补 (TTS_SERVICE + RECOGNIZE_SPEECH + VIEW),aapt 验证进包
  • 后端新增 ErrorReport/Mapper/Controller(上传/列表/取图/删除),图片落盘 reports/YYYYMMDD/
  • DDL 追加 st_error_report 表并验证建表
  • APP 新增 ReportUploader(手写 multipart,零三方库)+ 设置页错误报告上传区块
  • buildDiag() 自动附带设备/引擎/串口/服务器诊断信息
  • 线上 reports.html 报告中心(缩略图/灯箱/筛选/自动刷新)
  • 端到端联调通过(真实截图上传→id=1→列表与取图 API 200)
v1.23.0
语音诊断增强
2026-10-04 15:55 · versionCode 30 · 5.3MB
优化修复
▾
  • 遥测实锤 status=-1(无可用 TTS 引擎/服务连不上),排除 APP 代码问题
  • 初始化延迟 1.2s + 失败自动重试 3 次(1.5s×n 递增)
  • speak 失败时 resetTts 自愈(shutdown→0.6s→重新初始化)
  • 新增上报设备 TTS 引擎清单,为空即定性「设备未注册任何引擎」
  • 新增 ttsEngineInfo() 供设置页显示引擎数/当前引擎/中文可用性
  • 新建 demo/tts-test.html 设备语音自测页,挂 portal 排障卡片
v1.22.0
语音换路线 · 讯飞撤除瘦身 + 签名修复
2026-10-04 · versionCode 29 · 5.3MB
优化修复
›
  • 业主新思路落地:demo 语音实证为浏览器 speechSynthesis(zh-CN)——即 Android 系统 TTS。demo 能出声即证设备系统 TTS 引擎可用(v1.18.0 的"系统TTS不可用"为误判:未等待初始化/未探测引擎)。语音路线正式切换为纯系统 TTS,与 demo 同源同效
  • 讯飞三件套整体撤除:libmsc.so×2(14MB)+ msc.dex(7.9MB)+ tts/*.jet(9.5MB)全撤,MscTts 类删除,源码树 60MB → 790KB,包体 33.2MB → 5.3MB(缩水 84%,回归 v1.18.3 前体量,解决业主"安装包太大"问题)
  • 修复装不上(签名):v1.21.0 发了 unsigned 裸包,设备现有签名 7e2b070262c8d33b 不匹配 → 安装失败"未安装应用"。实测本地 debug.keystore 证书 SHA-256 = 7E:2B:07:02:62:C8:D3:3B 与设备一致(历史装机包皆此 keystore),本版起发布链路补 apksigner 签名
  • 系统设置语音区改版:「发音人(语音包)」→「播报语速」:标准/舒缓两档(系统 TTS setSpeechRate),引擎状态实时显示引擎名 + 中文可用性;底座 BaseActivity.speak 增加引擎初始化遥测(engine/中文可用性/speak 返回码)
教训:①浏览器 speechSynthesis 就是系统 TTS 的传声筒——demo 能发声的功能,APP 用系统 API 都能拿到,不必引第三方 SDK;②发布链路必须有"签名"这一步,unsigned 包 = 业主装不上,白忙一轮;③判断"系统 TTS 不可用"前先真机探测 isLanguageAvailable + 等回调,勿凭单次失败下结论。
v1.21.0
语音根治版 · 拆除闪退元凶
2026-10-04 · versionCode 28 · 33.2MB
修复优化
›
  • 病根实锤(遥测 + 线上 APK 解包双向验证):线上 v1.20.0 包内 libmsc.so(arm64+armv7)、msc.dex、tts/*.jet 三件资源全部在,设备 sha256 校验通过——资源零缺失;设备探测 exists=false 只是 useLegacyPackaging=false 的断 symlink 正常表现(libserialport.so 同机制一直加载正常)
  • 唯一病根:v1.20.0 保留的 App 侧主动 System.loadLibrary("msc")——遥测面包屑两次停在 loadLibrary 步骤、crashCount=0(Java 无崩溃计数)= dlopen/JNI_OnLoad 原生 abort 杀进程,造成「没声音 + APP 自动退出」两个症状同源
  • 根治:App 侧绝不主动 loadLibrary(回归 v1.18.2 安全设计),so 只经 DexClassLoader 的 librarySearchPath=nativeLibraryDir 由 SDK 内部按需加载——SDK 加载失败是优雅降级(v1.18.0 实证不 abort),最坏无声回退系统 TTS,绝不闪退
  • 诊断流程精简:只读存在性探测保留(上报但零风险),面包屑步骤重排 1→7;若本版仍无声,遥测将直接给出 createUtility/createSynthesizer 层的精确原因
教训:带 native 的第三方 SDK,「App 侧主动 loadLibrary」不是双保险而是激活原生崩溃的开关——v1.18.1 和 v1.20.0 两次同点 abort 是铁证;能否加载交给库自己的路径,App 只做优雅兜底。
v1.20.0
语音诊断版 · 加载探针定位
2026-10-04 · versionCode 27 · 33.2MB
诊断
›
  • 遥测实证故障链:createSynthesizer 返回 null ← SpeechUtility 构造器抛 SpeechError ← d() 返回 21002(MSC.isLoaded()=false)← System.loadLibrary("msc") 失败
  • 静态排除:依赖缺失(DT_NEEDED 全系统库)、硬编码包名(.so 内无原厂包名字样)
  • 加载探针:试听时依次上报原生库目录/libmsc.so 存在性/ABI、App 侧 loadLibrary 精确异常、createUtility/getUtility 返回值、各参数与 startSpeaking 返回码
  • 修复「更新完成后仍弹更新窗」:版本号一律走 PackageManager(弃 BuildConfig 反射)
v1.19.0
按原厂完整参数恢复语音
2026-10-04 · versionCode 26 · 33.2MB
语音
›
  • 深扒原厂 BaseFragment.getResourcePath() 实证:补齐最关键参数 tts_res_path(ResourceUtil.generateResourcePath 生成 assets 语音包路径)——此前漏掉它导致离线引擎找不到语音包
  • 参数集完整对齐原厂:engine_type=local + tts_res_path + voice_name + speed=70 + pitch=50 + volume=50 + tts_data_notify=1
  • 安全设计保持:不进启动路径、仅系统设置显式试听触发、原生崩溃面包屑、失败回退系统 TTS
v1.18.3
撤出讯飞资源 · 包体瘦身
2026-10-04 · versionCode 25 · 6.5MB
优化
›
  • 讯飞三件套(msc.dex 7.9MB + 语音包 9.7MB + libmsc.so 13.7MB)整体撤出安装包,33MB → 6.5MB
  • 资源完整留档项目 vendor/msc/,独立 appid 到位后一分钟加回
  • 设置页语音区如实展示「系统语音(讯飞离线包待启用)」
v1.18.2
紧急修复 · 启动即崩
2026-10-04 · versionCode 24 · 33.2MB
紧急
›
  • 修复 v1.18.1 启动即崩:讯飞 MSC 整体撤出启动路径(HtyApp 不再预加载)
  • 移除 App 侧 System.loadLibrary 预加载(疑似原生 abort 触发点)
  • 新增原生崩溃面包屑:每 native 步骤落盘,下次启动读取遥测——原生崩溃 Java 层抓不到,只能靠面包屑定位
  • 明确告知业主:设备崩溃循环期间应用内更新不可达,需从下载页手动安装
v1.18.1
语音修复 · 三处修正 + 全遥测
2026-10-04 · versionCode 23 · 33.2MB
修复
›
  • DexClassLoader 传入原生库目录 + App 侧预加载双保险(v1.18.0 传 null 导致 SDK 内 loadLibrary 静默失败)
  • 补 gson 依赖(MSC 内部用 gson 解析参数)
  • 参数照原厂 EventViewModel 实证对齐
  • 全链路遥测:dex 就绪/库预加载/createUtility/createSynthesizer/setParameter/startSpeaking 返回码/异常堆栈
v1.18.0
科大讯飞离线语音集成
2026-10-04 · versionCode 22 · 33.2MB
语音
›
  • 实证原厂方案:SpeechUtility.createUtility(appid=7afc4b87) + SpeechSynthesizer 离线引擎
  • DexClassLoader 加载原厂完整 MSC dex(classes18)+ 语音包 xiaoyan/xiaofeng + libmsc.so 双 ABI
  • 系统设置新增发音人选择 + 试听播报 + 引擎状态
注:设备无系统 TTS 引擎,系统语音不可用,故必须集成讯飞离线包。
v1.17.0
键盘修复 + 语音播报点补齐
2026-10-04 · versionCode 21 · 33.2MB
修复语音
›
  • 修复手机号/密码输不进 11 位:键盘数字上限 10 → 12
  • 键盘视觉对齐 demo:深绿卡圆角 18 + 发丝绿边、纸底圆角显示区、白键圆角 12、8dp 间距
  • 语音播报点对照 SRS 补齐:称重稳定请扫码 / 已称重 X 千克 / 扫码成功 / 订单已计入 / 抢单成功 / 无订单提示 / 重复扫码语音阻断(此码当日已有计工记录)
  • 新建 SpeakDialog 统一自绘弹窗(自动朗读),替换全部系统 AlertDialog(SRS 铁律:禁系统弹窗)
  • 语音播报总开关(系统设置可关)
v1.16.1
热修 · 小键盘按键不渲染
2026-10-03 · versionCode 20 · 33.2MB
紧急
›
  • 修复小键盘 15 个按键塌缩成 1 个(只看到「确定」):共用 LayoutParams 实例被 GridLayout 自动布局反复改写,改为每键独立新建
  • 教训入档:动态 addView 的 LayoutParams 必须在循环内新建;自定义 View 必须真机渲染验证后才算完成
v1.16.0
方案 A 状态机 + 登录页/键盘 demo 还原
2026-10-03 · versionCode 19 · 33.2MB
订单视觉
›
  • 方案 A 落地:后端抢单进「待开始」+ 新增 switchCurrent「设为当前称重订单」(同刻仅一笔进行中)
  • 订单列表按 demo s8 重做四区:进行中(红)/ 待开始(琥珀)/ 可抢(绿)/ 已完成(灰蓝)
  • 订单称重守卫:仅「进行中」订单可进入
  • 登录页按 demo s0 还原:品牌区 150° 深绿渐变 + cube 图标 + 字段白底框
  • 小键盘按 demo numpad.js 还原:深绿卡 + 白键 + 取消/确定,去除旧右侧键盘坞
v1.15.0
去皮归零 + 业务逻辑审计
2026-10-03 · versionCode 18 · 6.5MB
修复
›
  • 去皮默认重量归零(后台设置 + APP 默认值 + demo 数据三处同步,configVer 3 审计留痕)
  • SRS 业务逻辑版本审计:确认开发基准为 V3.0 整合基线;发现订单状态机三方不一致(V3.0/demo 有「待开始」、后端没有)并报告业主拍板
v1.14.0
首页视觉按 demo 还原
2026-10-03 · versionCode 17 · 6.5MB
视觉
›
  • KPI 横条改 demo 的暖纸底 + 发丝边 + 深墨字 + 底部彩色短线(原深绿底)
  • 四大入口卡改 140° 渐变(墨绿/蓝/琥珀/紫,色值与 demo 逐字一致),文字底部左对齐 + 80% 白描述
  • 快捷行改 demo 幽灵按钮(透明底 + 发丝边)
  • KPI 值放大至 36sp 数字窄体,第 5 项改「订单进度 %」
  • 纠正对账基准:原型/demo/(活数据版)为权威基准,原型/scale/(旧静态版)不再作为验收依据
v1.13.0
订单链开发
2026-10-03 · versionCode 16 · 6.5MB
订单
›
  • 新增订单列表页:订单卡片(单号/采购商/品类/约定量/已称进度条/保证金/交付时间)+ 抢单/继续称重/申请强制完成/查看完成情况
  • 新增订单称重页:订单条(指定/进行中标签、锁定价不可改)+ 大字重量 + 本件金额 + 订单进度条
  • 计入双写:/orders/orderAdd(订单累计,达量自动完成转待交货)+ /records/add(流水挂单,断网入离线队列)
  • 取消订单带二次确认 + 扣保证金明示
v1.12.0
扫码枪即插即用
2026-10-04 · versionCode 15 · 6.5MB
扫码
›
  • 实证原厂机制:扫码枪是键盘 wedge 设备,Android 系统层自动识别,App 只需接收按键
  • BaseActivity 加 wedge 捕获钩子:Virtual 设备放过、DOWN 累积字符、UP 的 Enter 收尾
  • 称重页接入:重量稳定后扫码枪直接扫即记账(不依赖相机、不依赖 USB 检测)
  • USB 检测放宽:任意 HID 接口 + InputDevice 外接键盘源双通道;插拔广播自动刷新
v1.11.0
系统设置 · 密码门 + 域名 + USB 测试
2026-10-03 · versionCode 14 · 6.5MB
设置
›
  • 「串口设置」升级「系统设置」,进入需密码验证:默认密码 = 注册手机号,设置内可改
  • 服务器域名设置:默认生产地址 https://aiot.yunxiaolu.top/hty-api/,可手改 + 保存并测试连接;API/日志/更新清单全部跟随
  • USB 扫码设备 / 打印机检测与测试(连接状态 + 测试扫码 + ESC/POS 测试小票)
  • 锁屏键改为返回登录页
v1.10.0
称重链路恢复 + 首页修复
2026-10-03 · versionCode 13 · 6.5MB
修复
›
  • 称重数据链路恢复 v1.6 实证方法:反编译证伪 v1.7 依据静态分析做的三项"修正"——回调第一个参数即重量(放物数值随动)、openSerialPort 返回 >=0 即成功、runThread 为 int
  • 修复首页四大入口只渲染两个:GridLayout 单元格 match_parent 高度问题,改两行 weight 布局
  • 「记工」错字更正为「计工」
  • 移植 demo 右上角状态四件套:网络已连接 / 配置已同步 / 串口已连 / 扫码枪已连
  • 称重带补「连续 5 帧相同」副注;订单卡补「待抢 N · 指定 M」
教训:反编译只能提供假设,真机行为才是唯一真理;已工作的方法不许猜着改。
v1.9.0
更新下载自校验
2026-10-04 · versionCode 12 · 33.2MB
更新
›
  • 下载完成后按 size + sha256 双校验(设备 DownloadManager 曾交付残缺/错误文件导致安装失败)
  • 校验失败自动删除重试(最多 2 次),仍失败引导浏览器下载页手动安装
  • 安装结果探测:拉起安装后轮询本机版本号判定成败,超时自动诊断(签名比对 + 剩余空间)并遥测上报
  • manifest 增加 sha256 字段(publish_apk.py 同步升级)
v1.8.0
方案 A 后端 + 登录页 demo 还原(初版)
2026-10-03 · versionCode 11 · 6.5MB
订单
›
  • 后端 OrderChainService:grab 改「可抢单 → 待开始」+ switchCurrent 端点 + OrderController 暴露
  • 订单列表四区结构初版;订单称重状态守卫
  • 登录页/小键盘 demo 还原初版
  • SRS §8.5 补方案 A 实施记录(守护规则 SOP)
v1.7.0
订单状态机 + demo 还原
2026-10-03 · versionCode 10 · 6.5MB
订单视觉
›
  • 订单链首版:列表四区 + 订单称重(锁定价/必扫/双写)
  • 登录页 + 小键盘按 demo 还原
  • 订单取消/强制完成自绘确认弹窗
v1.6.0
串口 ttyS4 修正 + 设置页 + 遥测
2026-10-03 · versionCode 9 · 6.4MB
串口设置
›
  • 串口默认设备 /dev/ttyS3 → /dev/ttyS4(原厂 APK 设置页截图实证,这是 v1.6 能采到数据的直接原因)
  • 新增串口设置页:设备/波特率下拉、当前称重、保存并打开/关闭/恢复默认
  • 串口配置 Store 持久化(串口路径/波特率)
  • 串口全状态遥测:连接/打开失败(返回码)/打开超时/设备不存在,均带机型+分辨率上报——「采集不到数据」后台可留痕
  • 登录页串口设置入口;登录字体加大;更新弹窗 PackageManager 兜底
v1.5.0
ANR 根治 + 键盘坞
2026-10-03 · versionCode 8 · 6.4MB
修复
›
  • ANR 根治:openSerialPort 阻塞式 native 调用移至后台线程 + 3 秒超时降级模拟模式(登录后「没有响应」根因)
  • 首页增加「检查更新」手动按钮(有新版弹窗、无则提示已是最新)
  • 键盘坞光标与显示优化
v1.4.0
交互重做 + 远程日志全链
2026-10-03 · versionCode 7 · 6.4MB
日志交互
›
  • 登录交互重做:输入框焦点绿框高亮、右侧半透明键盘坞(不遮挡表单、紧凑按键)
  • 远程设备日志全链:st_client_log 表 + 客户端上报(事件异步/崩溃同步)+ p7 设备日志看板(5 秒刷新)——现场问题无需拍照
  • 防崩:移除 implements WeightsCallback(类级 JNI 依赖在设备不兼容时会导致无法捕获的启动崩溃),改匿名回调 + 全 try/catch
v1.3.2
修复启动黑屏崩溃
2026-10-03 · versionCode 6 · 6.4MB
紧急
›
  • 修复启动黑屏崩溃:codeRow 控件类型不匹配(LinearLayout 被误声明为 TextView,ClassCastException)
  • 全项目排查同类转换无遗漏
  • 崩溃自诊断生效:堆栈本地留存 + 下次启动展示
v1.3.1
启动崩溃防护
2026-10-03 · versionCode 5 · 6.4MB
防护
›
  • 启动崩溃四层防护:HtyApp 未捕获异常处理 + 崩溃日志落盘 + CrashLogActivity 展示 + 远程上报
v1.3.0
APK 自动更新
2026-10-03 · versionCode 4 · 6.4MB
更新
›
  • 自动更新全链:version.json 版本清单 + 自绘更新弹窗(版本说明/立即更新/稍后)+ 系统 DownloadManager 下载 + FileProvider 拉起安装
  • 登录后自动检查新版本;下载文件带版本号
  • Android 8+ 安装未知应用权限引导
v1.2.0
登录闭环 + 自建键盘
2026-10-03 · versionCode 3 · 6.4MB
登录
›
  • 登录闭环:后端播种默认用户(王建国/赵秀兰/李老三)+ 三类密码体系(锁屏/管理员/操作员)
  • 双模式登录:密码登录(默认)/ 验证码登录(短信平台未配置时明示引导)
  • 自建数字小键盘 NumpadView(不依赖系统输入法,戴手套可点)
  • 登录后存操作员真名(修复 operatorName 空值)
v1.1.0
原厂 JNI 串口方案
2026-10-03 · versionCode 2 · 6.4MB
串口
›
  • 改用原厂 JNI 方案:提取原厂 libserialport.so 四 ABI + xiaolingSteelyard 同名封装(JNI 绑定要求类名精确匹配)
  • native 回调 + 5 帧稳定判定
  • 去皮/置零改走仪表指令(设备级执行,非 App 计算)
  • 重量读数 autosize 自适应字号(兼容 1024×600 / 1280×720)
v1.0.0
首发版本
2026-10-03 · versionCode 1 · 6.0MB
首发
›
  • 首发:登录/首页/称重/扫码/流水 5 大页面
  • 串口 8 字节定长协议解析 + 模拟模式双通道
  • 计工/收购/销售/订单四大称重类型
  • API 实时同步、断网离线队列自动补传、TTS 语音播报
查看方式:点击任意版本标题展开/收起详细记录;本页随每次发版更新。
下载最新版:https://aiot.yunxiaolu.top/hty/download.html(文件名自动带版本号)· 设备日志看板:https://aiot.yunxiaolu.top/hty/p7-devicelog.html