一款完全离线运行的 Android 记账应用。不申请网络权限、不需要注册账号、不含广告,所有数据仅保存在设备本地。
「记一笔」用于记录日常收入与支出,围绕记账 → 管理 → 分析 → 备份四个环节提供完整功能:分类、账户、多账本、月度预算、分类预算、周期账单、存钱目标、记账提醒、统计图表、附件、加密备份与桌面小组件等。应用基于 Kotlin + Jetpack Compose + Room 开发,采用 MVVM 架构,最低支持 Android 9.0,在小米 HyperOS 3.0.5.0 上测试通过。
- 完全离线:未申请 INTERNET 权限,系统层面无法联网;不含广告 SDK、统计组件或任何第三方数据收集
- 数据仅在本机:账单存储于设备 SQLite 数据库,附件存放于应用私有目录,没有云端副本
- 金额精确:金额以「分」为单位的 64 位整数存储与运算,避免浮点误差
- 免费开源:MIT 许可,无内购;代码完整公开,可自行构建
| 📝 记账 | 🗂 管理 | 📊 分析 | 🛡 安全与数据 |
|---|---|---|---|
| 支出 / 收入记账 | 分类管理 | 分类占比饼图 | 应用锁(密码 + 指纹) |
| 连续记账 | 多账户 | 收支对比柱状图 | 加密备份(AES-256) |
| 日期补记 / 日历补账 | 多账本 | 趋势折线图 | JSON 备份 |
| 备注与附件 | 月度预算 | 日历热力图 | CSV 导出 |
| 分类预算 | 同比环比 | 记账提醒 | |
| 周期账单 | 图表导出 PNG | 桌面小组件 | |
| 存钱目标 | 深色模式 | ||
| 新手引导 |
- 首页悬浮「+」按钮进入记账页,切换支出 / 收入,填写金额、分类、账户、备注与日期
- 日期默认今天,可补记历史;在统计日历中点击任意日期也能直接补账
- 连续记账:保存后选择「继续记」留在本页,自动聚焦金额并清空上一笔附件,适合月底集中补录
- 已保存的账单可随时编辑或删除
- 内置支出分类(餐饮、交通、购物、住宿、娱乐、医疗)与收入分类(工资、红包、兼职)
- 可自定义添加、重命名、删除分类,每个分类可选 emoji 图标;内置分类受保护,避免误删
- 内置现金、微信、支付宝、银行卡等常用账户,支持自定义增删
- 账单行显示所属账户;删除账户时,其账单自动转移到其他账户,不会丢失
- 支持创建多个账本(如日常、旅行、工作),各账本的账单、统计、预算相互独立
- 首页顶栏一键切换账本;删除账本会连带删除其中账单,并有二次确认
- 周期账单与 CSV 导出支持按账本区分
- 按「年-月」设置总支出预算,首页进度条显示当月支出与剩余额度
- 支出超过预算时进度条变红并提示超支
- 为单个支出分类按月设置限额(如餐饮 1200、娱乐 300),而不只是一个总预算
- 分类预算页逐项显示「已用 / 限额」进度;使用达到 80% 橙色提示「接近预算」,超额红色提示「已超支」
- 首页预算区自动汇总接近或超支的分类(最多 3 条)
- 适用于房租、通勤、会员订阅、工资等固定周期收支
- 支持每周 / 每月 / 每年,可设开始日期、启用或停用
- 打开应用时自动补记到期账单;月末(1 月 31 日 → 2 月 28/29 日)与闰年边界自动处理,不会重复记账
- 设定目标金额与截止日期,自动计算每月需要存入的金额
- 进度条显示当前进度;「存入」操作自动生成一笔「储蓄」支出账单并计入统计
- 首页展示存钱目标卡片,随时查看进度
- 每日定时本地通知提醒记账,时间可自定义,一键开关
- 由 WorkManager 调度,重启手机后仍有效;Android 13 及以上首次开启时请求通知权限
时间范围支持日 / 周 / 月 / 年;饼图与日历图支持支出 / 收入 / 全部三种类型切换。
| 图表 | 说明 |
|---|---|
| 分类占比饼图 | Canvas 自绘环形图,查看各类别支出 / 收入占比 |
| 收支对比柱状图 | 近 6 个月收入与支出并排对比 |
| 趋势折线图 | 近 12 个月收支走势 |
| 日历热力图 | 月历网格,日期数字外圈越大表示当天金额越高;点击日期查看当日明细,并可直接补账 |
- 同比环比:显示本月与上月、去年同期的涨跌对比
- 图表可导出 PNG 图片(1080×1280),保存到相册或分享
- 账单按月分组、时间倒序,组头显示当月收支合计
- 支持关键词搜索(备注 / 分类名)、收支类型筛选、金额区间筛选
- 每笔账单可附加相册图片(截图、小票照片)或任意文件
- 列表行显示附件标识;编辑页显示缩略图 / 文件名,可全屏查看图片,或调用系统应用打开文件
- 附件随加密备份一起导出,导入时自动恢复到原账单
| 方式 | 格式 | 说明 |
|---|---|---|
| 加密备份 | .mbk | 账单与附件打包压缩后使用 AES-256-GCM 加密;密码为应用锁密码,可在其他设备上恢复;兼容历史格式 |
| JSON 备份 | .json | 明文格式,兼容所有历史版本导入 |
| CSV 导出 | .csv | Excel / WPS 直接打开,支持按账本导出 |
- 4~6 位数字密码,加盐哈希存储,不保存明文;支持指纹 / 生物识别解锁
- 应用回到前台自动锁定,锁屏页自动唤起指纹验证
- 设置密码自动启用应用锁;关闭应用锁自动清除指纹;未设密码时指纹选项不可用
- 加密备份恢复后自动同步应用锁设置
- 显示当前账本的本月结余、收入、支出与预算剩余,超支时红字提示
- 「+ 记一笔」按钮直达记账页;支持手动刷新,记账后自动刷新
- 深色、浅色、跟随系统三种主题,切换即时生效并持久保存
- 首次启动通过 6 页向导完成账本、分类、预算、应用锁的初始设置,可逐步跳过
- 向导中创建的内容保存后立即生效,完成引导即可看到对应列表
- 显示应用说明与版本号,版本号自动读取构建信息,与安装包一致
- 提供作者联系方式与版权信息
以下为「记一笔」主要界面的实际截图(v2.0.0),涵盖记账、分类账户账本、预算、周期账单与存钱目标、统计图表、账单检索与附件、安全与备份、外观与小组件全场景。
| 首页 | 记账(支出 / 收入 / 连续记账) | 日历热力图快速补账 |
|---|---|---|
![]() |
![]() |
![]() |
| 分类管理 | 账户管理 | 账本切换与自定义 |
|---|---|---|
![]() |
![]() |
![]() ![]() |
| 月度总预算 | 分类预算明细 | 超支 / 临近预警 |
|---|---|---|
![]() ![]() |
![]() |
![]() |
| 周期账单管理 | 存钱目标进度 | 记账提醒设置 |
|---|---|---|
![]() |
![]() ![]() |
![]() |
| 分类占比饼图 | 收支对比柱状图 | 收支趋势折线图 |
|---|---|---|
![]() |
![]() |
![]() |
| 账单筛选搜索 | 附件添加 | 附件预览(内置查看器) |
|---|---|---|
![]() |
![]() |
![]() |
| 应用密码锁 | 指纹解锁(自动唤起) | AES 加密备份 |
|---|---|---|
![]() |
![]() |
![]() |
| 备份恢复 | JSON 明文备份 | CSV 表格导出 |
|---|---|---|
![]() |
![]() |
![]() |
| 深浅主题切换 | 桌面小组件 | 首次启动引导页 |
|---|---|---|
![]() |
![]() |
![]() |
- 初始设置:首次启动跟随引导完成账本、分类、预算、应用锁设置,也可以全部跳过直接使用
- 日常记账:首页点「+」记一笔,支持连续记账;房租、订阅等固定收支可建周期账单自动入账
- 月度复盘:打开统计页查看占比、对比、趋势与日历热力图,对照预算与分类预算了解钱花在哪
- 数据备份:设置 → 导出加密备份,保存 .mbk 文件;换手机时在新设备导入即可恢复
- 打开 Releases 页面
- 下载
MoneyBook-v2.0.0.apk - 将文件传输到手机后点击安装,系统提示「未知来源」时选择允许
系统要求:Android 9.0(API 28)及以上,支持主流品牌,实测兼容小米 HyperOS 3.0.5.0。 旧版本可直接覆盖安装,数据自动保留。
应用会联网吗? 不会。应用未申请网络权限,系统层面无法联网,也不包含广告或统计组件。
为什么需要通知和开机自启权限? 通知权限用于记账提醒,开机自启权限用于周期账单自动补记,两者均在设备本地运行。
如何迁移到新手机? 在设置中导出加密备份(.mbk 文件),在新设备上导入并输入原应用锁密码,账单与附件一并恢复。
升级版本会丢失数据吗? 不会。数据库升级经过自动化测试验证,覆盖安装时数据完整保留。
忘记应用锁密码怎么办? 密码不明文存储,无法找回。可清除应用数据后重新使用,此前请先做好备份。
收不到记账提醒? 请检查通知权限是否开启;部分品牌手机需要在系统设置中允许应用自启动或后台运行。
v2.0.0 与 v1.7.x 有什么区别? 功能一致。v2.0.0 为正式版;v1.7.1 是应用更名「记一笔」后的纪念版本,保留在 Releases 页。
说明:部分历史版本被后续补丁版替代后已从 Releases 页移除(在下方标注),仅保留稳定版本;v1.7.1 作为纪念版本长期保留。
- 正式版
- README 重写:完整功能说明与全部版本更新记录
- 设置页、关于页、作者卡片的版本号改为读取构建信息,不再硬编码,避免与安装包版本不一致
- 应用由「记账本」更名为「记一笔」,图标与小组件同步更新
- 修复从相册 / 文件选择器返回后需要重新解锁的问题
- 设置页增加作者信息卡片(联系方式与版权声明)
- 附件查看完善:列表缩略图、编辑页全屏大图、调用系统应用打开文件
- 修复附件图片类型识别:选择图片时查询真实类型,导出按文件名兜底,导入按备份元数据还原
- 加密备份密钥改为由用户密码派生,备份可在其他设备恢复
- 导出 / 导入增加密码输入步骤;导入后自动同步应用锁设置
- 引导页创建的内容在完成后立即可见
- 设置密码自动启用应用锁,关闭应用锁自动清除指纹
- 附件随加密备份打包与恢复
- 统计图导出 PNG
- 日历视图当天补账入口
- 统计增加同比环比
- 首次启动引导页(6 页)
- 增加 MIT 许可证与签名密钥备份说明
- 修复导入备份时 .mbk 文件在文件选择器中无法选中的问题
- 加密备份导出与导入(GZIP + AES-256-GCM)
- 补充软件工程文档(需求分析、系统架构、UML 建模、测试方案、设计说明书)
- README 重写为面向用户的介绍
- 账单附件(相册图片与任意文件)
- 分类独立预算
- 统计日历视图
- 数据库升级至 v4
- 修复 HyperOS 上因 requestCode 越界导致的崩溃,权限请求与文件选择器改用固定值
- 修复 HyperOS 上通知 / 小窗打开崩溃
- 存钱目标支持存入操作,自动记录储蓄支出
- 首页增加存钱目标卡片
- 多账本管理
- 存钱目标
- 记账提醒
- 指纹解锁与锁屏联动
- 修复指纹解锁失败(Activity 基类不满足 BiometricPrompt 要求)
- 增加账本与存钱目标数据表,数据库升级至 v3,备份格式升级
- 小组件增加刷新按钮与记账后自动刷新
- 指纹验证失败提示优化
- 统计维度常显并与图表联动
- 修复 Android 15 上的指纹崩溃
- 统计增加三态饼图、柱状对比、趋势折线
- 首页增加今日收支卡;账单支持金额区间筛选
- 小组件显示预算剩余
- 修复数据库 v1→v2 迁移问题
- 多账户、月度预算、周期账单、CSV 导出
- 统计支持日 / 周 / 月 / 年时间范围
- 应用锁(密码 + 指纹)
- 桌面小组件
- 移除网络状态权限
- 首个版本:记账、分类管理、首页汇总、账单列表、月度占比饼图、主题切换、JSON 备份
- 不申请任何权限
- 借贷往来账:记录借款与还款、应收与应付,支持还款提醒
- 订阅扣费追踪:识别重复扣费的会员订阅,提醒即将扣费,帮助发现不必要的订阅
- 小票 / 截图 OCR 识别:识别微信、支付宝截图与纸质小票,自动提取金额、时间、商户
配套软件工程文档:
技术栈与构建指南
- 技术栈:Kotlin 1.9.24 + Jetpack Compose(Material 3)+ Room 2.6.1 + MVVM,compileSdk 34 / minSdk 28
- 环境:Android Studio Koala(2024.1.1)及以上,JDK 17
- 命令行:
gradlew assembleDebug或gradlew assembleRelease - 发布签名:在
local.properties中配置release.keystore(密钥库不提交到 git) - 数据库迁移测试:
tools/migtest/,使用 sqlite-jdbc 在真实 SQLite 引擎上执行,累计 33 项断言
app/src/main/java/com/andersonlin/moneybook/
├── ui/ 界面层:Compose 页面与 ViewModel
├── data/ 数据层:Entity / DAO / Repository / 备份加密 / 偏好
├── widget/ 桌面小组件(Glance)
└── util/ 工具类
docs/ 软件工程文档
tools/migtest/ 数据库迁移自动化测试
- 代码采用 MIT License 开源许可
- © 2026 AndersOnLin4,软件著作权登记中
- 联系邮箱:andersonlin1107@gmail.com;仓库:https://github.com/AndersOnLin4/moneybook





























