Repository navigation
Releases: zhan-nine/UCAS-Sign-in
Releases · zhan-nine/UCAS-Sign-in
Release list
清新签到v1.3.7
清新签到v1.3.6
release: 1.3.6(versionCode 50):扫码请求形态修复 + 标识补入 + 学校原话入档 - 请求形态对齐小程序「我的」页(v65 解包,§10.22):id/经纬度放进表单体 ("0" 为参照客户端自己的无定位回退),query 一个参数不加;删除 withOwnUserId。此前复刻的首页扫码入口在本校不可达(课程平台为空)。 - ScanIdMapping:二维码只给 32 位标识、本机课表能证明同一节时, 把 7 位节次号一并补进 query(补在最前,原值保留);手动录入同一条映射。 - SignResult.schoolMessage:失败记录/结果卡片/日志分开记 「我们的判定」与「学校原话(STATUS/ERRCODE)」,现场失败可离线归因。 Co-Authored-By: Claude Code <noreply@anthropic.com>
清新签到v1.3.5
扫码更快,连扫真的能连了。
- 识别变快:原来每一帧都要把 18 种条码格式挨个试一遍,现在先只认二维码,解码开销降到约五分之一;连续认不出会自动放宽到全部格式,不会出现某些码永远扫不出来。
- 修好「连扫」:此前扫中一次之后相机就不再分析了 —— 「第一次之后一直扫不动」就是这个原因。现在失败自动重扫,成功即收工(不会再重复签到)。
- 连扫默认开启:失败后不用再点「继续扫码」。
- 新增补光按钮:暗光下更容易扫上(有闪光灯的手机才显示)。
- 结果页新增一行识别耗时:便于看清「慢」到底慢在解码还是对焦。
- 也修好了「签到码已失效」:班牌二维码的时间戳已陈旧时,改用本校校时提交。
清新签到v1.3.3
1.3.3
新增
- 签到记录(设置 → 签到记录):每次签到成功或失败都留一条,含时间、来源、编号、学校返回结果;按天分组,可分享、保存到文件、清空。讲座不在课表里、学校也查不到,这份本机记录是回看讲座签到的唯一途径。
- 扫码连扫:失败后自动重新取景,免去反复点「继续扫码」;同一张码 3 秒内只提交一次。扫码页新增「输入编号」入口。
- 讲座自动签到已确认无解:本校未部署课程平台(
ifCoursePlatform=0,课程平台地址为空),相关接口不存在。讲座定位为「只读日程 + 扫码签到」。
安装包
qingxin-signin-1.3.3-release.apk/ 3,221,101 字节- SHA-256:
ad02ecec929db5410fecad44a11339f68f65a43e98d8560ba73a06b2557929bf - versionCode 47,可直接覆盖安装,无破坏性变更,未新增权限
清新签到v1.3.1
新增现场扫码打卡:对准班牌上的二维码即可签到。
自 1.2.2 起的改动全部收进 1.3.1(中途构建过一版 1.3.0)。
这一版的做法:解包了「轻新课堂」微信小程序的 __APP__.wxapkg,逐字读出它扫码之后到底发了什么请求,再照着实现。
这一版改了什么
- 主页右上角新增扫码入口(本页唯一的实心按钮)。现场打卡是「站在班牌前、一刻也不想等」的场景,三步结束:打开应用 → 点扫码 → 对准。
- 扫码页只申请相机权限,识别完立即释放相机。不申请定位 —— 扫码通道不需要位置信息。
- 扫到的内容先分类,再决定发不发请求。同一个扫码入口在小程序里分流四件事,这里按同样的固定顺序判断:
| 二维码内容 | 处理 | 会发请求吗 |
|---|---|---|
app/course/stu_scan_sign.action(旧通道,主力) |
现场签到 | ✅ |
app/common/stuScanSign(7.0 平台) |
现场签到 | ✅ |
含 idesktop |
桌面端扫码登录 | ❌ |
含 /schoolCourse/stuJoinCourse/ |
加入课程 | ❌ |
含 app/course/saomadati.action |
课堂答题 | ❌ |
| 整段就是 7 位编号 / 32 位标识 | 现场签到(兜底) | ✅ |
认不出、或认成后三类时一个请求都不会发出去,只提示「这不是签到码」。
与小程序保持一致的地方
- 请求用 POST + 空表单体(「一键签到」那条通道仍是 GET,两条各自保留)。
timestamp沿用二维码里的值,这条通道因此不依赖手机时钟。- 成功判据只认学校返回的
STATUS == "0"。 - 二维码里若带完整网址,域名会被丢掉,请求一律发回本校通道 ——
sessionId是本机通道签发的,发到别的域名上必然失败,也等于把会话凭据送给二维码里随便写的域名。界面上会写明「二维码指向 X,已改用本校通道 Y」,避免失败时无法归因。
界面修正
- 1.3.1 修掉一处布局缺陷:扫码入口挤掉了学号的显示宽度。现在扫码与学号分属两行,并收紧了「课表 / 讲座 / 设置」三个按钮的宽度(学号那一栏 154dp → 184dp)。已在 360dp / 320dp 两种窄屏上实测过。
需要说明的代价
- 安装包从 2.04 MiB 涨到 3.02 MiB(+48%),增量几乎全部来自相机库 CameraX。备选的
zxing-android-embedded更省体积,但它走 Camera1 且已停更,上游 #740(Android 12+ 自动对焦失效)与 #741(部分国产 ROM 识别失败)正好打在这两个维度上。扫码靠对焦,对焦坏等于功能坏,因此没有为了省 1 MB 去赌。
安装
下载下面的 qingxin-signin-1.3.1-release.apk,覆盖安装即可(签名一致,versionCode 45)。
扫码与小程序共用同一套接口,因此不需要在手机上装微信或小程序。
另:7.0 平台通道(app/common/stuScanSign)在本校没有可验证环境,我按
「识别 + 与旧通道同形态提交」实现,能否成功只有服务器知道;识别不出来时它不会误发请求。
清新签到v1.2.2
修掉一条反馈:「现在的自动检测更新版本没有实现」。
检查更新的代码从 1.2.0 起就在,接口、解析、版本比较也都正常。问题出在可观察性:
那张卡片夹在设置页中部、叫「关于 / 更新」,而且只在检测到更新时才有内容——
装上最新版之后它永远只说一句「已是最新」。
于是「功能正常」与「压根没跑起来」在界面上长得一模一样。
这一版改了什么
- 卡片改名 「版本与更新」,并常显三行:当前版本、远端最新版本
(「最新版本 1.2.1(已是最新)」/「(比当前新)」)、上次检查时间;
设置页页头也常显v<当前版本>,不必先翻到卡片就能确认装的是哪一版。 - 存储语义修正:原先只存「比当前新」的那一版,版本追平后会把结论清空;
现在改存远端最高版本,「有没有更新」由 ViewModel 现场判断。
旧数据保留读取,升级后卡片不会先空一段时间。 - 「从未查到」(没网 / 没查过)与「已是最新」(确定没有更新)分开显示 ——
断网时不再看起来像检查成功了。 - 修掉两处脱节:卡片文案写的「约 12 小时」实际是 24 小时;
RealReleasesSmokeTest里硬编码的当前版本还停在 1.2.0,
于是一直谎报「会提示更新:1.2.1 > 1.2.0」,现在直接从build.gradle.kts读versionName。
安装
下载下面的 qingxin-signin-1.2.2-release.apk,覆盖安装即可(签名一致)。
如果你现在用的是 1.2.1,打开主页应该能直接看到「发现新版本 1.2.2」的横幅 ——
这个 Release 本身就是更新检查的对照样本。
清新签到v1.2.1
v1.2.0: 清新签到 1.2.0(versionCode 41)
更新了讲座预告试验性功能,输入课程编码打卡,与自动检测更新。