华为投入数亿元搞应用激励和创新赛,鸿蒙应用开发是否更容易?

B站影视 内地电影 2025-09-10 12:38 1

摘要:从作者个人最近二十年的开发经验看,多数的IDE开发工具都选择通用性优先的原则,需要通过后期插件和复杂的配置(库配置、SDK or API配置)等等来适配特定的目标应用平台。这种开发工具流行的后果,还是在于客观上将代码开发能力和对于具体平台下的业务熟悉能力,人为

从作者个人最近二十年的开发经验看,多数的IDE开发工具都选择通用性优先的原则,需要通过后期插件和复杂的配置(库配置、SDK or API配置)等等来适配特定的目标应用平台。这种开发工具流行的后果,还是在于客观上将代码开发能力和对于具体平台下的业务熟悉能力,人为割裂开了,开发类工作的门槛也因此而变得较高,而变得不甚普及。

反之,如果真能从操作系统出发,从SDK出发,从细致、易懂的开发框架出发,再将这些能力直接集成到IDE开发工具中去,这种ToptoDown的方法就可以塑造“原生一体”的开发环境、工具和能力普及。狭义的开发门槛会拉低,但广义的开发能力会普及,懂业务流程、懂服务逻辑甚至更懂生活的创造者就会一步步成长为开发者,从而就会创造出更多、更有影响力的应用。

DevEco Studio和HarmonyOS /SDK的耦合度还是非常高的,这符合之上谈到的技术风格。高耦合度的IDE对于平台的每一个能力细节都有与生俱来的理解力,这意味着在IDE工具内部署智能辅助服务、模拟能力都会有更好的出发点和精准度,这种将平台复杂性“内化”于工具之中的设计,就可以让开发者能更专注于业务逻辑本身。

第一部分:智能辅助高效开发

对于攻城狮老兵来说,Coding的智能化好像就在这几年突然就已经不再是技术远景,而是一跃成为重塑生产力的核心力量了。不管你主观上愿意不愿意,大语言模型(/LLM)将编码(/Coding)作为其能力演进的关键方向,在我们每个从业人员的工作台上已经(注意是“已经”)催生了范式级别的变革。

将顶级大语言模型注入集成开发环境(IDE),所谓AI编程副驾(AI Copilot)成为现代软件工程的标配。然而,这种LLM带来的“广谱性”的智能能力在面对特定、新兴且拥有独特设计体系的生态系统时,也有暴露其局限性的可能—通用模型生成的代码可能在语法上无懈可击,但在架构设计、性能优化和平台特性调用上,却经常性展现出“知其然,而不知其所以然”,缺乏“领域感”和“最佳实践”的深度考量,而正是这些特质对于我们这些工作在具体平台上的攻城狮,往往是所最在意的。

华为鸿蒙开发平台DevEco的智能辅助工具CodeGenie的出现,代表一种更为聚焦的AI辅助编程策略。(其实,和开发平台紧耦合的智能辅助工具,通过端到端的设计往往是最佳工具解决方案。仅从原理上看,这就是必然的和显然的。)

1 CodeGenie_智能问答

图表 1 CodeGenie的智能问答UI截图

在上图的案例中,显示出用户使用CodeGenie的智能问答功能,同时对于EntryAbility.ets文件整体和Index.ets文件中的Build方法(其中的line7-21),进行集成分析的请求。上图右侧的箭头显示了用户的具体请求。而在左侧DevEco代码区域(顶部箭头所指之处)则显示了两个文件的存在。表面上看,EntryAbility.ets,一个标准的鸿蒙应用管理生命周期的后台文件和装载页面文件Index.ets中的build方法(页面中一个描述UI外观的函数)似乎没什么联系。但一个开发者为何会把这两端代码联系并圈起来,然后问AI“请分析”呢?

他最大的困惑可能是,“这两个在多数鸿蒙应用中都普遍存在的关键文件,其构造的代码世界是如何连接起来协同工作的呢?从抽象的EntryAbility.ets文件中的那一行windowStage.loadContent("pages/Index",...) 代码(上图页面中并未显示出来),到具象的页面文件Index.ets的build方法被执行,最终在用户屏幕上画出那个‘Hello World’,这中间到底发生了什么呢?”揭示这个完整的、端到端的代码逻辑旅程和其背后的原理,可能就是开发者(尤其初级开发者,或者正在绞尽脑汁阅读、整理他人遗留代码的开发者)最有可能的动机,也会是经常出现在攻城狮们日常工作中的业务场景。

图表 2 CodeGenie的智能问答答案截图

上图给出了CodeGenie的基础答复, “综合来看,EntryAbility的代码结构正确,复合鸿蒙UIAbility的生命周期管理规范。IndexPage页面的布局和事件处理也没有明显的问题。但需要注意项目的依赖配置,尤其是网页4(指外部来源参考)所提到的打包错误,可能需要检查模块依赖是否得到了正确声明……”

篇幅所限,其实这个案例未展示出的后续还有,用户追问到了“ArkTS如何实现多线程”的问题,如上图左侧的箭头所指的代码功能:

Build中的事件处理:.onClick( => { this.message = 'Welcome'; }) //为文本添加对于点击事件进行响应的监听器。

用户的意图应该是:在build中的.onClick修改message的状态当前条件下属于同步操作。但如果用户计划添加更复杂任务类型(例如网络请求网络侧资源或需复杂计算才能获取的资源),则需担心UI阻塞或迟滞效应。entryability.ets 的生命周期方法(如 onWindowStageCreate)提供了加载和调度上下文,但用户可能更想了解如何将 build的交互逻辑与entryability.ets所提供的后台任务结合。这其中的合理性在于:onClick的简单状态更新('Hello World'到'Welcome')仅仅是基础功能,如果要扩展到耗时操作,则必须要考虑多线程支持(如TaskPool),这就涉及entryability.ets的初始化逻辑了。

当然,笔者还没有尝试过更复杂的和更多关联关系的复合型提问,和追问,但就CodeGenie智能问答功能在当前我能观察到的表现,呈现出其分析结果逻辑性强,较为贴合用户提问意图(如性能、调试、架构),而且显然是针对鸿蒙做了优化。这就是我们之前提到的,CodeGenie一定得益于DeepSeek的模式匹配和Pangu engine的 HarmonyOS经验进行了较为长期的训练和上下文优化。

2 CodeGenie_代码生成

图表 3 CodeGenie的代码生成结果截图

这个关于“代码生成”功能案例,具体需求是,“使用ArkTS语言写一段代码,在页面中间部分插入Swiper组件,其中有3个Image组件,其图片资源名分别为app.media.phone,app.media.watch,app.media.glasses。这些Image组件的宽度撑满父布局,高度为600,图片缩放类型为保持图片宽高比不变,将图片完全显示在边界内。 Swiper组件设置为自动播放,播放时间间隔为2秒。”

因需求描述很清楚,且案例中的功能集中在给Index.ets页面增加可视组件,相对单一。具体的生成代码结果,目视检查也没问题,不展开了。一个不可忽视的事实是,类似的“代码生成”需求可能会在攻城狮们的日常工作中占比越来越高。因为CodeGenie如果可以持续以一个高置信度提供“平均质量”水准以上的代码,那么使用者的信心和工作效率就会因此而越来越高。

CodeGenie还可以提供另一种代码生成能力,如下图所示的Inline Edit功能:

图表 4CodeGenie的Inline Edit代码生成功能截图

上图中展示了在Index.ets文件中(和前例代码相同),采用Inline Edit功能生成代码的实际状态:当开发者选中了原有的

.onClick( => { this.message = 'Welcome'; })

代码块,然后在弹出的对话框中输入自然语言描述的“生成一个点击事件”时,他真实的、深层的意图应该是:

“CodeGenie,请看我选中的这段代码。我不想要它现在这个实现(改变message状态)了。请你帮我把它替换成一个全新的、最基础、最标准的‘点击事件’的实现方式,并给我一个样板。”

console.log的作用,是在一个只有开发者自己能看到的“控制台(Console)”窗口中,打印出一条信息。它的输出对最终用户是完全不可见的;它的核心价值在于“确认”。

所以CodeGenie在更新onClick方法时,选择了console.log就比较容易理解了,因为这是一个最安全的实现,也是比较通用的样板,还符合了所谓“指令”的最小化实现。如果开发者用户对这个响应不满意,那就应该选择手动Reject之后接着细化自己的自然语言表达方式和精度,直到满意和Accept。

总的来说,这是效率更高的代码生成方式。标志着人机交互模式的转变——开发者从被动地接受建议、记忆语法规则,变为了主动地、用自然语言向AI下达指令、并学会检查语法规则,从而实现效率和代码技巧同步提升。而这一切都紧密地发生在DevEco的代码编辑窗口内,不容易脱离开发者的思考过程,不仅适合高手,也非常适合系统的初学者和正在爬坡的进阶者。

3 CodeGenie_代码续写

利用AI大模型分析并理解开发者在代码编辑区的上下文信息或自然语言描述信息,智能生成符合上下文的ArkTS代码片段。在这个工具中,CodeGenie明确提出了使用约束:建议在编辑区内已有较丰富上下文,能够使模型对编程场景有一定理解的情况下进行代码生成。在编辑器中的内容较少时,AI可能无法有效理解用户的意图并生成相应的代码。

图表 5 CodeGenie的代码续写功能截图

上图所给出的案例中,涉及的文件是EntryAbility.ets。EntryAbility.ets在这个样本代码工程中,除了比较典型的(本案例)应用生命周期管理和UI调度这两个核心角色外,还承担着日志追踪(请关注上图中的hilog函数)、错误处理(请关注上图中的函数err)、资源回收(请关注上图中的onWindowsStageDestroy函数)类似这些“幕后”的工程职责。这些相对复杂的功能组合,让CodeGenie的代码续写功能,可以比较恰当地展示(双引擎)AI能力是如何通过深度理解这些上下文和模式,来赋能开发者,提升编码效率的。

上图中高亮部分展示的(黄色箭头所指),就是CodeGenie的代码续写能力,有些平台上的类似功能被称为“行内建议” (Inline Suggestion)。当开发者在onBackground函数体内敲下回车,准备写新的一行时,这个行为就触发了CodeGenie的续写功能。它“知道”你现在需要帮助……其工作机理,可在以下几个层面上展开讨论:

■ 从语法上下文的角度:“现在的思考断点正处于一个名为onBackground的函数体内部,这个函数没有返回值(void)。”;

■ 从文件内模式上下文的角度:经过向上扫描了整个EntryAbility.ets文件(这是为什么我们之前提到代码续写功能对已有代码数量有最低要求的原因),发现在onCreate、onWindowStageCreate、onWindowStageDestroy、onForeground等几乎所有其他的生命周期函数里,都有一行hilog.info(...)作为日志记录。它学习到了开发者在这个文件中的编码模式(Coding Pattern);

■ 从知识库上下文的角度:在盘古和DeepSeek的海量训练数据中,它们必然已经学习了大量的HarmonyOS应用的onBackground函数。它肯定知道,在这个函数里最常见的操作TOP-1就是——打印日志,以方便后续的调试。

综合了以上所思考和罗列出的上下文,CodeGenie进行了一次高概率预测。结论几乎是唯一的:实操的开发者在这个语境下,99%的可能性是想写一行和上面格式完全一样的日志。于是,它建议并生成了这行灰色的“幽灵文本”:hilog.info(DOMAIN, testTag, '%{public}s', 'Ability onBackground')——参考上图中的黄色箭头所指。请注意它的智能之处:它不仅生成了hilog.info,其他关于参数细节DOMAIN、testTag,格式化字符串'%{public}s',以及最能描述当前上下文的日志内容'Ability onBackground'都准确地生成了。

此时作为开发者,当你看到这个建议完全符合你的意图,只需按一下Tab键,这行代码就会“实体化”后,进入你的代码中。工具的核心意图还是最大程度地减少开发者的重复劳动,并基于上下文的观测和预测,来揣测开发者的编程意图,从而实现最大程度降低干扰开发者思考流被打断的几率。个别一两个例子可能无法充分展示出类似功能的真正作用,只有亲自上手去用、大规模使用,会体验到其中的效率提升的。

第二部分:全场景模拟器的支持

在数字化开发工作中,合理划分虚拟和真实之间的边界界限,可以大幅度提升生产效率。不论多复杂多精巧的代码,其最终目标都是为现实世界中的某种功能或者任务提供服务。所谓的 “模拟器”机制,就是一个典型的界限调节器。模拟器的功能强大且完备,就能在很大程度上提前将复杂世界里的运行条件和环境搬入虚拟世界,从而让我们的代码能够尽早进入初步的仿真测试和调试阶段,也就能更早地发现问题解决问题。

这正是模拟器存在的意义。

1 DevEco Studio的全场景模拟器调试能力

DevEco Studio的模拟器最显著的优势之一,就是其全面的全场景设备模拟能力。这意味着开发者无需购买昂贵且品类繁多的物理设备,即可在一个统一的开发环境中,高效地模拟和调试应用在鸿蒙生态下各类设备上的运行情况。

图表 6 模拟器设备模板界面的种类丰富

如上图,模拟器不仅仅局限于手机,通过预置模板和自定义参数(如分辨率、屏幕对角线长度和像素密度)的能力,可以虚拟出包括平板(如MatePad系列)、折叠屏、智能穿戴、智慧屏,甚至车机在内的多种HarmonyOS设备形态。

除了屏幕UI模拟以外,模拟器还提供高保真硬件级别的能力模拟,这就有点意思了。例如对于部分物理操作模拟:如屏幕旋转、音量调节,甚至“摇一摇”这种特定的体感操作;再比如对于传感器数据的模拟:可模拟计步器、环境光、温度、湿度等多种传感器的数据变化。开发者可以通过拖动滑块实时改变传感器的值,来测试应用在不同环境下的响应,例如测试运动健康类应用在不同步数下的表现,或测试智能家居应用在不同温湿度下的场景联动。对于环境状态模拟:开发者可以精细地控制模拟器的电池电量和充电状态(充电中、未充电、已充满),以及模拟GPS地理位置等,这对于测试应用的功耗管理策略,或LBS(基于位置的服务)应用的准确性至关重要。

2 DevEco Studio的多屏模拟能力

DevEco的多屏模拟是另一项相关的功能,其设计核心是在调试阶段提供“一次开发,多端部署”的能力。开发者可以在一个正在运行的模拟器实例上,动态添加多个不同规格的“副屏”。这些副屏可以基于预设的设备型号(如Mate系列、Pura系列、MatePad系列),也可以完全自定义其分辨率(Width/Height)、像素密度(DPI)和屏幕尺寸。如下图:

图表 7 模拟器提供多屏模拟能力

在如此能力体系下,当开发者修改UI代码并热重载后,就可以在一次编译后同时在主屏和所有添加的副屏上看到UI的实时变化。开发者可以立即直观地判断其UI布局在不同设备上的自适应效果是否符合预期,极大地提升了UI适配的调试效率。推测多屏功能是基于同一个系统镜像创建的,这意味着你无需为每个要测试的设备单独启动一个完整的模拟器实例,从而节省了大量的系统资源和启动时间。

█ 第三部分:小结

转了一圈,再回到起点。经过对于实例讨论、对比其他主流coding工具的能力和对DevEco平台工具的完整体验,大概能感受到以下关于鸿蒙开发的基调:

其一是,更低的开发准入门槛:ArkTS作为TypeScript的超集,结合声明式的 ArkUI 语法,让主流的前端和Web开发者还是比较易于上手的,你不太会有特别的技术陌生感。DevEco Studio内置的CodeGenie AI助手通过上下文感知和代码续写等工具,还能进一步降低学习成本,而全场景模拟器免除硬件依赖,可助力个人和小团队快速入门;

其二是,更高的开发效率:CodeGenie 的智能预测和自动生成加速编码,使开发者专注于业务逻辑,一旦进入思考模式则不容易轻易脱戏。一次阶段性开发的代码通过ArkUI的多屏模拟实现多端适配,模块化HAP/HSP架构则支持复用和快速迭代,显著缩短开发周期;

最后是,更丰富的生态资源:官方提供详尽文档、和开源 OpenHarmony代码,辅以活跃的全球社区支持。我个人的体验也是这样,你隔一段时间去核查http://developer.huawei.com站点,你都会发现资料在快速增加,而且很多更新的时间节点就在最近几天。另外不能忘记云端的HMS Core套件为地图、推送、支付等功能提供成熟解决方案,极大缩短产品上市时间,让开发者仿佛站在巨人的肩膀上获取更好的视野。

第四部分:关于HarmonyOS创新赛

文章最后多啰嗦一句,从赛题公示的内容看,我个人觉得还是很有意义的竞赛活动。2025年度的HarmonyOS创新赛:

感兴趣的读者请关注,1、报名/提交作品开始2025年6月21日; 2、报名/提交作品截止日期2025年9月30日、结果公布及颁奖2025年10月底。

图表 9 华为2025 HarmonyOS创新赛

来源:鲜枣课堂一点号

相关推荐