FormulaManager(公式管理器)最早是面向工程计算场景的 C# 桌面工具,后来在 FormulaManager.Mobile(MAUI)里尝试过移动端,最终我选择了 Kotlin + Jetpack Compose 重写为原生 Android 应用,也就是本站提供下载的 Kotlin 版(本文写于 v1.0.0,当前版本 v1.0.1)。
版本提示(2026-11-02):本文记录的是 v1.0.0 的迁移过程。当前 Android 版为 v1.0.1(versionCode 27),包名
cn.formulamanager.formulamanager;数据库已升级到 Room schema v3,与 Windows 版(v1.0.7)的.db可以互相导入。功能与公式库的最新情况见《FormulaManager 1.0.1 更新说明》。
为什么重写而不是继续用 MAUI
移动端最重要的使用场景是离线、快速、随时可用。原工程的 C# 版功能完整,但迁移到移动端时,几个核心诉求驱动我选择了原生重写:
- 公式计算与数据库操作在本地完成,不需要服务器;
- Compose 声明式 UI 对大量表单类界面的维护成本更低;
- Room + SQLite 与既有数据模型可以平滑对接,历史公式库可以继续使用。
功能面板
应用底部共有 5 个面板,覆盖工程计算的常见场景:
| 面板 | 主要能力 |
|---|---|
| 公式 | 分类树 + 公式列表 + 二维 / 三维查表公式 + 表达式计算 + 历史记录 |
| 方程 | 一元一次至三次、二元一次方程组、指数 / 参数 / 分式方程 |
| 规划 | 类似 Excel Solver:GRG 非线性、单纯线性、演化方法,支持多变量与约束 |
| 统计 | 两组数据统计、散点图、线性 / 指数 / 对数 / 多项式拟合、PDF 导出 |
| 分步 | 多公式组合计算、公式代号引用、循环检测、方案保存、PDF 导出 |
公式库默认内置 200 条水泥行业常用公式,用户也可以导入自己的 .db 公式库,或用根目录的 Python 脚本在 Excel 与 Room 数据库之间互转。
数据库迁移的取舍
旧版 EF Core 数据库使用 Id / Name / ParentId 的 PascalCase 命名,时间格式与 Room 也不同。为了不丢掉历史公式库,做了两层兼容:
- 数据库管理入口会自动检测并清理非 Room 的默认库;
- 旧库导入时按需执行 PascalCase 到 Room 小写列的迁移;
- 默认库缺失时,优先从
assets复制内置公式库,再回退到精简种子数据。
迁移时的一个教训:Room 对 schema 校验非常严格,列名必须全小写、不能带 DEFAULT,否则启动就会报 invalid schema。数据转换脚本也因此反复对齐过。
发布要点
- 包名
cn.formulamanager.formulamanager,minSdk 21,支持 Android 5.0+; - Release APK 已签名,可直接安装;
- 应用不联网、不上传任何数据,规划 / 统计 / 分步方案统一存入本地
app_plans.db。
后续计划:更多行业公式包、统计增加假设检验、规划求解增加敏感度分析。欢迎下载试用并反馈。