单位转换(ArkTS)开发全流程

一、 开发环境搭建(基础准备)

步骤 1:DAYU200 设备镜像烧录(系统环境部署)

  1. 驱动安装:

    1. 打开「烧录工具」文件包,找到串口驱动目录,双击其中的 exe 可执行文件,按向导完成驱动安装。

    2. 烧录工具启动:

      1. 驱动安装完成后,在烧录工具目录中找到并打开「EKDeyTool.exe」文件。

    3. 镜像文件准备:

      1. 下载最新 OpenHarmony 标准系统镜像文件(3.2 Release 版本),解压到本地;

      2. 建议修改解压后的文件夹名称(尽量简短,避免路径过长导致识别异常)。

    4. 配置文件导入:

      1. 在 EKDeyTool.exe 界面空白处右键,选择「导入配置」;

      2. 选中解压后镜像文件夹中的「config.cfg」文件,点击「打开」完成导入

    5. 路径替换:

      1. 在 EKDeyTool.exe 中,将所有配置项中的文件路径替换为本地镜像文件的实际存储地址,确保全部替换无遗漏。

    6. 设备进入烧录状态:

      1. 将 DAYU200 设备上电;

      2. 按住 step1 按钮等待 1.5 秒,按下 step2 按钮并保持 3 秒后全部松开,设备进入烧录模式。

    7. 执行镜像烧录:

      1. 在 EKDeyTool.exe 界面点击「执行」,开始向 DAYU200 写入镜像文件;

      2. 观察右侧进度框,待进度达到 100% 且 DAYU200 界面亮起,说明烧录完成。

    8. 设备模式配置:

      # 查看 hdc 版本

      hdc -v           # 进入设备 shell 环境

      hdc shell

      # 设置设备模式

      power-shell setmode 602

      1. 按下 Win+R 打开命令行界面,依次执行以下命令(验证设备连接与模式配置):

      2. bash

      3. 运行

      4. 命令执行后显示「success」即为配置成功。

    步骤 2:DevEco Studio 开发环境配置

    1. 工具安装与配置:

      1. 安装 DevEco Studio,参考官方指引完成基础环境配置;

      2. 下载并配置 OpenHarmony SDK API version 20,确保 SDK 路径无中文或特殊字符。

    2. 项目创建:

      1. 进入代码仓库,点击「新建」创建专属项目;

      2. 选择「Empty Ability」模板,填写项目信息(名称、存储路径等),完成工程创建。

    3. API 版本替换:

        修改指定 JSON5 文件,确保本项目工程适配 API 20:

      1. 找到项目中的核心配置文件:

        1. 项目根目录 / build-profile.json5

    4. 验证配置:关闭配置文件后,重新打开确认替换内容无误,无语法错误(JSON5 格式支持注释,注意不要误删注释符号)。

      1. 定位到项目源代码中的 API 引用位置,对照官方文档找到 API version 20对应的新接口;

      2. 复制新接口代码,粘贴覆盖原有旧 API 接口,保存文件并验证无语法错误。

    二、 项目核心功能开发(分步实现)

    步骤 1:项目代码结构梳理(分层设计)

    项目采用「视图 - 数据分离」设计思路,核心代码结构如下(确保文件路径与命名规范):

    ├──entry/src/main/ets // 核心代码区

    │ ├──common

    │ │ ├──constants

    │ │ │ └──Constants.ets // 常量类(页面路径、样式、文本常量) │ │ └──utils

    │ │ └──Logger.ets // 日志工具类(捕获跳转异常等)

    │ ├──entryability

    │ │ └──EntryAbility.ts // 程序入口类

    │ ├──pages

    │ │ ├──ConversionPage.ets // 单位转换页面(电阻/电容/长度切换)

    │ │ ├──IndexPage.ets // 应用主页面(功能入口)

    │ │ └──IntroductionPage.ets // 单位介绍页面(基础知识点展示)

    │ ├──view

    │ │ ├──ConversionItemComponent.ets // 转换项复用组件 │ │ └──IntroduceItemComponent.ets // 介绍项复用组件

    │ └──viewmodel

    │ ├──ConversionItem.ets // 转换项数据结构定义

    │ ├──ConversionViewModel.ets // 转换数据逻辑处理

    │ ├──IntroductionItem.ets // 介绍项数据结构定义

    │ └──IntroductionViewModel.ets // 介绍数据逻辑处理 └──entry/src/main/resources // 资源文件(颜色、尺寸、文本等)

    步骤 2:应用主页面开发(功能入口)

    主页面(IndexPage)通过 Button 组件提供 4 个核心功能入口,实现带参数的路由跳转并处理异常:

    // IndexPage.ets

    核心代码jumpPage(url: string, params: JumpParams) { router.pushUrl({ url: url, params: params }).catch((error: Error) => { Logger.error(Constants.INDEX_PAGE_TAG, `跳转失败:${error.message}`);});}build() {Column({ space: Constants.COLUMN_SPACE }) {// 单位介绍按钮Button($r('app.string.elec_introduce')).onClick(() => this.jumpPage(Constants.INTRODUCTION_PAGE_URL, { conversionType: 'resistance' }))// 电阻转换按钮Button($r('app.string.Res_conversion') || '电阻单位转换').onClick(() => this.jumpPage(Constants.CONVERSION_PAGE_URL, { conversionType: 'resistance' }))// 电容转换按钮(逻辑同上)// 长度转换按钮(逻辑同上)}.backgroundColor($r('app.color.jianbian_background1') || '#F5F7FA').justifyContent(FlexAlign.Center).width(Constants.FULL_PERCENT).height(Constants.FULL_PERCENT)}

    关键说明

    • 通过 params 传递 conversionType 参数,用于目标页面识别展示类型;

    • 增加异常捕获,避免跳转失败导致应用崩溃;

    • 样式通过常量 / 资源引用配置,保证全局样式统一。

    步骤 3:单位介绍页面开发(知识点展示)

    介绍页面(IntroductionPage)通过 List 组件复用自定义组件,展示电阻 / 电容 / 长度的基础知识点:

    
    

    // IntroductionPage.ets

    核心代码build() {Column() {Navigation() {List({ space: Constants.ITEM_PADDING }) {ForEach(IntroductionViewModel.getIntroductionList(), (item: IntroductionItem) => {ListItem() {IntroduceItemComponent({ model: item })}.padding({ left: $r('app.float.item_padding'), right: $r('app.float.item_padding')})})}.width(Constants.FULL_PERCENT).height(Constants.FULL_PERCENT)}.titleMode(NavigationTitleMode.Mini).title(Constants.PIXEL_INTRODUCTION)}.backgroundColor($r('app.color.jianbian_background')).width(Constants.FULL_PERCENT).height(Constants.FULL_PERCENT)}

    关键说明

    • 使用 Navigation 组件提供标题栏,提升交互体验;

    • 基于 ViewModel 分层设计,实现数据与 UI 解耦;

    • 复用 IntroduceItemComponent 组件,保证列表项 UI 一致性。

    步骤 4:单位转换页面开发(核心功能)

    转换页面(ConversionPage)支持三类单位切换,接收路由参数初始化数据,通过按钮组切换展示内容:

    // ConversionPage.ets

    核心代码aboutToAppear() {// 获取路由参数,初始化默认展示类型const params = router.getParams() as RouterParams;if (params?.conversionType) {this.currentType = params.conversionType;}// 更新转换列表数据this.updateConversionList();}// 切换类型时更新列表数据private updateConversionList() {this.conversionList = conversionViewModel.getConversionList(this.currentType);}build() {Column() {Navigation() {// 类型切换按钮组Row({ space: Constants.COLUMN_SPACE }) {ForEach(this.conversionTypes, (item: ConversionTypeOption) => {Button(item.label).backgroundColor(this.currentType === item.value ? '#2F80ED' : '#F5F7FA').onClick(() => {this.currentType = item.value;this.updateConversionList();})})}// 转换列表List({ space: Constants.ITEM_PADDING }) {ForEach(this.conversionList, (item: ConversionItem) => {ListItem() {ConversionItemComponent({ model: item })}})}}.title(this.getCurrentTitle())}}

    关键说明

    • 通过 aboutToAppear 生命周期接收路由参数,初始化页面;

    • 按钮背景色区分选中状态,点击后实时更新列表数据;

    • 复用 ConversionItemComponent 组件,保证转换项 UI 统一。

    三、 功能完整性验证(分步校验)

    步骤 1:页面跳转验证

    • 操作:运行项目,点击主页面 4 个功能按钮,验证是否能正确跳转到对应页面;

    • 验证点:跳转无崩溃、参数传递正确(默认展示类型符合预期)、异常场景(如路径错误)有日志提示;

    • 异常处理:若跳转失败,检查路由路径常量配置、params 参数格式是否正确。

    步骤 2:单位介绍页面验证

    • 操作:进入介绍页面,查看电阻 / 电容 / 长度的列表展示内容;

    • 验证点:列表数据完整、样式统一、无排版错乱;

    • 异常处理:若数据缺失,检查 ViewModel 中 getIntroductionList() 方法的数据逻辑。

    步骤 3:单位转换页面验证

    • 操作:切换「电阻 / 电容 / 长度」按钮,查看转换列表数据变化;

    • 验证点:按钮选中状态区分明显、列表数据随类型切换实时更新、无数据加载异常;

    • 异常处理:若切换无响应,检查 updateConversionList() 方法调用时机、ViewModel 数据逻辑。

    步骤 4:整体功能验证

    • 操作:完整遍历所有功能流程,模拟用户操作场景;

    • 验证点:应用无崩溃、功能无缺失、UI 交互符合鸿蒙设计规范;

    • 异常处理:若出现样式错乱,检查资源文件引用、常量配置是否统一。

    四、 总结

    核心知识点回顾

    1. 掌握 OpenHarmony 设备(DAYU200)的镜像烧录流程,完成底层系统环境搭建;

    2. 学会 ArkTS 中路由(Router)的使用,实现页面间带参数跳转与异常处理;

    3. 理解「视图 - 数据分离」的分层设计思想,基于 ViewModel 实现数据与 UI 解耦;

    4. 掌握 List、Column/Row、Navigation 等基础组件的使用,以及自定义组件的封装复用。

    开发规范总结

    1. 样式与常量通过资源文件 / 常量类统一配置,提升代码可维护性;

    2. 核心功能模块拆分(页面 / 组件 / ViewModel),遵循鸿蒙应用开发最佳实践;

    3. 关键操作增加异常捕获,避免应用崩溃,提升用户体验。

    【仓库地址】:https://atomgit.com/2403_87816892/OHyykf

    参考资料

    华为开发者联盟鸿蒙开发文档:https://developer.harmonyos.com/cn/docs

    ArkTS开发语言规范:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ts-based-syntax-0000001127164111

    Logo

    开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

    更多推荐