拥抱HarmonyOS之高效使用DevEco

拥抱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代码补全工具,模版配置,中文显示等非常有用的技巧,希望对大家有帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/952133.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RT-DETR代码详解(官方pytorch版)——参数配置(1)

前言 RT-DETR虽然是DETR系列,但是它的代码结构和之前的DETR系列代码不一样。 它是通过很多的yaml文件进行参数配置,和之前在train.py的parser argparse.ArgumentParser()去配置所有参数不同,所以刚开始不熟悉代码的时候可能不知道在哪儿修…

Halcon在linux及ARM上的安装及c++工程化

一、HALCON下载 建议到HALCON官方下载页选择linux版本下载,压缩包名为MVTec_HALCON_Progress-18.11.0.1-linux(x64-aarch64-armv7a)-FullVersion.tar.gz。下载前需要登录HALCON帐号,如果没有请自行注册,填写一些基本信息然后激活邮件,操作方便简易。 下载许可证文件 该许…

单通道串口服务器(三格电子)

一、产品介绍 1.1 功能简介 SG-TCP232-110 是一款用来进行串口数据和网口数据转换的设备。解决普通 串口设备在 Internet 上的联网问题。 设备的串口部分提供一个 232 接口和一个 485 接口,两个接口内部连接,同 时只能使用一个口工作。 设 备 的网 口…

Figma如何装中文字体-PingFang苹方字体、Alibaba PuHuiTi阿里普惠

**写在前面: 工具类软件更新迭代如此快的世界,不能靠历史知识来做操作反应。需要着眼于当下工具的形态来思考用法。另外,有人说,当前的用户越来越少发教程类的图文消息了(转去了视频),现在很多…

JVM实战—13.OOM的生产案例

大纲 1.每秒仅上百请求的系统为何会OOM(RPC超时时间设置过长导致QPS翻几倍) 2.Jetty服务器的NIO机制如何导致堆外内存溢出(S区太小 禁NIO的显式GC) 3.一次微服务架构下的RPC调用引发的OOM故障排查实践(MAT案例) 4.一次没有WHERE条件的SQL语句引发的OOM问题排查实践(使用MA…

Photoshop PS批处理操作教程(批量修改图片尺寸、参数等)

前言 ‌Photoshop批处理的主要作用‌是通过自动化处理一系列相似的操作来同时应用于多张图片,从而节省时间和精力,提高工作效率。批处理功能特别适用于需要批量处理的任务,如图像尺寸调整、颜色校正、水印添加等‌。 操作步骤 1.创建动作 …

【物联网原理与运用】知识点总结(上)

目录 名词解释汇总 第一章 物联网概述 1.1物联网的基本概念及演进 1.2 物联网的内涵 1.3 物联网的特性——泛在性 1.4 物联网的基本特征与属性(五大功能域) 1.5 物联网的体系结构 1.6 物联网的关键技术 1.7 物联网的应用领域 第二章 感知与识别技术 2.1 …

新车月交付突破2万辆!小鹏汽车“激活”智驾之困待解

首次突破月交付2万辆规模的小鹏汽车,稳吗? 本周,高工智能汽车研究院发布的最新监测数据显示,2024年11月,小鹏汽车在国内市场(不含出口)交付量(上险口径,下同&#xff09…

基于Springboot+Vue的仓库管理系统

开发一个基于Spring Boot和Vue的仓库管理系统涉及到前端和后端的开发。本文呢,给出一个简单的开发步骤指南,用于指导初入的新手小白如何开始构建这样一个系统,如果**你想直接学习全部内容,可以直接拉到文末哦。** 开始之前呢给小…

java项目之ONLY在线商城系统设计与实现源码(springboot+vue+mysql)

大家好我是风歌,曾担任某大厂java架构师,如今专注java毕设领域。今天要和大家聊的是一款基于springboot的ONLY在线商城系统设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: ONLY在线商城系统设计与实…

java后端对接飞书登陆

java后端对接飞书登陆 项目要求对接第三方登陆,飞书登陆,次笔记仅针对java后端,在看本笔记前,默认已在飞书开发方已建立了应用,并获取到了appid和appsecret。后端要做的其实很简单,基本都是前端做的&…

【2025最新计算机毕业设计】基于SpringBoot+Vue奶茶点单系统(高质量源码,提供文档,免费部署到本地)

作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

import语句详解

在 Java 中,import 语句用于引入其他包中的类、接口或静态成员,以便在当前源文件中直接使用它们,而不需要写完整的类名(包括包名)。以下是 import 语句的详细解释和使用方法: 一、import语句的基本概念 定…

android刷机

android ota和img包下载地址: https://developers.google.com/android/images?hlzh-cn android启动过程 线刷 格式:ota格式 模式:recovery 优点:方便、简单,刷机方法通用,不会破坏手机底层数据&#xff0…

Wi-Fi Direct (P2P)原理及功能介绍

目录 Wi-Fi Direct (P2P)介绍Wi-Fi Direct P2P 概述P2P-GO(P2P Group Owner)工作流程 wifi-Direct使用windows11 wifi-directOpenwrtwifi的concurrent mode Linux环境下的配置工具必联wifi芯片P2P支持REF Wi-Fi Direct &#xff…

scrapy爬取图片

scrapy 爬取图片 环境准备 python3.10scrapy pillowpycharm 简要介绍scrapy Scrapy 是一个开源的 Python 爬虫框架,专为爬取网页数据和进行 Web 抓取而设计。它的主要特点包括: 高效的抓取性能:Scrapy 采用了异步机制,能够高效…

python学opencv|读取图像(二十八)使用cv2.warpAffine()函数平移图像

【1】引言 前序已经对图像操作进行了广泛的学习,包括读取、放大缩小,改变BGR通道值等,相关链接包括且不限于: python学opencv|读取图像-CSDN博客 python学opencv|读取图像(三)放大和缩小图像_python(1)使…

【数据库】四、数据库管理与维护

文章目录 四、数据库管理与维护1 安全性管理2 事务概述3 并发控制4 备份与恢复管理 四、数据库管理与维护 1 安全性管理 安全性管理是指保护数据库,以避免非法用户进行窃取数据、篡改数据、删除数据和破坏数据库结构等操作 三个级别认证: 服务器级别…

如何定位导致 Django 错误的文件

在 Django 开发中,当发生错误时,定位问题所在的文件和代码行是调试的重要步骤。以下是一些常用的方法和技巧来定位导致 Django 错误的文件: 1、问题背景 在项目中使用了 shrink 工具尝试运行 collect static 时,出现 TemplateSyn…

JavaSE——网络编程

一、InetAddress类 InetAddress是Java中用于封装IP地址的类。 获取本机的InetAddress对象: InetAddress localHost InetAddress.getLocalHost();根据指定的主机名获取InetAddress对象(比如说域名) InetAddress host InetAddress.getByNa…