Skip to content

Repository files navigation

📒 记一笔(MoneyBook)

一款完全离线运行的 Android 记账应用。不申请网络权限、不需要注册账号、不含广告,所有数据仅保存在设备本地。

Release Android License

「记一笔」用于记录日常收入与支出,围绕记账 → 管理 → 分析 → 备份四个环节提供完整功能:分类、账户、多账本、月度预算、分类预算、周期账单、存钱目标、记账提醒、统计图表、附件、加密备份与桌面小组件等。应用基于 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),涵盖记账、分类账户账本、预算、周期账单与存钱目标、统计图表、账单检索与附件、安全与备份、外观与小组件全场景。

💳 核心记账

首页 记账(支出 / 收入 / 连续记账) 日历热力图快速补账
首页 记账 日历补账

🏷️ 分类 / 账户 / 多账本

分类管理 账户管理 账本切换与自定义
分类管理 账户管理 账本切换
账本自定义

💰 预算管控(月度 + 分类双层预算)

月度总预算 分类预算明细 超支 / 临近预警
月度预算
预算联动
分类预算明细 超支预警

🔁 周期账单 / 存钱目标 / 记账提醒

周期账单管理 存钱目标进度 记账提醒设置
周期账单 存钱目标
目标进度
记账提醒

📈 统计图表(原生 Canvas 自绘)

分类占比饼图 收支对比柱状图 收支趋势折线图
饼图 柱状图 折线图

🔍 账单检索与附件

账单筛选搜索 附件添加 附件预览(内置查看器)
账单筛选 附件添加 附件预览

🔐 安全与数据备份

应用密码锁 指纹解锁(自动唤起) AES 加密备份
应用锁 指纹解锁 加密备份
备份恢复 JSON 明文备份 CSV 表格导出
备份恢复 JSON 备份 CSV 导出

🎨 外观、小组件与新手引导

深浅主题切换 桌面小组件 首次启动引导页
主题切换 桌面小组件 新手引导

🏃 快速上手

  1. 初始设置:首次启动跟随引导完成账本、分类、预算、应用锁设置,也可以全部跳过直接使用
  2. 日常记账:首页点「+」记一笔,支持连续记账;房租、订阅等固定收支可建周期账单自动入账
  3. 月度复盘:打开统计页查看占比、对比、趋势与日历热力图,对照预算与分类预算了解钱花在哪
  4. 数据备份:设置 → 导出加密备份,保存 .mbk 文件;换手机时在新设备导入即可恢复

📲 安装

  1. 打开 Releases 页面
  2. 下载 MoneyBook-v2.0.0.apk
  3. 将文件传输到手机后点击安装,系统提示「未知来源」时选择允许

系统要求: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 作为纪念版本长期保留。

v2.0.0(2026-08-15)

  • 正式版
  • README 重写:完整功能说明与全部版本更新记录

v1.7.1(2026-08-15)

  • 设置页、关于页、作者卡片的版本号改为读取构建信息,不再硬编码,避免与安装包版本不一致

v1.7.0(2026-08-15)

  • 应用由「记账本」更名为「记一笔」,图标与小组件同步更新
  • 修复从相册 / 文件选择器返回后需要重新解锁的问题
  • 设置页增加作者信息卡片(联系方式与版权声明)

v1.6.4(2026-08-15,已由补丁版替代)

  • 附件查看完善:列表缩略图、编辑页全屏大图、调用系统应用打开文件

v1.6.3(2026-08-15,已由补丁版替代)

  • 修复附件图片类型识别:选择图片时查询真实类型,导出按文件名兜底,导入按备份元数据还原

v1.6.2(2026-08-15,已由补丁版替代)

  • 加密备份密钥改为由用户密码派生,备份可在其他设备恢复
  • 导出 / 导入增加密码输入步骤;导入后自动同步应用锁设置

v1.6.1(2026-08-15,已由补丁版替代)

  • 引导页创建的内容在完成后立即可见
  • 设置密码自动启用应用锁,关闭应用锁自动清除指纹

v1.6.0(2026-08-15,已由补丁版替代)

  • 附件随加密备份打包与恢复
  • 统计图导出 PNG
  • 日历视图当天补账入口
  • 统计增加同比环比
  • 首次启动引导页(6 页)
  • 增加 MIT 许可证与签名密钥备份说明

v1.5.1(2026-08-14)

  • 修复导入备份时 .mbk 文件在文件选择器中无法选中的问题

v1.5.0(2026-08-14,已由补丁版替代)

  • 加密备份导出与导入(GZIP + AES-256-GCM)
  • 补充软件工程文档(需求分析、系统架构、UML 建模、测试方案、设计说明书)
  • README 重写为面向用户的介绍

v1.4.0(2026-08-14)

  • 账单附件(相册图片与任意文件)
  • 分类独立预算
  • 统计日历视图
  • 数据库升级至 v4

v1.3.2(2026-08-14)

  • 修复 HyperOS 上因 requestCode 越界导致的崩溃,权限请求与文件选择器改用固定值

v1.3.1(2026-08-14,已由补丁版替代)

  • 修复 HyperOS 上通知 / 小窗打开崩溃
  • 存钱目标支持存入操作,自动记录储蓄支出
  • 首页增加存钱目标卡片

v1.3.0(2026-08-14,已由补丁版替代)

  • 多账本管理
  • 存钱目标
  • 记账提醒
  • 指纹解锁与锁屏联动

v1.2.2(2026-08-14)

  • 修复指纹解锁失败(Activity 基类不满足 BiometricPrompt 要求)
  • 增加账本与存钱目标数据表,数据库升级至 v3,备份格式升级

v1.2.1(2026-08-14,已由补丁版替代)

  • 小组件增加刷新按钮与记账后自动刷新
  • 指纹验证失败提示优化
  • 统计维度常显并与图表联动

v1.2.0(2026-08-14,已由补丁版替代)

  • 修复 Android 15 上的指纹崩溃
  • 统计增加三态饼图、柱状对比、趋势折线
  • 首页增加今日收支卡;账单支持金额区间筛选
  • 小组件显示预算剩余

v1.1.1(2026-08-14,已由补丁版替代)

  • 修复数据库 v1→v2 迁移问题

v1.1.0(2026-08-14,已由补丁版替代)

  • 多账户、月度预算、周期账单、CSV 导出
  • 统计支持日 / 周 / 月 / 年时间范围
  • 应用锁(密码 + 指纹)
  • 桌面小组件
  • 移除网络状态权限

v1.0.0(2026-08-14)

  • 首个版本:记账、分类管理、首页汇总、账单列表、月度占比饼图、主题切换、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 assembleDebuggradlew 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/   数据库迁移自动化测试

📄 许可与联系

About

📒 记一笔 (MoneyBook) — 完全离线的 Android 记账应用:不申请网络权限、无广告、无数据收集,数据仅存本地。Kotlin + Jetpack Compose + Room + MVVM,支持多账本、多账户、预算、周期账单、存钱目标、统计图表与 AES-256 加密备份。An offline-first, privacy-focused Android expense tracker.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages