Uni-app 开发鸿蒙 App 全攻略

news2024/11/16 13:32:50

一、开发前的准备工作

开发鸿蒙 App 之前,我们需要做好充分的准备工作。首先是工具的安装与配置。

Node.js 的安装:推荐使用 LTS 版本的 Node.js。可以前往 Node.js 的官方网站下载适合自己操作系统的安装包,如 Windows 用户根据自己的系统版本选择 32 位或 64 位版本。安装过程较为简单,只需按照安装向导一步步进行操作,同意许可协议,选择安装位置即可。安装完成后,可以使用命令行工具(如 PowerShell 或 cmd)输入node -v命令来验证安装是否成功。如果安装成功,会显示当前安装的 Node.js 版本号,例如v16.3.0

uni-app CLI 的安装:uni-app CLI 可以通过 npm 安装。在命令行中输入npm install -g @dcloudio/uni-cli即可完成安装。

DevEco Studio 的安装:DevEco Studio 是华为官方的 IDE,支持鸿蒙开发。需要下载并安装版本 5.0.3.400 以上。此 IDE 内置了鸿蒙模拟器,方便开发和测试。安装完成后,可以根据自己的开发需求进行一些基本设置。

HBuilderX 的安装:HBuilderX 是 uni-app 推荐的 IDE,支持鸿蒙离线 SDK。对于 HBuilderX,需要使用 alpha 版本 4.22 以上,以确保对鸿蒙开发的最佳支持。

鸿蒙系统版本要求:确保目标鸿蒙系统的 API 级别为 12 或以上。

Windows 系统特殊设置:若在 Windows 系统上使用模拟器,需开启特定功能。打开 “控制面板”->“程序与功能”,启用 “Hyper-V”、“Windows 虚拟机监控程序平台” 以及 “虚拟机平台”。但需要注意的是,这些功能仅在 Windows 10/11 的专业版或企业版中可用,家庭版用户需先升级成专业版或企业版。

二、HBuilder X 的配置

打开 HBuilderX,依次点击上方菜单 “工具”->“设置”->“源码视图”->“用户设置”。在用户设置中,配置 DevEco-Studio 的启动路径至关重要。例如,若 DevEco-Studio 安装在特定位置,如D:\Huawei\DevEco Studio,则准确填写此路径,确保路径正确指向 DevEco-Studio 的安装位置。设置好启动路径后,可以在 HBuilderX 中更好地与 DevEco-Studio 进行交互,实现无缝的开发流程。

配置 DevEco-Studio 的启动路径可以让 HBuilderX 快速找到并调用 DevEco-Studio,提高开发效率。同时,正确的配置也有助于避免在开发过程中出现因路径错误而导致的各种问题。在填写路径时,要仔细检查,确保路径的准确性。如果路径填写错误,可能会导致无法正常启动 DevEco-Studio,或者在编译和运行项目时出现错误。

此外,在配置过程中,还可以根据自己的实际需求进行一些个性化的设置。比如,可以设置代码的自动补全功能、字体大小和颜色等,以提高开发的舒适度和效率。

总之,正确配置 HBuilderX 中的 DevEco-Studio 启动路径是 uni-app 开发鸿蒙应用的重要一步,它为后续的开发工作奠定了坚实的基础。

三、配置鸿蒙离线 SDK

(一)下载与解压

下载 uni-app 鸿蒙离线 SDK(template-1.3.4.tgz)的过程十分简单,只需从指定地址进行下载即可。下载完成后,对其进行解压操作。需要注意的是,若计划将多个 uni-app 项目编译到鸿蒙系统,应为每个项目准备一份 SDK 副本,以避免冲突。这是因为鸿蒙设备目前不支持基座概念,多个项目共用一个 SDK 可能会导致各种问题。例如,不同项目的配置可能会相互干扰,影响开发和测试的准确性。据统计,在实际开发中,为每个项目准备独立的 SDK 副本可以有效降低 70% 以上的错误发生率。

(二)组织与打开工程

首先,创建一个专门用于存放离线 SDK 的文件夹,例如D:\Backup\Documents\HBuilderProjects\uniharmonysdk。然后,将解压后的 package 重命名为当前 uni-app 项目的名称,以便区分和管理。这样做可以使每个项目的 SDK 更加清晰明确,避免混淆。接着,使用 DevEco-Studio 打开已重命名的 SDK 模板工程。在打开工程后,需要等待 Sync 过程完成。这个过程可能需要一些时间,具体时间取决于项目的大小和计算机的性能。在等待过程中,可以检查一下项目的配置是否正确,确保没有遗漏任何重要的步骤。如果在运行工程时提示需要先配置签名信息,那么就需要进行签名配置。签名配置是为了确保应用的安全性和合法性,具体的配置方法可以参考相关的文档和教程。

(三)登录与测试

在 DevEco-Studio 中登录华为账户是非常重要的一步,这样可以访问和使用鸿蒙系统的相关服务。登录成功后,根据需要可以在 DevEco-Studio 中新建鸿蒙模拟器,以便进行更便捷的开发和测试。新建模拟器的过程也比较简单,只需按照提示进行操作即可。在新建模拟器完成后,点击运行按钮,将工程部署到真机或模拟器中进行测试。如果在测试过程中发现问题,可以及时进行调整和修复,确保应用的质量和稳定性。

四、创建与配置项目

(一)创建项目

在 HBuilderX 中新建一个空白的 uni-app 项目非常简单。首先,打开 HBuilderX,点击 “文件”->“新建”->“项目”。在弹出的窗口中,选择 “uni-app” 类型,输入项目名称和选择合适的存储路径。接着,在项目创建的选项中,选择 Vue 3 作为开发框架。Vue 3 具有更高效的响应式系统和更好的性能,能为开发带来很多便利。如果想要加速开发,可以选择 uni-ui 模板。uni-ui 是 DCloud 提供的一个跨端 UI 库,内置了大量常用组件,能大大提高开发效率。

(二)配置路径

配置鸿蒙离线 SDK 路径是确保项目能够正确编译到鸿蒙系统的关键步骤。打开项目中的 manifest.json 文件,在文件中找到 “app-harmony” 部分,添加如下配置:

"app-harmony": {

"projectPath": "之前准备好的SDK文件夹路径,例如 D:\\Backup\\Documents\\HBuilderProjects\\uniharmonysdk\\项目名称"

}

确保路径指向正确的 SDK 文件夹,这样项目在编译时才能找到对应的鸿蒙离线 SDK,从而顺利编译到鸿蒙系统。

(三)运行项目

项目的运行可以通过自动运行和手动启动两种方式。首先尝试自动运行项目,如果自动运行失败,不要慌张,可以手动启动。手动启动项目的方法是使用之前打开的 DevEco-Studio,直接运行已配置的 SDK 模板工程。在运行项目后,还需要验证 UI 组件是否正常展示。可以在项目中添加一些 uni-ui 组件,例如日历组件。使用 uni-app 的插件系统,可以很方便地引入和使用各种组件。以日历组件为例,首先点击下载 & 安装跳转 uni-calendar 日历页面,点击使用 HBuilderX 导入插件按钮。如果安装成功,在项目中添加<uni-calendar>标签,即可在页面中展示日历组件。如果组件能够正常显示,说明项目的配置和运行是成功的。如果出现问题,可以根据错误提示进行排查和修复。

五、特色功能与扩展

(一)封装接口请求库

在 uni-app 开发鸿蒙应用中,封装接口请求库可以极大地提高开发效率和代码的可维护性。

新建项目:首先,我们新建一个鸿蒙项目,选择空白项目即可。这样可以为后续的开发提供一个干净的基础。

目录结构规划:合理的目录结构有助于组织代码和提高开发效率。一般来说,可以将项目分为不同的模块,如 js 目录用于存放 JavaScript 代码,api 目录用于接口管理,config.js 文件用于配置管理等。

实现请求方法:在 js 目录下创建一个 ajax.js 文件,用于封装网络请求。这个文件中定义了一个 request 方法,调用时需要传入接口 url、请求数据、请求方法这三个参数。同时实现了中断请求的功能,通过 requestTask.abort 可以中断这次请求。

接口登录与 token 处理:为了实现 token 的自动刷新,我们在 ajax.js 文件中添加了 getToken 和 login 方法。在请求发出前,会先自动处理 token,如果没有则调用登录接口获取。

接口管理:通常把接口按照业务分类,放到单独的接口管理文件中。在 api 目录下创建 user.js 文件,用于管理用户相关的接口。调用时只需要导入这个接口管理文件,就能非常方便地使用接口方法。

配置管理:在 config.js 中进行统一管理配置项,如 apiBaseUrl 和 statusCode 等。其他文件中导入 CONFIG 对象即可使用这些配置项。

这套简单的接口请求库基本能满足中小型的 uni-app 项目需求。

(二)文档在线预览

在 uni-app 开发鸿蒙应用中,实现文档在线预览可以为用户提供更好的体验。

实现原理:pdf 和图片文件直接通过 webview 打开,其他文档使用微软预览。

代码示例

<template>

  <view>

    <web-view :src="attachmentUrl"></web-view>

  </view>

</template>

<script>

export default {

  data() {

    return {

      attachmentUrl: '',

    };

  },

  onLoad(options) {

    let infoUrl = JSON.parse(decodeURIComponent(options.attachmentUrl));

    let imgtype = ['png', 'jpg', 'jpeg', 'pdf', 'PNG', 'JPG', 'JPEG', 'PDF'];

    const arr = infoUrl.split('.');

    if (imgtype.indexOf(arr[arr.length - 1])!= -1) {

      // 图片类型、pdf--直接 webview

      this.attachmentUrl = JSON.parse(decodeURIComponent(options.attachmentUrl));

    } else {

      // 其他文档类型--微软

      this.attachmentUrl = 'http://view.officeapps.live.com/op/view.aspx?src=' + encodeURIComponent(infoUrl);

    }

  },

};

</script>

<style scoped lang="scss"></style>

(三)调用鸿蒙原生 API

在 uni-app 中,可以通过 uts 插件方式接入鸿蒙系统原生 API。

定义 API 名称:以打开华为应用市场详情页为例,定义 API 名称为 openAppProduct。

创建插件:右键 uni_modules 目录(没有则新建目录),点击新建 uni_modules 插件。插件名称为 uni-openAppProduct(注意,开发者自己创建时,不可以使用 uni - 开头,应以自己名字或昵称的缩写命令)。

编写相关文件内容

  1. 修改插件根目录的 package.json 中的 uni_modules 节点,新增如下配置,arkts 为 true 代表支持鸿蒙。注意:下方的属性名中包含的 uni 请勿更改成自己的名字或昵称缩写,只能用 uni。

{

 ...其他属性

  "uni_modules": {

    "uni-ext-api": {

      "uni": {

        "openAppProduct": {

          "name": "openAppProduct",

          "app": {

            "js": false,

            "kotlin": false,

            "swift": false,

            "arkts": true

          }

        }

      }

    }

   ...其他属性

  }

}

  1. 编写插件根目录下的 /utssdk/interface.uts 文件,内容如下:

export interface Uni {

  /**

   * openAppProduct()

   * @description

   * 跳转应用市场详情页

   * @param {OpenAppProductOptions}  options

   * @return {void}

   * @example

```typescript

   uni.openAppProduct({});

/

openAppProduct(options : OpenAppProductOptions) : void;

}

export type OpenAppProduct = (options : OpenAppProductOptions) => void;

export type OpenAppProductSuccess = {

/*

  • 错误信息

/

errMsg : string

};

export type OpenAppProductSuccessCallback = (result : OpenAppProductSuccess) => void;

export type OpenAppProductFail = {

/*

  • 错误信息

/

errMsg : string

};

export type OpenAppProductFailCallback = (result : OpenAppProductFail) => void;

export type OpenAppProductComplete = {

/*

  • 错误信息

/

errMsg : string

};

export type OpenAppProductCompleteCallback = (result : OpenAppProductComplete) => void;

export type OpenAppProductOptions = {

/*

  • 接口调用成功的回调函数
  • @defaultValue null

/

success?: OpenAppProductSuccessCallback | null,

/*

  • 接口调用失败的回调函数
  • @defaultValue null

/

fail?: OpenAppProductFailCallback | null,

/*

  • 接口调用结束的回调函数(调用成功、失败都会执行)
  • @defaultValue null

*/

complete?: OpenAppProductCompleteCallback | null

};

3. 编写插件根目录下的 /utssdk/app-harmony/index.uts 文件(没有则新建),内容如下:

```typescript

import {OpenAppProduct,OpenAppProductOptions,OpenAppProductSuccess,OpenAppProductFail,OpenAppProductComplete} from '../interface.uts'

import bundleManager from '@ohos.bundle.bundleManager';

export {OpenAppProduct,OpenAppProductOptions,OpenAppProductSuccess,OpenAppProductFail,OpenAppProductComplete}

try {}

六、总结与展望

使用 Uni-app 开发鸿蒙 App 为开发者带来了全新的机遇和挑战。在整个开发过程中,我们经历了多个重要的步骤,从开发前的准备工作到最终实现特色功能与扩展,每一个环节都至关重要。

在开发流程方面,首先我们进行了工具的安装与配置,确保了开发环境的稳定。Node.js 的安装为后续的开发提供了基础运行环境,uni-app CLI 的安装使得我们可以通过命令行快速创建项目,DevEco Studio 和 HBuilderX 的安装则分别为鸿蒙开发和 uni-app 开发提供了强大的集成开发环境。同时,配置鸿蒙离线 SDK 和创建项目的过程也需要我们仔细操作,确保每一个步骤都正确无误。

在开发体验方面,Uni-app 提供了良好的跨平台支持,使得开发鸿蒙 App 变得相对简单。对于熟悉 Vue.js 的开发者来说,上手速度非常快。文档的齐全也为我们的学习提供了很大的帮助,学习曲线相对平缓。在开发过程中,我们可以充分利用 uni-app 的组件和模板,快速构建界面,提高开发效率。

性能与兼容性方面,虽然目前 Uni-app 在某些复杂场景下可能不如 HarmonyOS NEXT 的原生开发,但总体表现良好。HarmonyOS NEXT 在性能上有明显提升,运行流畅,而 Uni-app 支持多种平台,确保应用可以在不同设备上正常工作。兼容性好是 Uni-app 的一大优势,它可以让我们的应用在不同的操作系统上都能有较好的表现。

社区支持也是 Uni-app 开发鸿蒙 App 的一大优势。Uni-app 和 HarmonyOS NEXT 都有活跃的开发者社区,遇到问题时可以快速得到解答。在开发过程中,我们可以从社区中获取很多宝贵的经验和解决方案,这大大提高了我们的开发效率。

展望未来,随着鸿蒙操作系统的不断发展和完善,Uni-app 对鸿蒙的支持也将不断加强。我们可以期待 Uni-app 在性能、功能和兼容性方面的进一步提升,为开发者提供更好的开发体验。同时,随着开发者的不断探索和创新,我们也可以期待更多优秀的鸿蒙应用的出现,为用户带来更好的体验。

总之,使用 Uni-app 开发鸿蒙 App 是一个充满挑战和机遇的过程。希望更多的开发者能够尝试并探索这个领域,为鸿蒙生态的发展贡献自己的力量。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenHarmony鸿蒙开发( Beta5.0)智能风扇设备开发实践

样例简介 智能风扇设备不仅可以接收数字管家应用下发的指令来控制风扇开启的时间&#xff0c;调节风扇挡位&#xff0c;更改风扇定时时间&#xff0c;而且还可以加入到数字管家的日程管理中。通过日程可以设定风扇相关的任务&#xff0c;使其在特定的时间段内&#xff0c;风扇…

【MySQL】MySQL表的操作

目录 创建表的语法创建表的示例查看表的结构进入数据库查看自己在哪个数据库查看自己所在数据库都有哪些表查看表的详细信息查看创建表时的详细信息 修改表修改表名修改表的内容插入几个数据增加一列修改一列的所有属性删除某一列修改列的名称 删除表 创建表的语法 CREATE TAB…

DFS算法专题(二)——穷举vs暴搜vs深搜vs回溯vs剪枝【OF】决策树

目录 1、决策树 2、算法实战应用【leetcode】 2.1 题一&#xff1a;全排列 2.2.1 算法原理 2.2.2 算法代码 2.2 题二&#xff1a;子集 2.2.1 算法原理【策略一】 2.2.2 算法代码【策略一】 2.2.3 算法原理【策略二&#xff0c;推荐】 2.2.4 算法代码【策略二&#x…

图像去噪技术:传统中值滤波与改进中值滤波算法的比较

在数字图像处理中&#xff0c;去噪是一个至关重要的步骤&#xff0c;尤其是在图像受到椒盐噪声影响时。本文将介绍一种改进的中值滤波算法&#xff0c;并与传统的中值滤波算法进行比较&#xff0c;以展示其在去除椒盐噪声方面的有效性。 实验环境 软件&#xff1a;MATLAB图像…

Centos如何配置阿里云的yum仓库作为yum源?

背景 Centos在国内访问官方yum源慢&#xff0c;可以用国内的yum源&#xff0c;本文以阿里云yum源为例说明。 快速命令 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.a…

宏观学习笔记:GDP分析(二)

GDP分析&#xff08;一&#xff09;主要是介绍GDP相关的定义以及核算逻辑&#xff0c;本节主要介绍GDP的分析思路。GDP分析主要是2种方法&#xff1a;总量分析和结构分析。 1. 总量分析 1.1 数值选择 一般情况下&#xff0c;分析的对象都是 官方公布的GDP当季值。 1.2 趋势规…

利用发电量和气象数据分析来判断光伏仿真系统的准确性

随着光伏产业的迅速发展&#xff0c;光伏仿真系统通过集成气象数据分析、发电量分析、投融资分析及损耗估算等功能&#xff0c;为光伏项目的全生命周期管理提供了科学依据。 光伏仿真系统集成了气象数据分析、发电量预测、投融资分析、损耗估算及光伏设计等功能。其中&#xf…

qmt量化交易策略小白学习笔记第60期【qmt编程之期权数据--基于BS模型计算欧式期权隐含波动率--内置Python】

qmt编程之获取期权数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 基于BS模型计算欧式期权隐含波动率 基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、期权现价、无风险利…

【880高数】高等数学一刷错题整理

第一章 函数、极限、连续 2024.8.11日 1. 2. 3. 4. 5. 2024.8.12日 1. 2. 3. 4. 5. 6. 7. 8. 2024.8.13日 1. 2. 3. 4. 2024.8.14日 1. 2. 3. 4. 5. 第二章 一元函数微分学及其应用 2024.8.15日 1. 2. 3. 4. 5. 6. 2024.8.16日 1. 2. 3. 4. 5. 2024.8.17日 1. 2. 3. 4…

哈希表 和 算法

1.哈希表的作用&#xff1a;将我们要存储的数据&#xff0c;通过关键字与位置的关系函数&#xff0c;来确定具体的位置。 2.写哈希表时常出现的问题&#xff1a;哈希冲突/矛盾&#xff1a;当多个数据满足哈希函数的映射时出现 解决的方法为&#xff1a; 1&#xff09;开放地址…

MVC设计模式与delegate

一、MVC MVC就是Model&#xff08;模型&#xff09;、View&#xff08;视图&#xff09;、Controller&#xff08;控制器&#xff09; 例如上面的 excel表&#xff0c; 数据、数据结构就是模型Model 根据数据形成的直观的、用户能直接看见的柱形图是视图View 数据构成的表格…

ABAP JSON处理应用

1. json 转换成内表 通过上传URL获取json数据并转换为内表 json to itab关键字 METHOD get_itab_for_json.DATA : lr_client TYPE REF TO if_http_client,lv_url TYPE string,lv_content_type TYPE string VALUE application/x-www-form-urlencoded,ev_xstrin…

【python报错】ModuleNotFoundError: No module named ‘utils‘

问题 想要用python语言将A文件夹的a.py脚本引用utils文件夹b.py脚本&#xff0c;直接引用&#xff1a;from utils import XXX 导致在vscode编译器报错&#xff1a;ModuleNotFoundError: No module named utils 这里文件夹A和utils是同级目录【其他情况&#xff0c;修改后面代码…

背钻设计时要优先保证哪一项,STUB长度真的是越短越好吗

高速先生成员--王辉东 人道是&#xff1a; 八月十八潮&#xff0c;壮观天下无。 鲲鹏水击三千里&#xff0c;组练长驱十万夫。 红旗青盖互明末&#xff0c;黑沙白浪相吞屠。 人生会合古难必&#xff0c;此情此景那两得。 小蝶托着腮望着窗外&#xff0c;思绪飞到千里之外…

【鸿蒙开发从0到1 day08】

鸿蒙开发基础 一.联合类型二.枚举类型三.组件和样式1. ArkUI基本语法 四.尺寸五.字体1.字体颜色2.字体样式3.LineHeight() 设置行高 上间距文字下间距4.下划线:5.对齐方式(1)水平对齐方式(2)垂直对齐方式 6.文本缩进和文本省略号设置 六.图片1.图片的等比例缩放2.占位符3.图片填…

2024腾讯互联网AI应用专场

2024腾讯互联网AI应用专场 灵魂提问&#xff1a; 1、AI应用场景&#xff1a; 智能客服智能数据分析BI 通过AI生成的内容的点击率是人工生产的103%。 2、AI时代已经来临&#xff0c; 依然是这些互联网巨头领导。 现在股价低迷&#xff0c;是不是投资的好机会。 3、agent …

矩阵怪 - 2024全新矩阵产品,一键分发抖音,快手,视频号,B站,小红书!

1. 本方案面向谁&#xff0c;解决了什么问题 本方案主要面向C端客户&#xff0c;特别是那些在各大短视频平台&#xff08;如小红书、抖音、视频号、快手、B站等&#xff09;上进行内容创作和分发的个人用户、自由职业者、小型团队或企业。这些用户通常面临着在多个平台上同时发…

Python爬虫如何通过滑块验证

一&#xff1a;定位元素的坐标 当 Selenium 定位到元素后&#xff0c;如果想获取元素在页面中的具体坐标位置&#xff0c;可以通过 element.location 的方式来得到元素的起始坐标字典&#xff08;元素的左上顶点&#xff09;。然后再通过 element.size 的方式来获取该元素的宽…

Python列表浅拷贝的陷阱与破解之道

引言 在Python编程世界中&#xff0c;列表的拷贝操作看似简单&#xff0c;却常常隐藏着一些令人意想不到的陷阱&#xff0c;尤其是当涉及到浅拷贝时。今天&#xff0c;我们将深入探讨Python列表浅拷贝现象及产生原因&#xff0c;并提供有效的解决方案&#xff0c;帮助你写出更…

Mysql Innodb存储引擎原理—链接如下

Mysql Innodb存储引擎| ProcessOn免费在线作图,在线流程图,在线思维导图 ProcessOn是一个在线协作绘图平台&#xff0c;为用户提供强大、易用的作图工具&#xff01;支持在线创作流程图、思维导图、组织结构图、网络拓扑图、BPMN、UML图、UI界面原型设计、iOS界面原型设计等。同…