我连载了一个原生鸿蒙开发系列,希望通过系列文章带你一同了解我是如何从0开发一款鸿蒙原生软件的,欢迎订阅关注。本篇是完结篇。
我在原生鸿蒙上造了个 memos 客户端 · 临门一脚却选择了让路
系列收官小结 · 一个华为员工、一款备忘录软件、一段“不重复造轮子”的故事。
把脑子里闪过的想法,用最快的方式记下来——然后,你的数据永远属于你自己。
EDITOR'S NOTE
写在系列最后一篇之前这一篇,是刘顾问客厅 HarmonyOS 开发系列的收官小结。前面几篇写了备忘录软件开发中一桩桩真实的踩坑与取舍:标签保存、RDB 事务、手势交互、UI 自动化测试基建……而这一篇,讲的是这个项目在临门一脚时,一个出人意料却又理所当然的决定。
如果有一天,你花了大半年,亲手造了一艘船。你画图纸、熬通宵、一遍遍下水试航,修修补补,终于到了准备扬帆起航的那一天。
然后你发现,码头上已经停着一艘更好的船,帆早就挂好了,航线也已经跑起来了。
你会怎么办?
渔夫出海前不知道鱼在哪里,可是他们还是选择了出发,因为他们相信自己会满载而归。人生很多时候,是选择了才有机会,是相信了才有可能。
这就是我想讲的故事。关于一个华为员工,关于一款备忘录软件,关于原生鸿蒙,也关于「不重复造轮子」这句话真正的分量。
01
PART
为什么我要自己写一个 memos 客户端
WHY BUILD IT MYSELF
先交代背景。我是华为公司的一名员工,日常用的设备,大多是华为产品。升级到原生鸿蒙(HarmonyOS NEXT)之后,手机焕然一新,但我发现一个问题——我离不开的一款软件,没有好用的原生客户端。
它叫 memos,一个开源的、自托管的碎片化笔记服务。理念很简单:把脑子里闪过的想法,用最快的方式记下来,然后你的数据永远属于你自己。我是它的重度使用者。
一边是离不开的应用,一边是全新的原生鸿蒙生态,两边一撞,念头就起来了:为什么不能自己动手,给 memos 做一个鸿蒙原生客户端?
于是,我开始了。用原生ArkTS 架构,从零到一。
02
PART
我造出了什么
WHAT I BUILT
我给软件起名 Memos 笔记(Memos Note),包名 com.memos.app。一句话简介:轻量自托管笔记客户端:本地优先、离线可写,数据由你掌控。
几个自认为还拿得出手的亮点:
数据自主,隐私优先
自托管:连接你自己的 memos 服务器(实例地址 + 令牌),内容存在你自己的设备与服务器上,没有云厂商替你“保管”数据,自然也就没有数据被拿去训练模型的风险;零采集:全应用仅申请网络与网络状态两项基础权限,无广告、无第三方 SDK、不收集设备标识、不追踪用户行为;硬件级加密:登录令牌经 HUKS 硬件密钥库 + AES-256-GCM 加密存储——密钥由安全硬件生成并托管,就算有人拿到你的数据文件,也解不开令牌,更杜绝明文日志泄漏。
本地优先,离线可用
所有写操作先落本地、即时可见——断网、地铁、飞行模式,都不耽误你记录和浏览;未同步的改动自动进入离线队列,联网后按序补传、自动合并,全程无需手动干预;增量同步引擎只拉取上次同步以来的变化,2000+ 条笔记也不会重复全量拉取,省电省流量;每 24 小时自动全量对账一次,保证两端一致。
纯正的笔记体验
完整 Markdown 渲染:代码块、表格、任务清单(可勾选回写服务端)、引用、分级标题;标签体系:#标签 一键筛选;附件(图片/文件)上传与管理,资源页三分类聚合展示;Flomo 风格分层编辑工具条:标签/图片/粗体/斜体/列表/更多,键盘弹起自动让位,光标永远不被遮挡;评论互动、可见性(私密/保护/公开)、归档、置顶、分享链接,一应俱全。
为鸿蒙而生
原生 ArkTS 架构,轻盈流畅,安装包很小,适配手机/平板/二合一;系统分享接入:从任意应用一键分享到 Memos,收藏灵感就在弹指之间;桌面卡片:不用打开 App,灵感直接呈现在桌面卡片上;生物识别应用锁:基于系统 PIN/指纹/人脸认证,给隐私内容加一道自己的锁;手势丝滑:左滑轻滑露出操作、快甩直接归档/删除、飞出动效反馈,多选批量管理更高效;深浅主题跟随系统,多实例账号自由切换,租户数据完全隔离。
发现与沉淀
Explore 发现页:浏览公开流,看看别人在记录什么;活跃度热力图:近 52 周的记录节奏一目了然,见证你的思考轨迹。
整个软件用 vibe Coding 的方式开发,部分代码逻辑可能还不算完善,但功能和交互,已经称得上完整。
03
PART
临门一脚,发现“船已经有人造好了”
THE SHIP IS ALREADY THERE
开发接近尾声,我准备把它上架到鸿蒙应用市场。
然后,就是开头那个场景。
我在应用市场搜索的时候,发现一款同款软件已经上架,整体效果很好。它的名字,叫 memos 灵感。
那一刻的心情,很难用一句话说清。有惊讶,有失落,但更多的是——一种奇妙的释然。
就像你翻山越岭,终于爬上山顶,发现有人已经坐在那里看风景了。第一反应是不甘心,第二反应是:这风景,确实是好啊。
04
PART
不重复造轮子:开源,让路
DON'T REINVENT THE WHEEL
冷静下来之后,我做了个决定。
作为一名 IT 人士,我太熟悉一句话:不要重复造轮子。这句话我说过很多次,但第一次,它真切地落在我自己身上。
从来没有什么一蹴而就,一切都是时间的沉淀。人生没有白走的路,每一步都算数。
这一两月时间没有白费。它换来了我对原生鸿蒙一整套开发注意事项的实战认知——这也是我写下整个鸿蒙开发系列文章的原因。它换来了一个功能完整的客户端,和一份可以交给后来者的代码。
于是,我把源代码完全开源了,放在 GitHub 上:https://github.com/gujin03/memos-harmony/
THE EMAIL
写给「memos 灵感」开发者的信开发者你好。我是微信公众号“刘顾问客厅”的作者,自己是华为公司的一名员工。由于使用的设备多数为华为产品,在升级到原生鸿蒙系统后,我希望开发备忘录这款软件的鸿蒙原生版本,我也是该程序的重度使用者。在开发过程中,我总结了多篇经验与教训的文章(发表在个人公众号中)。我原本计划将该软件上架至鸿蒙应用市场;但在开发接近尾声时,我发现你开发的同款软件已提前上架,且整体效果很好。本着“不重复造轮子”的原则,我决定将此前开发的源代码完全开源。如果你感兴趣,可以查看我开源的仓库(https://github.com/gujin03/memos-harmony/)。
与你当前开发的版本相比,我的版本中包含一些交互设计可供参考,例如在备忘录界面左滑、右滑可快速存档或删除。整个软件采用 vibe Coding 方式开发,部分代码逻辑可能尚不完善。下面我录制了几个关于交互的动图,如果你感兴趣,可以看一下。我后续大概率将不再独立演进该软件。memos 是一款非常好的开源应用,希望经过我们的努力,共同提升其客户端体验。感谢!
几天后,收到了他的回复。很短,但很暖:
“左滑右滑操作以及批量操作确实是一个挺常见的使用习惯,我之后也会添加这个功能。有您这样的支持者,会让我继续坚持下去。”
那一刻我觉得,这件事做得值。轮子没有白造——它成了别人前进路上的一块石头。
05
PART
所以,想用 memos 的你,直接去应用市场搜它
JUST SEARCH IT
如果你也想在原生鸿蒙上用上 memos,我的建议很直接:
去华为应用市场,搜索「memos 灵感」,下载它。 那位开发者做得很用心,整体效果很好,而且他还在持续迭代——比如,那个让读者拍案叫绝的左滑右滑交互,也即将被他采纳。这就够了。
至于我的这份代码,就安静地留在 GitHub 上,https://github.com/gujin03/memos-harmony/,供后来者参考。里面的 HUKS 硬件级加密方案、增量同步引擎、离线队列设计,说不定能成为某个人灵感的起点。
///
END
写在最后
FINAL THOUGHTS
回头看看,这个系列写了备忘录软件开发中的一桩桩注意事项:标签保存的坑、服务端同步与 RDB 事务的纠缠、右滑手势交互的打磨、UI 自动化测试基建……每一篇,都是一段真实的踩坑记录。我把它写成文章,是因为我知道:在原生鸿蒙这个年轻的生态里,每一个“坑”被别人提前看到,都是后来者的福利。
做软件如此,写文章如此,在原生鸿蒙这条路上前行,亦如此。山不转水转,也许未来某一天,我们会在另一个码头相遇。如果你也想动手做点自己的东西,别怕重复,别怕白费。先出发,先上路,先把自己的船造出来。
我不去想是否能够成功,既然选择了远方,便只顾风雨兼程。
既然看到这里了,如果觉得有用,随手点个赞、在看、转发三连吧。
THANKS FOR READING
我是 刘顾问,关注我,我们一同进步。
夜雨聆风