作为一名计算机专业大三学生,我过去对「国产操作系统」的印象,大多停留在课本里的概念 —— 直到去年秋天,一次偶然的课程作业,让我和鸿蒙(OpenHarmony)结了缘,也彻底改变了我对「开发」的认知。

缘起:一份 “不一样” 的课程作业

去年 10 月,《移动应用开发》课程布置了期末作业:开发一款面向大学生的实用 APP,技术栈不限。班里同学大多选了熟悉的 Android 或 iOS,我却在浏览开源社区时,偶然刷到了鸿蒙开发者社区的「校园应用开发大赛」公告 ——“基于 ArkUI 声明式框架,开发校园场景应用”。

“声明式 UI?国产开源系统?” 抱着 “试试看新东西” 的心态,我决定 “冒险” 一次:用鸿蒙开发一款「智慧课表」APP,解决自己和同学平时查课、记作业的痛点 —— 比如课表不支持实时更新、作业提醒经常漏、教室位置找不到等问题。

现在回想起来,当时的决定有点冲动:我连鸿蒙的基本语法都不懂,手机也不是鸿蒙系统,只能靠模拟器调试。但没想到,这份 “冲动”,成了我开发路上最宝贵的起点。

踩坑:从 “看不懂” 到 “会调试” 的破局

刚开始上手时,我差点打了退堂鼓。

过去学 Android 开发时,习惯了 “找到控件→设置监听→更新 UI” 的命令式逻辑,而鸿蒙的 ArkUI 框架是「声明式」——“你要什么界面,就写什么代码”,状态变化时 UI 自动更新。比如我要做课表的 “今日课程” 模块,用 @State 装饰一个 courseList 数组,当从后端获取到课程数据时,只需要更新 courseList,界面就会自动刷新,不用再手动调用 findViewById。

可刚开始,我连 “组件嵌套” 都搞不明白。比如想在课表卡片里加一个 “作业提醒” 的小图标,把 Image 组件放进 Column 里,却发现图标总是跑到卡片外面 —— 后来翻了 3 遍鸿蒙官方文档的「布局容器」章节,才知道 Column 的 width 默认是 “包裹内容”,需要手动设为 “100%” 才能占满父容器。

更头疼的是「资源引用」。我想把学校的教学楼图片放进 “教室导航” 模块,按照教程写了 $r ('app.media.building1'),模拟器却一直报错 “资源未找到”。后来在鸿蒙社区发帖求助,一位叫 “老周” 的开发者回复我:“要先在 main_pages.json 里注册页面,媒体资源要放在 resources/base/media 目录下,文件名不能有大写字母”。按照他的提示修改后,图片终于显示出来的那一刻,我在实验室里差点喊出声。

那段时间,我每天泡在实验室里,模拟器开着,官方文档和社区帖子并排放在屏幕上,遇到 bug 就搜、不懂就问。慢慢地,我发现鸿蒙的声明式语法其实很 “贴心”—— 比如用 Swiper 组件做课表的 “周切换”,只需要几行代码就能实现自动轮播;用 List 组件展示课程列表,自带的下拉刷新和上拉加载,比我之前用 Android 的 RecyclerView 简单多了。

突破:解决 “实时同步” 的核心痛点

我的「智慧课表」APP 有个核心功能:用户修改课表后,其他关联用户(比如同组做实验的同学)能实时看到更新。一开始,我用本地存储来存数据,结果发现同学之间的数据不同步,这个功能成了 “摆设”。

我又开始查资料,发现鸿蒙有「数据管理」模块,支持分布式数据同步 —— 也就是说,只要设备在同一个局域网,数据能自动同步到其他设备。但具体怎么实现呢?我对着文档里的 “分布式数据库” 章节研究了两天,还是没搞懂 “数据表创建” 和 “数据监听” 的逻辑。

转机来自学校的「鸿蒙开发者兴趣小组」。一次小组分享会上,我提到了自己的困惑,组长李学长主动帮我梳理思路:“你不用自己搭服务器,用鸿蒙的 AbilityStage 管理应用生命周期,再结合 DataShare 实现数据共享,就能实现实时同步”。他还帮我调试了关键代码 —— 比如在 CourseProvider 里重写 onChange 方法,当数据变化时触发回调,更新所有关联设备的 UI。

当我和室友同时打开 APP,我修改了一节 “操作系统” 的上课时间,室友的手机上课表自动更新的那一刻,我真的感受到了开发的 “魔力”—— 原来国产框架也能这么强大,这么灵活。

收获:不止是一个 APP,更是一种成长

今年 4 月,我的「智慧课表」APP 不仅完成了课程作业,还意外入围了学校的「科创杯」比赛。在答辩现场,评委老师问我:“为什么选择用鸿蒙开发,而不是更成熟的技术栈?”

我回答:“因为在开发过程中,我感受到了鸿蒙的‘友好’—— 对开发者友好,文档详细、社区活跃;对用户友好,声明式 UI 让界面更流畅,分布式能力解决了实际痛点。更重要的是,作为一名计算机学生,我想为国产操作系统的发展出一点力,哪怕只是一个小小的校园 APP。”

最终,我的 APP 获得了比赛的 “最佳应用潜力奖”。现在,已经有几百名同学在使用这款 APP,还有同学给我提建议:“能不能加一个‘考试倒计时’功能?”“希望能关联校园卡消费记录”。这些反馈,让我更加坚定了继续深耕鸿蒙开发的决心。

回想这段经历,从一开始的 “小白”,到能独立开发一款实用 APP,再到对国产操作系统有了更深的理解,我最大的收获不是获奖,而是明白:开发不只是写代码,更是用技术解决实际问题;而国产框架的发展,也需要我们这样的年轻开发者,敢于尝试,敢于探索。

未来,我想继续完善「智慧课表」,把它打造成更贴合校园场景的鸿蒙应用;也想加入更多鸿蒙开源项目,和其他开发者一起,为国产操作系统的生态建设添砖加瓦。毕竟,属于鸿蒙的故事,才刚刚开始;属于我们年轻开发者的故事,也才刚刚开始。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐