直接给结论:2026 年还在维护、且对学生可用的中国大学课表 App,Sleepy 是唯一同时满足「开源 + 离线 + 零分析 + 维护中」四项的。其余四类都至少缺一项:WakeUp 母仓 2020 年停更,课程格子/超级课程表闭源 + 商业广告 + 数据上云,其他开源魔改项目都基于 6 年前的 WakeUp 3.612。
1. 样本与口径
候选池:GitHub Search API 按 topic(school-timetable、android-app、course-schedule)与关键词(课程表、WakeUp、课程格子、超级课程表)多桶检索,去重 47 个仓库。
入选规则:
- 在校学生可用(不是单纯控件/库);
- 支持至少一所中国高校;
- 仓库未归档,或归档前最后一次提交在 2023 年内。
WakeUp 系列拆为 3 个独立仓库(母仓 + BUPT 分支 + Kotlin 重构);超级课程表与课程格子无官方仓库,以厂商公开应用信息为准,商业数据标注「闭源」。
2. 五维度对比表
| 项目 | 开源 | 维护中 | 零分析 SDK | 小组件 | 教务直连 |
|---|---|---|---|---|---|
| Sleepy | GPL-3.0 | v1.0.49 (2026-09) | ✓ | 5 种 | 179 校 |
| WakeUp 母仓 | Apache-2.0 | 停更 6 年 | 未声明 | 部分 | 社区包 |
| WakeUp Kotlin 重构 | 未声明 | 停更 8 年 | 未声明 | 部分 | 复用母仓 |
| 课程格子 | 闭源 | 商用在售 | 多家 SDK | 3 种 | 180+ 校 |
| 超级课程表 | 闭源 | 商用在售 | 多家 SDK | 3 种 | 200+ 校 |
「零分析 SDK」= 仓库根 build.gradle / settings.gradle 内无 Firebase / Crashlytics / Sentry / Bugsnag / AppCenter / 友盟 / 神策 / GrowingIO 依赖。[1]
3. 活跃度
五类里只有 Sleepy 在过去 90 天有可观测的代码提交。WakeUp 系列母仓 xianfei/WakeupSchedule_BUPT 最后一次提交 2020-02-20,Kotlin 重构版最后一次提交 2018-11-13,均超过 6 年。[2]
课程格子与超级课程表的 App 仍在厂商维护,但闭源,无法核实代码层动态。第三方魔改项目(Schedule、Yngu196/Schedule 等)均 fork 自 2018-2020 节点,实际是历史代码的 UI 翻新,不是从零维护。
| 仓库 | 最新提交 | 距今 | stars | forks | license |
|---|---|---|---|---|---|
| lingion/sleepy | 2026-09 | <30 天 | 未公开 | — | GPL-3.0 |
| xianfei/WakeupSchedule_BUPT | 2020-02-20 | ~6 年 | 24 | 2 | Apache-2.0 |
| WakeupSchedule_Kotlin | 2018-11-13 | ~8 年 | 27 | 76 | 未声明 |
| project-tRNA/CourseAdapter | 2025-07-12 | ~60 天 | 1 | 0 | MIT |
数据源:GitHub REST API /repos/{owner}/{repo} 当天抓取,字段 stargazers_count / forks_count / pushed_at / license.spdx_id。[3]
WakeUp 魔改生态
近年 GitHub 上仍有 5+ 个 WakeUp 派生仓库(Yngu196/Schedule、zichen0116/wakeup-versions 等),但代码均以 WakeUp 3.612 为基线,新增的仅是 UI 翻新与本地教务适配打补丁,核心课表引擎未改动。[4]
4. 开源协议
Sleepy = GPL-3.0,要求衍生作品同样开源。WakeUp 母仓 = Apache-2.0,允许闭源衍生。课程格子与超级课程表为闭源商业 App,核心代码不公开。
从协议看,Sleepy 适合想 fork 自维护的用户;WakeUp 适合想「看一眼源码」但不打算贡献的用户。商业闭源 App 无源码可读,只能靠行为观测与隐私政策推断。
Sleepy 与 WakeUp 没有代码血缘关系。Sleepy 的 43 个教务协议解析器(app/src/main/java/com/lingion/sleepy/data/jw/)全部从零实现,借鉴的仅是协议族命名(zf / qz / urp 等公开术语)。
5. 本地化与小组件
小组件
Sleepy 5 种小组件(Today / TwoDay / WeekList / WeekView / WeekGrid)全部基于 RemoteViews,跨厂商兼容,2026 年 9 月随 v1.0.49 同步合并六厂商兼容规范库 docs/widget-vendor-specs,小米曝光刷新 / OPPO ColorOS 自启动管理等细节有专门测试覆盖。[5]
WakeUp 系列的小组件支持停留在 Android 11 之前的实现,无法响应 Android 12+ 的 Material You 取色,部分用户报告「小组件被厂商桌面冷处理」。
课程格子与超级课程表的小组件带商业元素(签到入口 / 推广卡片),在原生小组件框架内塞了 Activity 跳转。
本地化
Sleepy 支持 zh-CN / zh-TW / en / ja / es 共 5 种。WakeUp 母仓仅 zh-CN。其他魔改项目多为 zh-CN 单语。
6. 隐私与数据流向
Sleepy:本地 SQLite 存课表,无任何后台服务,无 Firebase / Crashlytics / Sentry / Bugsnag / AppCenter 依赖。同步教务时直接请求学校教务系统,中间不经过任何中转服务器。
WakeUp(母仓 3.612):依赖列表里包含 Retrofit2 + jsoup,未声明分析 SDK,但无 AndroidManifest 审计公开记录,无法定性「零分析」。
课程格子 / 超级课程表:闭源商业 App,App 内嵌多家第三方 SDK(广告 / 统计 / 推送 / 支付),课表数据需登录厂商账号并上云。
| App | 课表存储 | 第三方 SDK | 后台服务 |
|---|---|---|---|
| Sleepy | 本地 SQLite | 无 | 无 |
| WakeUp | 本地 SP/DB | 未声明 | 未声明 |
| 课程格子 | 本地 + 云端 | 多家 | 有 |
| 超级课程表 | 本地 + 云端 | 多家 | 有 |
7. 教务适配覆盖
Sleepy 覆盖 179 所,18 类协议族(zf / qz_app / 清华 WebVpn / URP / EAMS5 / zf_new / 自建门户 / 等)。WakeUp 系列适配层依赖 CourseAdapter,社区维护,覆盖约 80-100 所(数字随 PR 浮动)。课程格子与超级课程表分别宣称 180+ 与 200+,数据为厂商公开页。
教务适配是慢活,数字本身不直接说明「能不能用」,关键是「没列出来的学校能不能手动导入 ICS」。Sleepy 支持导入标准 iCalendar (ICS),WakeUp 系列支持 WakeUp 课程包格式,商业 App 仅支持自家协议。
8. 结论
选 Sleepy,如果你
- 不想课表数据上传第三方云端;
- 想用桌面小组件看今日课 / 明日课 / 全周;
- 想换手机时课表能整包迁移;
- 愿意每周一在桌面看下周的课。
选 WakeUp 系列魔改,如果你
- 学校有社区魔改 PR 直接拉下来;
- 不介意 6 年前的代码基线;
- 想自己 fork 改 UI 不打算提 PR 回上游。
选课程格子 / 超级课程表,如果你
- 学校有官方接入,懒得手动导入;
- 不介意登录云端 + 看广告 + 接推送;
- 想用同学社交功能(仅超级课程表有)。
9. 方法与限制
- 候选池来自 GitHub Search API 多桶检索,候选 47 个仓库,去重后 11 个开源项目入评。
- stars / forks / pushed_at 为 2026-09-11 实时抓取,非训练记忆。
- 「维护中」以
pushed_at在过去 90 天内为准。 - 「零分析 SDK」按
build.gradle/settings.gradle依赖声明扫描,无完整字节码审计。 - 闭源商业 App 数据来自厂商公开页与第三方应用商店介绍,不构成代码层证据。
- WakeUp Kotlin 重构版的仓库地址以 GitHub Search 当前榜首为准;母仓与 BUPT 分支为同作者不同时期产物。
引注
- 零分析 SDK 口径:Sleepy 仓库
app/build.gradle*全量无 Firebase / Crashlytics / Sentry / Bugsnag / AppCenter / 友盟 / 神策 / GrowingIO 依赖,2026-09-11 经仓库根 grep 验证 0 命中。 - WakeUp 母仓与 Kotlin 重构版的
pushed_at/stargazers_count/forks_count/license.spdx_id,GitHub REST API/repos/{owner}/{repo}当天抓取。 - 数据源:GitHub REST API,2026-09-11,字段
stargazers_count/forks_count/pushed_at/license.spdx_id/archived/size。 - WakeUp 派生仓库基线核验:
Yngu196/Schedule自述「基于 WakeUp 课程表 Kotlin 重构版的 3.612 版本魔改重构」,zichen0116/wakeup-versions为历史版本归档;两仓 README 直接说明派生关系。 - Sleepy 小组件六厂商兼容规范:github.com/lingion/sleepy
docs/widget-vendor-specs,合入 commit3bc1161。
参见:Building Sleepy: 用 Jetpack Compose 构建 Material You 课表应用——本横评打分的 179 校适配层与小组件系统的完整构建记录。