拥抱HarmonyOS之高效使用DevEco

embedded/2025/1/12 12:05:55/

拥抱HarmonyOS之高效使用DevEco

前半年对公司的IM SDK进行了鸿蒙化,半年过去系统已经伴随APP上线应用市场,总结一些适配过程中的经验技巧,希望对大家有用。

1.应用AI翻译代码

IM SDK和普通应用的最大差异是逻辑性代码比较多,使用过声明式UI的同学都知道,声明式对于AI很友好,开发效率很高,但是对于逻辑性强的代码就没那么友好,而且IM系统本身有很多逻辑和历史包袱,新的平台的SDK也要兼容这些历史逻辑,有很多新同事对历史逻辑不了解,如果现熟悉的话成本又很高,所以从Android和iOS代码直接翻译成了一个不错的选择,但是手动翻译效率不高,而且还要求同时熟悉Java/OC 和 TS,所以借助AI是个不错的选择。

ArkTS对TS做了很多约束,市面上的大模型基座缺乏这块知识,所以直接翻译成直接可用的代码也不现实,可以按着TS语法翻译,翻译完成后做一些微调适配。下面是我用到的一个prompt:

你是一个编程助手,将我输入的java代码转换为ts代码,保留代码中的注释内容,qingkouwei,注释中创建时间改为现在时间,变量类型默认初始化,定义的实体类中进行默认初始化,JsonUtil.toJson() 改为JsonUtils.toJSONString(),JsonUtil.fromJson改为JsonUtils.parse()

这样翻译过来的很多工具调用直接可以兼容到我们HarmonyOS封装的工具。

2.使用华为官方提供的智能工具

市面上不管是github copilot还是阿里通义等编程助手都没有提供ArkTS支持,不过在HDC之后华为开放了DevEco Studio的AI辅助编程工具,可以通过官方渠道申请使用。目前提供了知识问答,代码生成,万能卡片三个类型的工具,比起我们在官方文档中查找AI可以提效很多了。代码补全方面,目前还不能和github copilot一样,可采用快捷键alt+\手动触发。模型反馈需满足规则:光标上文10行内有有效代码行数超过5行(排除单独{}()[]括号行、空行、纯注释行场景)使模型能理解代码上下文。下面是效果:
在这里插入图片描述

虽然无法跟市面上很成熟的copilot比,但是对于刚入手harmonyos开发的同学也是很不错的工具了。

3. 配置自定义模板

像AndroidStudio等我们想在创建文件时自动生成作者,时间等注释,我们只需要填写这个文件是干什么的。对于DevEco也有类似配置:

  1. 打开DevEco偏好设置的 File and Code Template标签,里面Files和Includes可以进行自定设置
  2. File里面可以通过#parse(“ArkTS Header”)引入Includes中自定义的部分

在这里插入图片描述

使用#parse指令,你可以在文件模板(Files选项卡)中包含要包含的代码片段。一个模板可以被多个文件模板共享。除了静态文本、代码和注释,你还可以使用预定义变量,它们将像宏一样展开为相应的值。

/*  
* ${PACKAGE_NAME} 新文件所在的包的名称  
* ${USER} 当前用户的系统登录名 eg. qingkouwei  
* ${DATE} 当前系统日期 eg. 2024/03/05  
* ${TIME} 当前系统时间 eg. 11:27  
* ${YEAR} 当前年份 eg. 2024  
* ${MONTH} 当前月份 eg. 03
* ${MONTH_NAME_SHORT} 当前月份的前三个字母 eg. 2月  
* ${MONTH_NAME_FULL} 当前月份的全名 eg. 二月  
* ${DAY} 当前日期的天数 eg. 05  
* ${DAY_NAME_SHORT} 当前星期几的前三个字母 eg. 周一  
* ${DAY_NAME_FULL} 当前星期几的全名 eg. 星期一  
* ${HOUR} 当前小时 eg. 11  
* ${MINUTE} 当前分钟 eg. 27  
* ${PROJECT_NAME} 当前项目的名称 eg. im_chat_module  
*/

用模板写东西挺方便的。里面可以放文字、代码、注释,还有一堆现成的变量。用的时候,它们会自动变成对应的内容。

想用自己定义的变量?没问题,格式就像这样${MY_CUSTOM_VAR}。在IDE里新建文件,如果有自定义变量,它会问你它们应该是什么值。

模版示例:

ArkTS 文件模板代码/**  
* ${PROJECT_NAME}  
* ${FILE_NAME}  
* Created by ${USER} on ${DATE}  
*   
*/

在预定义变量列表中配置:

#parse("ArtTS Header")
* ${DATE} 当前系统日期 eg. 2024/06/30
* ${PROJECT_NAME} 当前项目的名称 eg. my_main_module  
* ${USER} 当前用户的系统登录名 eg. qingkouwei  

还可以自定义一些代码块等,但是我们一般用不到,这里不做多介绍。

4.IDE配置中文

DevEco菜单等默认是英文,如果要显示中文需要在插件中配置启用chinese:
在这里插入图片描述

5.总结

本文分享了在HarmonyOS开发过程中,关于老系统适配,AI代码补全工具,模版配置,中文显示等非常有用的技巧,希望对大家有帮助。


http://www.ppmy.cn/embedded/153276.html

相关文章

Excel使用

COUNTA,统计单列或单行中的非空单元格 COUNT: 纯数字COUNTBLANK: 空白 COUNTA(value1, [value2], ...) COUNTA(A1:A10) COUNTA(A1:C5) COUNTA(IF(A1:A10>10, A1:A10)) COUNTA(A:A)某一列的全部 (D1:INDEX(D:D,COUNTA(D:D))计算一列不同词语的不同频率 单独的词每个词的频…

【Linux】4.Linux常见指令以及权限理解(2)

文章目录 3. Linux指令3.1 ls指令和rm指令补充3.2 man指令(重要)3.3cp指令(重要)输出重定向3.3.1ubuntu20.04如何安装tree 3.4 mv指令(重要)mv指令更改文件名mv指令更改目录名 如何看待指令指令的重命名3.5…

maven多模块项目编译一直报Failure to find com.xxx.xxx:xxx-xxx-xxx:pom:1.0-SNAPSHOT in问题

工作中项目上因为多版本迭代,需要对不同迭代版本升级版本号,且因为项目工程本身是多模块结构,且依然多个其他模块工程。 在将工程中子模块的pom.xml中版本号使用变量引用父模块中定义的版本号时,一直报Failure to find com.xxx.x…

Web3 重塑隐私保护:构建数字安全新防线

在数字化日益渗透到我们生活的今天,隐私保护问题愈发显得至关重要。随着个人信息在网络中的流动,如何确保数据的安全,避免被滥用或泄露,成为社会关注的焦点。传统的隐私保护方式虽然取得了一定成效,但随着技术的不断发…

Chapter 4.4:Adding shortcut connections

4 Implementing a GPT model from Scratch To Generate Text 4.4 Adding shortcut connections 接下来,让我们讨论 shortcut connections(快捷连接)背后的概念,也称为 skip connections(跳跃连接)或 resid…

windows及linux 安装 Yarn 4.x 版本

1. 确保系统环境准备 a. 安装 Node.js Yarn 依赖于 Node.js,所以需要先安装 Node.js。前往 Node.js 官网 下载并安装适合你的 Windows 版本的 Node.js(推荐 LTS 版本)。安装完成后,打开命令提示符(CMD)或 PowerShell,验证安装:node -v npm -v如果显示版本号,则表示安…

Pixel 6a手机提示无法连接移动网络,打电话失败!

1、开启VoLTE 2、如果没有,下载shizuku和PixelIMS应用。 shizuke Releases RikkaApps/Shizuku GitHub PixellMS Release v1.2.8 kyujin-cho/pixel-volte-patch GitHub 3、安装shizuke启动,开通root可以直接点击下面的启动,如果没有就…

每日一题(一):识别字符串中的字符是否唯一

目录 一、前言 二、题目 三、题目分析 (一)明确需求 (二)分析思路 四、将思路转变为一个程序 C代码 C代码 注释: 五、总结 一、前言 作为博主在本系列文章中的第一篇文章,博主先对本系列做一个简单的介绍…