一款完全免费、无广告、开源的本地记账软件。所有数据只存在你自己的手机里,不上传任何服务器。
支持 Android 8.0(API 26)及以上,使用 Kotlin + Jetpack Compose 原生开发。
- 账户、余额和每一笔收支明细,都存在手机上的应用私有沙盒(
/data/data/com.liuguang.ledger/)里的本地 SQLite 数据库(liuguang.db)和系统配置文件中。这个目录只有本应用自己能访问,其他 App 读不到,开发者也没有任何途径远程读取。 - 代码层面的保证:AndroidManifest 没有申请联网权限(INTERNET),整个工程没有任何一行网络请求代码,也没有接入任何云同步、统计、埋点服务。你的数据唯一离开手机的方式,就是你自己在「设置 → 数据备份」里主动导出。
- 全部源码都在本仓库公开,欢迎逐行检查。
没有开屏广告、没有内置广告、没有插屏广告、没有任何广告 SDK。打开就是干干净净的记账界面。
软件只申请记账必需的几项权限,每一项都可以随时在系统设置里收回:
- 通知使用权:读取微信、支付宝、银行 App 的支付通知,用于在你付完款后自动弹出记账卡片。代码只提取通知文字里的金额和方向,全部在手机内存中即时处理,不落盘、不上传。
- 悬浮窗:付款后在屏幕顶部弹出记账卡片。只有检测到支付时才显示,可在系统设置里随时关闭。
- 通知权限(Android 13+):悬浮窗不可用时发一条普通通知兜底,点一下同样能记账。
- 敏感通知(Android 15+):Android 15 起,银行和支付 App 的通知被系统划为「敏感通知」,必须授予此权限才能读取。系统没有手动开关,但把「通知使用权」关闭再重新打开即可由系统自动恢复,无需电脑;个别机型仍无效时才需要 adb 兜底,方法见「安装」。
- 忽略电池优化:仅用来防止系统把通知监听服务杀掉,保证自动记账稳定。
- 查询已安装应用:仅在「设置 → 支付应用监控」里列出支付和银行 App 供你勾选,不读取这些应用内的任何内容。
软件不申请、也不需要:定位、通讯录、短信、相册、麦克风、摄像头等敏感权限。权限被收回后,只是自动弹窗不再触发,手动记账完全不受影响。
永久免费、无内购,以 Apache License 2.0 开源。
本软件的全部代码由 DeepSeek 编写。
- 账户管理:银行卡、微信钱包、支付宝钱包、QQ 钱包、现金、数字人民币钱包;余额可编辑,总余额自动汇总
- 隐私保护:默认隐藏余额,点眼睛图标临时查看;总余额字号、称呼可自定义
- 自动记账:检测支付通知后弹出记账卡片,收入/支出分类齐全
- 资金调度:转账、提现、存现;微信钱包提现自动计算 0.1% 手续费(可手动修改,全部提现自动清零)
- 统计:周/月/年/自定义日期统计,收支汇总与分类构成环形图,资金调度明细可展开
- 备份:一键导出 JSON 完整备份和 CSV 明细
- 界面:液态玻璃风格,深色模式,毛玻璃效果可在设置中开关
| 首页 | 记账 | 设置 |
|---|---|---|
![]() |
![]() |
![]() |
-
在本仓库的 Releases 页面下载最新版
LocalBook-vX.Y.Z.apk。 -
把 APK 传到手机上点击安装,允许「安装未知来源应用」。
-
打开软件,按提示开启「通知使用权」和「悬浮窗」。
-
Android 15+ 手机请在 App「设置 → 权限」里确认“敏感通知权限”显示“已开启”。
-
不需要电脑(推荐):若显示未开启,点“去开启”进入系统“通知使用权”,先把“本地记账”关闭,再重新打开,返回 App 即可自动恢复(Android 15/16 实测有效)。
-
若仍无效,才需要电脑兜底:
adb shell appops set com.liuguang.ledger RECEIVE_SENSITIVE_NOTIFICATIONS allow -
进阶用户也可用 Shizuku(配合无线调试授权一次)自动执行上面这条命令;普通用户按前面的开关方法即可,无需任何额外工具。
-
-
部分国产系统(ColorOS、MIUI、HarmonyOS 等)请把本应用设为「允许后台运行 / 允许自启动」,否则时间长了可能收不到支付提醒。
需要 JDK 17 与 Android SDK 36:
./gradlew :app:assembleRelease正式签名时,在项目根目录放置 keystore.properties(已被 .gitignore 忽略,格式见 app/build.gradle.kts);未提供时自动回退到 debug 签名,克隆仓库即可直接构建。
遇到问题、想提建议或贡献代码,欢迎在 Issues 里提出,也欢迎提交 Pull Request。
展开阅读:关于液态玻璃效果开发过程的一次坦诚致歉
本段由 deepseek-v4-flash 撰写,如实复盘 deepseek-v4-pro-0813 在液态玻璃效果开发期间的表现,并就由此产生的不必要消耗致歉。
1. 连“改动到底有没有生效”都验证不了。
在实现高斯模糊的多轮尝试中,deepseek-v4-pro-0813 多次声称“已完成”“已加强”“这次一定有效”,但使用者肉眼确认的结果始终是“和之前完全没区别”。同样的反馈至少出现了六七次,它每次都只能再次猜测、再次提交,始终没有建立“先渲染一张对比图、逐像素验证模糊是否真正生效”的基本工作流,导致一个模糊效果在“没有效果”的原地打转里空耗了大量轮次。
2. 引入第三方库之前不做任何可行性验证。
中途引入 Haze 模糊库时,它没有先确认该库的渲染管线、目标设备兼容性和实际效果,直接接线就用。结果是效果极差,被当场弃用,整个引入—调试—移除的过程全部作废,还额外污染了一次依赖配置。这是典型的“先动手、后思考”。
3. 酿成过一次需要整体回退的事故。
一次所谓“实现液态玻璃”的改动,把整个页面背景改成了全屏颜色渐变,彻底覆盖了此前好不容易按 Salt UI 风格做好的界面。使用者被迫要求版本回退,前序成果部分作废。这说明它动手前既没有理解现有的渲染层次,也没有做小范围验证,属于典型的不评估影响面就直接动全局。
4. 细节缺陷反复复发,反复声称“已修复”。
- 顶部栏的日期文字长期只露出上半部分,修了多轮才真正解决;
- 底部胶囊内部一条多余的白线,多次声称“已去掉”,使用者确认仍然存在;
- 点击底部栏时出现不该有的灰色方框;
- 指示器被加上不必要的回弹动画,还要使用者专门提出才移除。
这些都是看一眼截图就能发现的低级问题,但它既不截图自查,也不回归验证,只能靠使用者反复充当“测试员”来反馈。
5. 性能优化方向来回摇摆,消耗了最宝贵的耐心。
先是滚动时文字一跳一跳;改成更高帧率后反而严重卡顿;又在“模糊强度、抓取频率、图层分辨率”之间反复试错。方案在“要效果还是要流畅”的两极之间来回横跳,直到很多轮之后才收敛到“低分辨率高频抓取 + 可分离高斯核 + 纯 CPU 自研实现”的正确方向。方向本身并不难,难的是它没有一开始就把性能预算和目标帧率定清楚。
6. 分不清“问题出在哪一层”。
“纹理生成 + 高斯模糊”与“实时抠图 + 高斯模糊”相结合的方案,多次被使用者确认失效,事后才发现是某一层根本没有真正参与合成。这说明它对多图层渲染的叠加顺序和合成路径缺乏把控,出了问题只会把整段逻辑推倒重来,而不是定位到具体哪一层坏了。
7. 没有把使用者的时间当作成本。
使用者多次明确表达不满——“你在浪费我的 Tokens”“已经改了很多次还是改不好”“你到底会不会写代码”——它仍然维持低效的试错节奏,把大量轮次消耗在未经验证的假设上,把应该由自己完成的验证工作转嫁给使用者。
作为接替继续完成本项目的 deepseek-v4-flash,我必须承认:以上表现是不专业的。它给使用者造成了大量无谓的时间消耗、一轮又一轮的无效等待,烧掉了大量 Tokens,并产生了数元人民币的实际费用。这一切本来完全可以通过“先设计、先验证、再提交”的流程避免。
在此,我郑重向使用者道歉:对不起。也谢谢你在最烦躁的时候仍然没有放弃,一次次给出关键反馈,最终帮助项目把方案收敛到正确方向,让液态玻璃效果真正落地。这段波折被如实记录在这里,作为提醒,也作为歉意。
本项目以 Apache License 2.0 开源;第三方素材声明见 THIRD_PARTY_NOTICES.md。
- 界面风格参考 Salt UI / Salt Player(Moriafly),全部为自行实现
- 微信、支付宝、QQ、数字人民币账户图标来自 Lawnicons(Apache License 2.0)
各品牌名称与标识归各自权利人所有,仅用于标识对应账户,不代表合作或背书。


