夜雨聆风学习资料网

ARTICLE · 1356819

车管家离线版上线:装完断网也能用,源码全开源

车管家离线版上线:装完断网也能用,源码全开源

车管家离线版上线:装完断网也能用,源码全开源

前几天朋友问我:你那个记保养的东西,发我装一个。

这事儿以前我真答不上来。车管家原本跑在我自己 NAS 上,得在局域网里打开网页才算数。外人连不上,谈不上装手机,更没法发给别人。

所以干脆改了一遍:做成一个正经的 Android 安装包,网页全部打包在里面,装完飞行模式也能用。源码也一并开源了,想自用、想改都随便。

先说它到底能干嘛

我自己的用车场景就那几样:机油什么时候该换、上次修了多少钱、这车一年烧掉我多少银子。车管家就管这四件事:

  • • 多车档案
    :家里几台车、单位几台车,一台一个档案
  • • 双维度保养提醒
    :既能按里程,也能按时间。有些人一年开不到五千公里,光看里程机油早过期了,这个坑我踩过
  • • 维保凭证
    :修了什么、换了什么件、花了多少、在哪家店,拍照存档
  • • 养车成本统计
    :一年下来油钱、保养、维修各占多少,心里有数

前几天刚加的几个小东西,用起来顺手不少:保养规则做成了模板,点一下自动填好项目和周期,不用自己一个个敲;车牌输入改成省份下拉 + 号码,不用切输入法找汉字;档案卡片左滑就能删。

为什么我非要它「不联网」

市面上这类 App 不少,但我自己用着别扭,主要是三件事:

  • • 
    要注册。手机号、验证码,一套下来你的用车记录就跟某个服务器绑死了
  • • 
    数据在云上。哪天它倒闭、关服、改收费条款,你的记录说没就没
  • • 
    想导出简历式的完整账单?不好意思,会员才行

我做的这个正好反过来:不注册、不联网、不用付钱,数据就存在你自己手机的浏览器本地存储里。别人拿不到,我看不到,连它自己也不往外面发。

代价也明说:默认完全离线,换手机、清缓存会丢数据。这是离线的代价。所以我自己也留着纸质单据和照片,重要的东西不押在一个 App 上。(导出功能后续会加。)如果你有 NAS(群晖、威联通都行),可以在「设置」里打开"NAS 同步",把数据备份过去——换手机、清缓存都能从 NAS 拉回来,不用怕丢。

这版和上一版,区别在哪

上一版我也出过包,但说实话那不算真离线。它是个壳——点开其实是访问一个网址,靠浏览器缓存撑着。头一次必须联网,网址哪天挂了就打不开。

这版不一样,网页文件本身就在安装包里,App 自带的。

怎么验?装完之后开飞行模式,点开,能用。

怎么装(安卓)

两个办法,挑方便的来:

  • • 下载安装包
    (1.6MB):https://github.com/kenowong/car-maintenance/releases/download/v2.0-offline/carcare-offline-v2.apk
  • • 直接用网页版
    (免安装,也能加到手机桌面):https://kenowong.github.io/car-maintenance/

上面这个安装包就是最新版:已经带 NAS 同步,并修好了"同步状态显示异常"和"界面报错提示遮挡操作"两个问题。之前下过旧版的,直接覆盖安装即可,数据不丢。

手机不方便复制链接的,扫这个:

安卓第一次装第三方包,会提示「允许安装未知应用」,给对应 App 开一下权限就行。荣耀这类国产机如果拦,去「设置→安全→更多安全设置→安装未知应用」里开。苹果没做包,iPhone 用户请用上面的网页版,Safari 打开后「添加到主屏幕」,用起来跟 App 一样。

数据还能同步到你自己的 NAS

完全离线是默认状态,数据就躺在你自己手机本地。但如果你家里、公司有一台 NAS,车管家现在能连上去——多台手机共用同一份养车数据:你手机记的保养,另一台手机、或者 NAS 上的网页版一打开就能看到,不用再手动倒来倒去。

  • • 
    进「设置」,把"NAS 同步"开关打开,填上你 NAS 的地址(例如 http://192.168.1.50:8143)
  • • 
    点「测试连接」,连上了会直接显示"已连接",左上角的徽标也会从"数据·本机"变成"数据·NAS"
  • • 
    以后每次保存,数据会静默推到 NAS;换手机、清缓存都不怕,重装后从 NAS 拉回来就行
提醒一句:NAS 那头要跑一个配套的同步服务(一个零依赖的 Python 小脚本,监听 8143 端口)。这是给你自己用的,开不开随你。纯手机单机用也完全没问题,不强制。

给同行:技术上我是怎么绕过去的

这段写给做开发的看,不感兴趣可以直接跳到结尾开源地址。

思路是Web 资源打进 APK 的 assets,用 WebView 加载。但里面有个坑值得说:

很多人会直接用 file:///android_asset/ 加载,看着最简单,问题出在本地存储不可靠——安卓各版本对这个非正常源的 localStorage 行为不一致,极端情况数据存不进去。整个 App 的数据层是全靠它的,赌不起。

所以我用了 WebViewAssetLoader,把本地资源映射到一个标准的 HTTPS 源下再加载。这样 localStorage、Service Worker 都跟正常网页一模一样,数据落盘稳。

另外顺手记三个坑,省得后来人再踩:

  • • 
    改包名时,Java 源码的包目录也得跟着改。我只改了配置文件没改源码路径,结果编译通过、签名正常,一打开就闪退——运行时找不到入口类。静态检查全绿但就是跑不起来,查了半天
  • • 
    构建依赖 maven.google.com 访问不通,换阿里云镜像解决
  • • 
    本机缺 android-36 平台,又不想为此重装 SDK,把依赖的 androidbrowserhelper 降到 2.5.0 就能用现有的 android-34 编出来

包名和签名跟上一版保持了一致,所以版本号抬到 2,可以直接覆盖安装升级。提醒一句:存储源变了,旧版的本地数据不会自动迁过去,重要记录先留个影。

源码地址,随便拿

MIT 协议,商用也行,改了自用也行。会 Python 和前端的同行的确可以照着自己的车队改。

Gitee(国内访问快) https://gitee.com/kenowong/car-maintenanceGitHub https://github.com/kenowong/car-maintenance安装包下载(Release v2.0-offline) https://github.com/kenowong/car-maintenance/releases/tag/v2.0-offline发布页 / 网页版入口 https://kenowong.github.io/ 

有 bug、有想法、想加功能,提个 issue 或者直接找我,别客气。

最后

我做硬件和系统集成二十年,写代码算半个爱好。这两年有个体会:给自己做的工具反而最容易做下去。每天都在真用,哪儿别扭,当天就知道。

如果你公司有车队台账、设备巡检、仓库物料这类「说大不大、说小也烦」的管理需求,也可以聊聊。不一定非要写代码,很多时候一张表、一个流程就能解决掉。

一套进销存,把小生意的货、钱、票管明白 教了三遍还是错的音,孩子用点读笔点一下就跟上了,三年级英语跟读记录

pep-math-coach 更新说明:奥数 240 专题、错题打印扫码、手机端适配 给英语工具加了个「课文跟读」:娃跟着读,系统自动判对错 我把学而思、作业帮、高途的数学方法,做进了一个能自己出题的网页里 不会剪辑,我照样把宣传片做出来了

我是 keno王,20 年网络与弱电老兵搞设备、做方案、写点顺手的工具有用就点个关注,下次更新不迷路

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料