第一次安卓开发,全程Vibe Coding,实践证明AI无敌。
做了个 Android App,叫岱宗盒子。 名字取自「会当凌绝顶,一览众山小」——岱宗是泰山的别称,也是交大里那栋图书馆楼的气质 神秘沙东小群,我爱岱宗,我爱盒子👅 仓库:yeliqin666/xjtu-toolbox-android
| 模块 | 功能 |
|---|---|
| 🔐 统一认证 | CAS 登录(RSA 加密 + MFA 手机验证码),支持本科/研究生账户 |
| 🌐 WebVPN | 自动检测校内/校外,校外走 webvpn.xjtu.edu.cn |
| 📅 课表 | 周视图,带考试安排和教材信息 |
| 📊 成绩 | JWAPP 正式成绩 + FineReport 报表,绕过评教限制 |
| ✅ 考勤 | 全 20 周流水,正常/迟到/缺勤统计 |
| 🏫 空闲教室 | 按节次筛选,CDN 数据不需要登录 |
| 💳 校园卡 | 余额 + 月度消费图表 |
| 📚 图书馆 | 座位预约、在座/续座/签退 |
| 📢 通知公告 | 一网通办 + 各学院通知聚合 |
| 📝 评教 | 一键评教 |
| 🎓 研究生 | GMIS 系统接入 |
纯 Kotlin + Jetpack Compose,目标是 Android 12+(API 31),Release 包 R8 压缩后约 4.4MB。
1 | Kotlin 2.0 |
网络部分有点复杂:校园卡是公网,不需要 WebVPN;考勤和图书馆是校内服务,校外自动走 WebVPN 代理;空闲教室走 CDN,不需要任何认证。每个模块的登录态独立维护。
1 | # Debug |
推 tag 后 GitHub Actions 自动构建并发 Release:
1 | git tag v1.0-alpha |
开发过程一言难尽。全程 Vibe Coding,在 ChatGPT、Gemini、Claude、豆包之间反复横跳,每次满怀希望地遇到报错,换来一段跑不通的新代码。修一个 bug 的流程大概是:问 ChatGPT → 新 bug → 问 Claude → 绕回原 bug → 问 Gemini → 发现是个拼写错误。经典开发链,最后摆烂让Agent和SubAgent博弈。
感谢 ChatGPT、Gemini、Claude、豆包,感谢你们前赴后继帮我写了那么多跑不通的代码,最终共同造就了这个 App(以及这篇Blog)。
核心算法参考了 Python 项目 XJTUToolBox(@yan-xiaoo),包括 CAS 登录流程、WebVPN 加解密、FineReport 报表解析、空闲教室 CDN 数据、学期时间计算等。感谢!
v1.1-beta,能跑,主要功能都有,部分细节还在打磨。后续想做的:
一开始想用的是HyperOS主题或者直接用HyperOS等OEM的控件,后来发现这种模式需要写大量xml和调试布局,效率太低了。转 Jetpack Compose 之后开发效率提升了一个数量级,至少对AI来说。
Compose 的声明式 UI 对 AI 非常友好,感觉比传统 View 好写得多。Material You 的动态配色直接就能用,不用自己调 Token。就是 AGP 9.0 配置坦荡,踩了几个坑。
遇到问题欢迎 issue,或者评论区见。