HarmonyOS元服务实现今天吃什么
一、前言
作为一个职业打工人,每天点外卖吃啥东西都有选择综合症,突发奇想让程序帮我们随机选择一个吃的,是不是可以解决我们的选择问题呢,说干就干,我们就使用HarmonyOS元服务实现一下这个功能。为什么选择这个HarmonyOS元服务呢?主要是因为HarmonyOS元服务(HarmonyOS Foundation Services,简称HMF)是HarmonyOS的核心组件之一,它提供了一系列底层功能和服务,为开发者提供了丰富的功能和工具来构建应用程序。HarmonyOS元服务可以帮助开发者构建跨设备的应用程序,实现设备间的互联互通,并提供丰富的功能和工具,简化开发流程,提升开发效率,这样看来实现我们的需求应该不在话下。
二、环境准备
1.安装最新版DevEco Studio。
安装完成如图所示:
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.这个版本不对可以在重新下载合适的版本,不会覆盖。
比如我这个版本比较高,需要安装一个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。
环境变量配置完成后,关闭并重启DevEco Studio。
4.诊断开发环境
DevEco Studio提供了开发环境诊断的功能,帮助您识别开发环境是否完备。您可以在欢迎界面单击Help > Diagnose Development Environment进行诊断。如果您已经打开了工程开发界面,也可以在菜单栏单击Help > Diagnostic Tools > Diagnose Development Environment进行诊断。
如图所示代表配置环境OK,下面就可以快乐的玩耍了。
三、开发今天吃什么小程序
1.设计思路。
简单画个草图需要实现的功能。主要有三个页面,主屏幕需要提供一个114*114的icon。一个过渡页面用于选择使用本地的小程序还是云端的小程序,也可以直接从page1过渡到page3直接选择,page3主要是一个菜品网格列表,可以使用mock数据或者在线菜品列表进行实时更新,这里简单使用mock数据,里面使用400*400的图片代替。点击中间的按钮触发点击事件随机选择一个菜品并进行弹窗提示。
2.图标设置
在项目路径AppScope/app.json5设置应用的名称及基本参数,在项目路径AppScope/resources/base/media/app_icon.png引入一个自己设计的114*114的icon图片。
3.构建过渡页面的entryability和pages。
4.搭建一个简单的web服务用于page3的页面展示及数据展示。
5.定义数据格式及图片,使用js控制点击事件的图片选择并给出提示。
这个一个完整的应用就开发完了,这个数据和图片可以从网络获取,有兴趣的同学可以在此基础上完善。
四、上架及部署
开发、调试完HarmonyOS应用/元服务,就可以在AppGallery Connect申请上架,华为审核通过后,用户即可在华为应用市场获取您的HarmonyOS应用/元服务。HarmonyOS会通过数字证书与Profile文件等签名信息来保证应用的完整性,需要上架的HarmonyOS应用/元服务都必须通过签名校验,所以上架前,您需要先完成签名操作。
比如我创建一个项目叫“今天吃什么”,不需要勾选华为分析这个指标,这个仅仅是为了跑一边流程。
1.添加应用
2.生成证书及密钥请求文件
CSR文件创建成功后,将在存储路径下获取生成密钥库文件(.p12)和证书请求文件(.csr)。
3.申请发布证书
左侧导航栏选择“证书管理”,进入“证书管理”页面,点击“新增证书”,证书申请成功后,“证书管理”页面展示生成的证书内容。点击“下载”将生成的证书保存至本地。每个帐号最多申请1个发布证书,如果证书已过期或者无需使用,点击“废除”即可删除证书。
4.申请发布Profile
选择“我的项目”。找到对应项目,点击项目卡片中需要发布的元服务。导航选择“HarmonyOS应用 > HAP Provision Profile管理”,进入“管理HAP Provision Profile”页面,点击“添加”。申请成功,即可在“管理HAP Provision Profile”页面查看Profile信息。点击“下载”,将文件下载到本地。
5.配置签名信息
我这个是API 9应用/元服务签名界面。
菜单选择“File > Project Structure”,进入“Project Structure”界面。
6.编译打包
打开DevEco Studio,菜单选择“Build > Build Hap(s)/APP(s) > Build APP(s)”。API 9应用/元服务软件包获取路径:工程目录build > output > default目录。
7.上架HarmonyOS应用/元服务
选择“我的应用”。在应用列表首页中点击“HarmonyOS应用”页签,点击待发布的应用/元服务,在左侧导航栏选择“应用信息”菜单。填写应用的基本信息,如语言,应用名称,应用介绍等,上传应用图标,所有配置完成后点击“保存”。填写版本信息,如发布国家或地区、上传软件包、提交资质材料等,所有配置完成后点击右上角“提交审核”即可。
五、常见项目结构及快捷键调试方法
1.目录结构
2.常用的快捷键及编译器技巧
2.1 shfit+F10运行项目。
2.2 shfit+F9调试。
2.3 一般可以设备管理器中使用本地模拟器或者远程模拟器,这里我觉得开发调试使用远程的模拟器比较快点,本地的还得下载2G多的镜像文件。
2.4 下载编译器可以直接汉化一下。
2.5 出现程序错误一般编译器都有错误提示或者快捷连接提供解决办法,仔细查看日志及文档一般都可以自己解决,如果自己解决不了可以在社区提问。比如下图所示报错就是bundleName值与编译的bundleName值不一样导致的,直接在app.json5配置相同的属性值即可。
六、总结
总体体验下来感觉不是很难,比较适合前端开发的小伙伴,官方的文档比较大而全,对于初学者确实需要一些耐心去阅读。建议新来的小伙伴可以看一下官方的一些教学视频方便入门。初学者需要根据自身的兴趣爱好合理的使用对应领域的编程语言,掌握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
相关文章:

HarmonyOS元服务实现今天吃什么
一、前言 作为一个职业打工人,每天点外卖吃啥东西都有选择综合症,突发奇想让程序帮我们随机选择一个吃的,是不是可以解决我们的选择问题呢,说干就干,我们就使用HarmonyOS元服务实现一下这个功能。为什么选择这个Harmon…...
激活函数的本质
激活函数(Activation Function) 是神经网络中的一种函数,它接受一个输入(通常是神经元的加权和)并产生一个输出作为神经元的最终输出。激活函数的作用是引入非线性性,使神经网络能够学习复杂的模式和关系。…...

[工业自动化-18]:西门子S7-15xxx编程 - 软件编程 - PLC用于工业领域的嵌入式系统:硬件原理图、指令系统、系统软件架构、开发架构等
目录 前言: 一、PLC的硬件电路原理 1.1 硬件框图 1.2 硬件模块详解 (1)CPU (2)存储器 (3)输入/输出(I/O)模块 (4)编程器 (5&a…...

【C++】——运算符重载
🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL:…...
怎么理解独立机器和虚拟机
独立服务器:顾名思义,就是一个放在机房的实实在在的物理服务器,一个单独的主机(具有性能高,处理速度快等优点,但 也有价格高,可扩展性不强等缺点) vps:虚拟专用服务器,一…...

以太网和局域网
计算机网络的定义 计算机网络是一个将分散的、具有独立功能的计算机,通过通信设备与线路连接起来,由根据协议编写的软件来实现的资源共享和信息传递的系统 计算机网络的分类 广域网是互联网的核心部分 局域网 常见的局域网拓扑结构有4大类:…...
【Git】第三篇:基本操作(配置本地仓库)
初次使用git需要设置你的用户名以及邮箱,这将作为当前机器git的标识,如果你用它来下载远程仓库一些需要登录权限的仓库会要求登录,git默认使用配置邮箱以及用户名登入,但会要求你手动输入密码。 配置本地仓库:git con…...
JS中sort排序
在我们JS排序中,有许多排序的方法,比如冒泡排序、选择排序等等。这次我为大家介绍一下sort排序! sort 按照 Unicode code 位置排序,默认升序 默认情况下,sort()会按照升序重新排序数组,即最小值在前最大值…...

【现场问题】datax中write部分为Oracle的时候插入clolb类型字段,插入的数据为string且长度过场问题
datax的Oraclewriter 报错显示查询报错展示查找datax中的数据插入模块 报错显示 occurred during batching: ORA-01704: string literal too long 查询报错展示 基本上查到的都是这样的,所以锁定是clob的字段类型的问题,而且是只有Oracle出问题&#…...

ASK、PSK、FSK的调制与解调
ASK、PSK、FSK的调制与解调 本文主要涉及数字信号的调制与解调,内容包括:2ASK、2PSK、2FSK的调制与解调以及频谱分析 关于通信原理还有其他文章可参考: 1、信息量、码元、比特、码元速率、信息速率详细解析——实例分析 2、模拟系统的AM信号的…...

基于XML的声明式事务
场景模拟 参考基于注解的声明式事务 修改Spring的配置文件 将Spring配置文件中去掉tx:annotation-driven标签,并添加配置: <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org…...
力扣labuladong一刷day9滑动窗口共4题
力扣labuladong一刷day9滑动窗口共4题 文章目录 力扣labuladong一刷day9滑动窗口共4题一、76. 最小覆盖子串二、567. 字符串的排列三、438. 找到字符串中所有字母异位词四、3. 无重复字符的最长子串 一、76. 最小覆盖子串 题目链接:https://leetcode.cn/problems/m…...

ubuntu开机系统出错且无法恢复。请联系系统管理员。
背景: ubuntu22.04.2命令行,执行自动安装系统推荐显卡驱动命令,字体变大,重启后出现如下图错误,无法进入系统,无法通过CTRLALTF1-F3进入TTY模式。 解决办法: 1.首先要想办法进入系统ÿ…...

Transformer详解一:transformer的由来和先导知识
目录 参考资料前言一、预训练二、神经网络语言模型(NNLM):预测下一个词one-hot编码的缺陷词向量(word embedding) 三、Word2Vec模型:得到词向量CBOWSkip-gramWord2Vec和NNLM的区别Word2Vec的缺陷 四、ELMO模…...

数字化产品经理的金字塔能力模型
在企业数字化转型的浪潮下,要求IT团队更加主动的服务业务、赋能业务,而数字化产品经理正是IT、业务融合的桥梁,该岗位需要具备业务、技术、商业的复合知识结构,并且拥有很强的自驱力。那么数字化产品经理在企业如何产生价值、赋能…...

这 11 个 for 循环优化你得会
日常开发中,经常会遇到一些循环耗时计算的操作,一般也都会采用 for 循环来处理,for 作为编程入门基础,主要是处理重复的计算操作,虽然简单好用,但在写法上也有很多的考究,如果处理不好ÿ…...

JVM字符串常量池StringTable
目录 一、StringTable为什么要调整 二、String的基本特性 三、String的内存分配 四、字符串拼接操作 五、intern()方法 六、Stringtable的垃圾回收 七、G1中String去重操作 一、StringTable为什么要调整 jdk7之前,hotspot对于方法区的实现是永久代ÿ…...
【华为OD题库-010】寻找矿堆的最大价值-Java
题目 给你一个由0(空地)、1(银矿)、2(金矿)组成的的地图,矿堆只能由上下左右相邻的金矿或银矿连接形成。超出地图范围可以认为是空地。 假设银矿价值1,金矿价值2,请你找出地图中最大价值的矿堆并输出该矿堆的价值 输入描述 地图元素信息如: 2…...

在PyTorch中使用CUDA, pytorch与cuda不同版本对应安装指南,查看CUDA版本,安装对应版本pytorch
目录 1 查看本机CUDA版本 2 查看对应CUDA的对应pytorch版本安装 3 用pip 安装 4 用conda安装 5 验证安装 在PyTorch中使用CUDA,根据你的具体环境和需求调整版本号,确保安装的PyTorch版本与你的CUDA版本兼容。 在PyTorch中使用CUDA,你需…...

copilot 产生 python工具函数并生成单元测试
stock.py 这个文件,我只写了注释(的开头),大部分注释内容和函数都是copilot # split a string and extract the environment variable from it # input can be , pathabc, pathabc;pathdef, pathabc;pathdef;pathghi # output i…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...

STM32标准库-ADC数模转换器
文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...