HarmonyOS元服务实现今天吃什么

news2024/11/27 23:34:25

一、前言

作为一个职业打工人,每天点外卖吃啥东西都有选择综合症,突发奇想让程序帮我们随机选择一个吃的,是不是可以解决我们的选择问题呢,说干就干,我们就使用HarmonyOS元服务实现一下这个功能。为什么选择这个HarmonyOS元服务呢?主要是因为HarmonyOS元服务(HarmonyOS Foundation Services,简称HMF)是HarmonyOS的核心组件之一,它提供了一系列底层功能和服务,为开发者提供了丰富的功能和工具来构建应用程序。HarmonyOS元服务可以帮助开发者构建跨设备的应用程序,实现设备间的互联互通,并提供丰富的功能和工具,简化开发流程,提升开发效率,这样看来实现我们的需求应该不在话下。

二、环境准备

1.安装最新版DevEco Studio。

安装完成如图所示:

91777f358ac21b1215a363070970bed3.png

2.配置开发环境

这里主要下载Node.js、ohpm和SDK,单击Finish,界面会进入到DevEco Studio欢迎页。

主要注意的是:安装Node.js与ohpm。可以指定本地已安装的Node.js或ohpm(Node.js版本要求为v14.19.1及以上,且低于v17.0.0;对应的npm版本要求为6.14.16及以上)路径位置;如果本地没有合适的版本,可以选择Install按钮,选择下载源和存储路径后,进行在线下载,单击Next进入下一步。

像我们前端开发工程师,本地一般都是安装过Node.js.这个版本不对可以在重新下载合适的版本,不会覆盖。

e92bb060703935d1fd58f46d425156bd.png

比如我这个版本比较高,需要安装一个v14.19.1及以上,且低于v17.0.0版本node.编译器会提示对应的信息。

具体请参考:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/environment_config-0000001052902427-V3

3.配置HDC工具环境变量

HDC是为开发者提供HarmonyOS应用/服务的调试工具,为方便使用HDC工具,请为HDC端口号设置环境变量。

Windows环境变量设置方法:在此电脑 > 属性 > 高级系统设置 > 高级 > 环境变量中,添加HDC端口变量名为:HDC_SERVER_PORT,变量值可设置为任意未被占用的端口,如7035。

0aa4c4215d13e496b8561cff714e8d7a.png

环境变量配置完成后,关闭并重启DevEco Studio。

4.诊断开发环境

DevEco Studio提供了开发环境诊断的功能,帮助您识别开发环境是否完备。您可以在欢迎界面单击Help > Diagnose Development Environment进行诊断。如果您已经打开了工程开发界面,也可以在菜单栏单击Help > Diagnostic Tools > Diagnose Development Environment进行诊断。

ef2bd3852895c91cc1323a5be2dc429d.png

如图所示代表配置环境OK,下面就可以快乐的玩耍了。

三、开发今天吃什么小程序

1.设计思路。

015231d9fa8d8508dd731163c6bd9816.png

简单画个草图需要实现的功能。主要有三个页面,主屏幕需要提供一个114*114的icon。一个过渡页面用于选择使用本地的小程序还是云端的小程序,也可以直接从page1过渡到page3直接选择,page3主要是一个菜品网格列表,可以使用mock数据或者在线菜品列表进行实时更新,这里简单使用mock数据,里面使用400*400的图片代替。点击中间的按钮触发点击事件随机选择一个菜品并进行弹窗提示。

2.图标设置

在项目路径AppScope/app.json5设置应用的名称及基本参数,在项目路径AppScope/resources/base/media/app_icon.png引入一个自己设计的114*114的icon图片。

3ad671eb172d2cedc8a0d102447ca010.png

3.构建过渡页面的entryability和pages。

92b157af34d086c78a6d2aebd6664807.png

4.搭建一个简单的web服务用于page3的页面展示及数据展示。

f128b8a165de738cff443e97082bb805.png

5.定义数据格式及图片,使用js控制点击事件的图片选择并给出提示。

67fb76e22092550d9ec8fbcc4420dd30.png

这个一个完整的应用就开发完了,这个数据和图片可以从网络获取,有兴趣的同学可以在此基础上完善。

四、上架及部署

开发、调试完HarmonyOS应用/元服务,就可以在AppGallery Connect申请上架,华为审核通过后,用户即可在华为应用市场获取您的HarmonyOS应用/元服务。HarmonyOS会通过数字证书与Profile文件等签名信息来保证应用的完整性,需要上架的HarmonyOS应用/元服务都必须通过签名校验,所以上架前,您需要先完成签名操作。

e2413a8e87692c3e32272ef2c78cab90.png

比如我创建一个项目叫“今天吃什么”,不需要勾选华为分析这个指标,这个仅仅是为了跑一边流程。

1.添加应用

2a8607c6af022c00b3647a8f29f6b705.png

2.生成证书及密钥请求文件

bf7bd1a9f7018a5584c5c05c8378c322.png

432ef16af4766d6ee41bb5d36cc641ed.png

CSR文件创建成功后,将在存储路径下获取生成密钥库文件(.p12)和证书请求文件(.csr)。

8d7a081d77895b17a4f8f39a26bd6a2f.png

3.申请发布证书

左侧导航栏选择“证书管理”,进入“证书管理”页面,点击“新增证书”,证书申请成功后,“证书管理”页面展示生成的证书内容。点击“下载”将生成的证书保存至本地。每个帐号最多申请1个发布证书,如果证书已过期或者无需使用,点击“废除”即可删除证书。

7049c4b31e727fc01bfb5c6a2a54b5e8.png

4.申请发布Profile

选择“我的项目”。找到对应项目,点击项目卡片中需要发布的元服务。导航选择“HarmonyOS应用 > HAP Provision Profile管理”,进入“管理HAP Provision Profile”页面,点击“添加”。申请成功,即可在“管理HAP Provision Profile”页面查看Profile信息。点击“下载”,将文件下载到本地。

6f51185622d1f6814fb5750f8e985938.png

5.配置签名信息

我这个是API 9应用/元服务签名界面。

菜单选择“File > Project Structure”,进入“Project Structure”界面。

671d97cf03bcdc038ff0716e4bea6c74.png

6.编译打包

打开DevEco Studio,菜单选择“Build > Build Hap(s)/APP(s) > Build APP(s)”。API 9应用/元服务软件包获取路径:工程目录build > output > default目录。

39caae2e19f91cf317cf53963418c050.png

7.上架HarmonyOS应用/元服务

选择“我的应用”。在应用列表首页中点击“HarmonyOS应用”页签,点击待发布的应用/元服务,在左侧导航栏选择“应用信息”菜单。填写应用的基本信息,如语言,应用名称,应用介绍等,上传应用图标,所有配置完成后点击“保存”。填写版本信息,如发布国家或地区、上传软件包、提交资质材料等,所有配置完成后点击右上角“提交审核”即可。

五、常见项目结构及快捷键调试方法

1.目录结构

54f51271b6490fbaf1c2e7f18748644d.png

2.常用的快捷键及编译器技巧

2.1 shfit+F10运行项目。

2.2 shfit+F9调试。

2.3 一般可以设备管理器中使用本地模拟器或者远程模拟器,这里我觉得开发调试使用远程的模拟器比较快点,本地的还得下载2G多的镜像文件。

2.4 下载编译器可以直接汉化一下。

2.5 出现程序错误一般编译器都有错误提示或者快捷连接提供解决办法,仔细查看日志及文档一般都可以自己解决,如果自己解决不了可以在社区提问。比如下图所示报错就是bundleName值与编译的bundleName值不一样导致的,直接在app.json5配置相同的属性值即可。

b1b878f5661af14e84afc9f10ea6118b.png

六、总结

总体体验下来感觉不是很难,比较适合前端开发的小伙伴,官方的文档比较大而全,对于初学者确实需要一些耐心去阅读。建议新来的小伙伴可以看一下官方的一些教学视频方便入门。初学者需要根据自身的兴趣爱好合理的使用对应领域的编程语言,掌握Deveco studio的环境搭建、快捷键使用技巧、远程及本地调试的方法、文档的查阅、ArkTS语言的使用、组件间传值、页面跳转与布局等相关的知识。HarmonyOS的元服务提供系统级别功能的服务,通过这些服务,应用程序可以获得设备级别的能力和资源。使用HarmonyOS的元服务需要先实例化对应的服务对象,然后通过该对象调用相应的方法。可以通过ElementName类来指定要调用的服务和服务所在的设备。例如,要调用设备的位置服务,可以使用Location服务:Location location = new Location(context, new ElementName("", "system"));一些元服务可能需要特定的权限才能使用。在请求使用元服务之前,应用程序需要在清单文件中声明相应的权限,并在运行时请求用户授权。可以使用AbilityShell的requestPermissions()方法请求权限。元服务的生命周期与应用程序的生命周期相互独立。当应用程序终止时,元服务仍然可以继续运行。因此,在使用元服务时,需要注意适当地管理其生命周期,避免资源浪费和不必要的运行。在使用元服务时,可能会遇到各种错误情况,如服务不可用、无权限访问等。为了保证应用程序的稳定性和可靠性,需要适当处理这些错误情况,并给用户提供相应的错误提示和解决方案。除了系统提供的元服务,开发者还可以通过HarmonyOS的分布式能力框架来实现自定义的元服务。通过扩展元服务,开发者可以实现更丰富的功能和服务,以满足不同应用的需求。总而言之,HarmonyOS的元服务为应用程序提供了与设备级别功能交互的能力,开发者可以根据需求调用相应的元服务,并适当管理其生命周期和处理错误情况,以提高应用程序的性能和用户体验。

参考文档

元服务介绍:https://developer.huawei.com/consumer/cn/harmonyos/fa

ArkTS语言介绍:https://developer.harmonyos.com/cn/develop/arkts/

端云一体化开发介绍:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/agc-harmonyos-clouddev-overview-0000001443209792-V3

低代码开发介绍:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/ide-low-code-overview-0000001480179573-V3

官方视频:https://developer.huawei.com/consumer/cn/training/study-path/101667550095504391

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

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

相关文章

Open X-Embodiment 超大规模开源真实机器人数据集分享

近期,Google旗下的前沿人工智能企业DeepMind汇集了来自 22 种不同机器人类型的数据,创建了 Open X-Embodiment 数据集并开源了出来。该数据集让他们研发的RT-2 机器人在制造和编程方式上有了重大飞跃。 有分析称,在上述数据集上训练的 RT-2-…

每天一点python——day67

#每天一点Python——67 #字符串判断方法:如图: #①判断指定字符串是否为合法标识符 shello,computer print(s.isidentifier()) #输出为False,不是合法标识符,这是因为标识符是由字母,数字,下划线组成&#…

工业数据的“最后一公里”怎么走?

随着工业互联网的迅猛发展,工业数据已经成为推动制造业转型升级的重要动力。然而,面对海量的工业数据,如何高效、准确地走过数据的“最后一公里”,成为制约企业发展的关键问题。本文将探讨工业数据“最后一公里”所面临的挑战&…

15.“百钱百鸡“问题

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码1程序运行代码优化程序运行代码优化进阶 前言 本系列为结构循环编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 二、题目分析 三、解题 程序运行代码1 #include <stdio.h> int main…

ARPG----C++学习记录05 Section10 武器类,IK重定向,装备和捡起武器,动画蓝图

代码更新 11.13 BAOfanTing/ARPG_Game_Code7ab54d2 GitHub 武器类 基于item类&#xff0c;创建一个weapon的C类&#xff0c;基于它创建一个蓝图&#xff0c;刀剑的网格体给它。在蓝图里调动之前在C写好的sin函数添加到世界偏移量里&#xff0c;得到一把悬浮刀 在item把重叠函…

Win10系统把D盘空间分给C盘的方法

在Win10系统中&#xff0c;用户发现C盘的空间太少了&#xff0c;导致电脑运作出现了卡顿的问题&#xff0c;所以想把D盘的空间分给C盘&#xff0c;但不清楚具体的操作步骤。接下来小编给大家介绍两种简单的操作方法&#xff0c;帮助大家轻松将Win10系统D盘的空间分给C盘&#x…

​Unity Vuforia 新手(图片识别)教程,后续整理 实体识别 详细流程

文章目录 前言一、Vuforia是什么&#xff1f;二、Unity导入Vuforia1.去Unity - Windows – Asset Store&#xff0c;搜vuforia engine&#xff0c;添加到我的资源2.打开package Manager&#xff0c;导入到工程中即可3.或者在vuforia engine官网下载的Unity包导入4.检查是否导入…

mysql数据库时间

记录MySQL今天又一个新的问题&#xff1a; 场景&#xff1a;nodejs后台容器部署 问题原因&#xff1a;纯属好心办坏事&#xff0c;由于考虑了时区&#xff08;现在看来纯属多余&#xff09;&#xff0c;在写入时间时使用了time_str.toLocaleString("chinese", { ti…

android studio开发flutter应用,使用mumu模拟器调试软件

安装好mumu模拟器&#xff0c;先打开网易mumu模拟器的开发者模拟。系统应用 > 设置 > 关于手机 > 版本号 多点击几次调出开发者模式&#xff1a; 然后在android studio中刷新设备列表&#xff0c;就能看到新设备了&#xff1a; 如何确定这个设备就是你的mumu模拟器呢…

Cesium:绘制点

作者&#xff1a;CSDN _乐多_ 本文记录了在Cesium中绘制点的函数。 文章目录 data() 里面设置点的样式 pointOption: {show: true,pixelSize: 10,heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,color: Cesium.Color.RED,outlineColor: Cesium.Color.YELLOW,outl…

视频封装格式

FLV&#xff08;Flash Video&#xff09; FLV封装格式 Tag Data分为Audio&#xff0c;Video&#xff0c;Script三种 TS&#xff08;Transport Stream&#xff09;传输流 TS文件分为三层&#xff0c;&#xff08;倒叙更好理解&#xff09; TS层&#xff1a;在PES层基础上加入…

java 旋转方阵

public static void main(String[] args) {Scanner scanner new Scanner(System.in);// N阶方阵int n scanner.nextInt();// 构建方阵List<List<Integer>> matrix new ArrayList<>();for (int i 0; i < n; i) {List<Integer> row new ArrayLis…

RUST与Python对比分析

1 什么是Rust&#xff1f; Rust 是一种系统编程语言&#xff0c;注重安全性&#xff0c;尤其是并发安全性&#xff0c;支持函数式、命令式和泛型编程范式等多范式语言。Rust 在语法上与 C 类似&#xff0c;但设计者希望在保持性能的同时提供更好的内存安全性。Rust 最初是由 Mo…

集团VPN问题排查及核心交换机(思科C9500)路由编写

前言 昨天发现子公司A无法访问子公司B的服务器。已知之前是可以的。经过tracert及ping的简单排查。发现&#xff0c;A没有经过飞塔200F的防火墙出去。 已知集团使用两套防火墙。思科2110以及飞塔200F。并且在上方都做了VPN的配置。200F承接SD-WAN。 我们知道&#xff0c;当A公…

详述使用CubeMX配置STM32RCC时钟

&#x1f64c;秋名山码民的主页 &#x1f602;oi退役选手&#xff0c;Java、大数据、单片机、IoT均有所涉猎&#xff0c;热爱技术&#xff0c;技术无罪 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 获取源码&#xff0c;添加WX 目录 前言一…

帮助中心干货 | 4步即可快速搭建高效帮助中心

任何一个产品有用户涌入使用之后&#xff0c;都会不可避免地面临一个场景问题&#xff1a;如何及时、高效、便捷地解决用户使用过程中的问题&#xff1f; 在使用某些网站的功能或服务时&#xff0c;用户常常会遇到一些看似简单但没有说明依然可能难以理解的问题。如果问题没有…

linux查看端口占用情况

lsof命令 lsof(list open files)命令可以列出当前系统中打开的所有文件&#xff0c;包括网络端口。可以使用lsof命令查看某个端口被哪个进程占用。 具体的命令为&#xff1a;sudo lsof -i :端口号&#xff0c;其中端口号为需要查询的端口号。 netstat命令 使用netstat命令&a…

Vatee万腾的数字化掌舵:Vatee科技引领未来的新高度

随着数字化时代的到来&#xff0c;Vatee万腾以其卓越的科技决策力成为引领潮流的掌舵者。 Vatee万腾通过对科技前沿的不懈探索&#xff0c;站在了数字化创新的最前沿。其领先的科技团队致力于发掘并应用最新的数字技术&#xff0c;为用户提供卓越的数字化体验。 Vatee万腾以其…

运动耳机哪个牌子好性价比高?运动耳机品牌排行榜前十名

​其实&#xff0c;选择运动耳机并不只是看外观&#xff0c;性能也同样重要。在选择时&#xff0c;我们需要考虑几个关键因素&#xff0c;例如稳固性、舒适度和音质等。这些都是运动耳机必备的要求&#xff0c;因为它们能帮助我们在运动时更加专注于锻炼&#xff0c;而不会被耳…

操作系统——死锁(一文详解死锁,死锁产生的原因和死锁的解决方案)

1、什么是死锁&#xff1f;死锁产生的条件&#xff1f; 1.1、什么是死锁&#xff1f; 答&#xff1a; 在两个或者多个并发进程中&#xff0c;如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源&#xff0c;在未改变这种状态之前都不能向前推进&#xff…