HarmonyOS NEXT开发进阶(一):初识 HarmonyOS NEXT开发

文章目录

    • 一、前言
    • 二、HarmonyOS NEXT 开发框架
    • 三、HarmonyOS NEXT开发指导
      • 3.1 Windows环境准备
    • 四、项目拆解
      • 4.1 工程目录
      • 4.2 全局配置
        • 4.2.1 APP全局配置: AppScope层(AppScope/app.json5)
        • 4.2.3 签名全局配置
      • 4.3 APP代码初始化
      • 4.4 APP签名文件配置
      • 4.5 证书申请
        • 4.5.2.1 创建.p12文件
        • 4.5.2.2 申请证书及Profile
        • 4.5.2.3 注册调试设备
        • 4.5.2.4 申请调试Profile
        • 4.5.2.5申请发布证书及Profile
      • 4.5.3 证书签名使用
    • 五、参考资料

在这里插入图片描述

一、前言

2024年10月22日19:00,华为在深圳举办“原生鸿蒙之夜暨华为全场景新品发布会”,主题为“星河璀璨,共见鸿蒙”。本次活动上,华为正式发布“纯血鸿蒙”系统HarmonyOS 5.0(即HarmonyOS NEXT),据华为常务董事、终端BG董事长余承东透露,该系统是鸿蒙来诞生以来的最大一次升级。

值得注意的是,HarmonyOS 5.0是我国首个国产移动操作系统,也是继苹果iOS和安卓系统后,全球第三大移动操作系统。

在这里插入图片描述
华为鸿蒙操作系统最早于2019年发布,2021年正式搭载到智能手机上。随着系统的不断升级和更新,2023年9月,华为宣布全面启动鸿蒙原生应用,即完全使用自主“内核”,在开发过程中不再依赖其他操作系统的开放源代码。

今年7月1日,中国信息通信研究院认证华为鸿蒙内核自主研发比率100%,自主成熟度A级。这意味着,华为鸿蒙操作系统正式成为完全“国产”的基础软件,因此有了“纯血鸿蒙”的称号。

10月8日,HarmonyOS NEXT正式开启公测,首批公测机型包括HUAWEI Mate X5系列、HUAWEI MatePad Pro 13.2英寸系列、HUAWEI Mate 60系列。此外,微博、WPS、钉钉等众多应用也同步开启了鸿蒙版公测。

10月22日,华为宣布,纯血鸿蒙将开启华为Pura 70系列,华为Pocket 2系列和华为MatePad Pro 11英寸 2024款三款设备公测。华为Mate XT非凡大师、nova flip、nova13系列等更多设备将陆续在2025年加入公测。

在这里插入图片描述

二、HarmonyOS NEXT 开发框架

HarmonyOS NEXT 开发框架如下:
在这里插入图片描述
其中,

DevEco Studio 是基于 IntelliJ IDEA Community 开源版本打造,所以默认的快捷键其实继承于 IntelliJ IDEA 。 作者:黑马pink讲前端 https://www.bilibili.com/read/cv28430733/ 出处:bilibili

三、HarmonyOS NEXT开发指导

鸿蒙应用开发技术栈:

  • 开发语言:ArkTS(封装TS)
  • UI框架:ArkUI

3.1 Windows环境准备

  1. 下载并安装官网提供的Deveco Studio IDE

注⚠️:因IDE占用空间较大,安装过程中应选择剩余磁盘空间大的物理盘符进行安装。

  1. 私服配置
    2.1 打开Deveco Studio—>打开设置,搜索ohpm:
    在这里插入图片描述

2.2 点击 “Optimize config”:

在这里插入图片描述

2.3 选中ohpm registry,请将产品所依赖的私服输入到ohpm registry中,对于产品依赖多个私服,每个私服使用“,”隔开:

在这里插入图片描述

2.4 点击“ok”即可,可通过查看.ohpmrc文件是否配置成功,如下所示:

在这里插入图片描述

四、项目拆解

4.1 工程目录

鸿蒙项目模板工程目录结构如下:

在这里插入图片描述

4.2 全局配置

4.2.1 APP全局配置: AppScope层(AppScope/app.json5)

AppScope层用于配置全局信息。 app的图标需放于该层的resources中,该层的资源只放置图标信息。

其他相关配置如下:

{
  "app": {
    "bundleName": "com.boc.panda.demo",  //Bundle名称
    "vendor": "example", //应用包供应商
    "versionCode": 1000000, //应用版本号
    "versionName": "1.0.0", //应用版本文本描述信息
    "icon": "$media:app_icon", //应用图标
    "label": "$string:app_name" //应用名称
  }
}
4.2.3 签名全局配置

全局build-profile.json5文件中包含签名,productmodules等配置。

开发者需在此配置生产签名和测试签名。

products标签也需根据不同产物进行配置。此处注意,若开发者引入了集成态hsp包,由于它使用了标准化的OHMUrl格式,设置配置项useNormalizedOHMUrltrue

4.3 APP代码初始化

app/src/main/ets/entryability/EntryAbility进行框架模块初始化。

async onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): Promise<void> {
  await StorageServiceManager.register(this.context)//切换环境模块使用存储模块,该模块需注册,若不需要则可删除
  const productName = PRODUCT_NAME as string
  const debug = productName !== "product"
  //初始化框架
  BundlePlatform.init(
    new BundleConfig(this.context)
      .setDefaultScheme("ACMWE")
      .setDebug(debug) //true表示开发调试模式,否则为生产发布模式。Debug模式下错误将以异常形式抛出,以强烈的信号通知开发者,便于开发者发现问题,Release模式下将尽力规避异常,保障程序尽力运行,避免Crash
      .setCanLog(debug) //true表示可以输出日志,否则不输出日志
  )
  this.initConfig()
  //注册
  ContextServiceManager.register(this.context)
}
async initConfig() {
  try {
    // 启动Bundle
    await BundlePlatform.startBundle('bundle_config.json')
    bundleInit = true
  } catch (e) {
    console.log('App', '出错了')
  }

4.4 APP签名文件配置

应用签名文件建议统一管理在signature文件中。

鸿蒙应用签名证书需通过华为AppGallery Connect申请、管理,包括调试证书、发布证书,通过企业信息注册生成企业开发者证书、发布证书。

HarmonyOS应用/服务通过数字证书(.cer文件)和Profile文件(.p7b文件)来保证应用/服务的完整性。

在申请数字证书和Profile文件前,首先要通过Deveco Studio来生成密钥(存储在格式为.p12的密钥库文件中)和证书请求文件(.csr文件)。
基本概念

  • .p12文件:密钥,包含非对称加密中使用的公钥和私钥,存储在密钥库文件中,用于数字签名和验证。
  • .csr文件:证书请求文件,包含密钥中的公钥和公共名称、组织名称等,用于向AppGallery Connect申请数字证书。
  • .cer文件:数字证书,由华为AppGallery Connect颁发。
  • p7b文件:Profile文件,包含HarmonyOS的包名、数字证书信息、申请的证书权限列表,以及调试的设备信息等,每个应用中必须包含一个Profile文件。

注⚠️:以上文件请妥善保管,否则可能影响应用后期正常上架、更新!

4.5 证书申请

密钥和证书请求文件通过Deveco Studio生成。

4.5.2.1 创建.p12文件

主菜单Build>Generate Key and CSR;

在这里插入图片描述

在Key Store File中,点击Choose Existing选择已有的密钥库文件(存储有密钥库的.p12文件),如果没有密钥库文件,单击New进行创建,在Create Key Store窗口中,填写密钥库信息后,单击OK:

  • Key store file: 设置密钥库文件存储路径,并填写p12文件名。
  • Password:设置密钥库密码,长度至少8位,必须由大小写字母、数字和特殊符号中的两种以上组合。请记住密码,后续配置签名配置需要使用。
  • Confirm password: 再次输入密钥库密码。

在这里插入图片描述

Generate Key and CSR填写信息;

  • Alias: 密钥的别名信息,用于标识密钥名称。请妥善保管别名,后续签名配置需要使用。
  • Password: 密钥对应的密码,与密钥库密码一致。

在这里插入图片描述

设置CSR文件存储路径和CSR文件名;

在这里插入图片描述

点击Finish,创建CSR文件成功,可以在存储路径下获取密钥库.p12文件、证书请求文件.csr和material文件。

在这里插入图片描述

4.5.2.2 申请证书及Profile

对于无华为帐号的开发者,需要在AppGallery Connect注册华为帐号,且进行实名认证;企业用户建议申请企业级别帐号。官网链接

创建项目
项目是资源、应用的组织实体,通常开发者需要将一个应用的不同平台(Android、快应用、鸿蒙应用等)放置在一个项目中。

  1. 登录AppGallery Connect后,点击“我的项目”,进行添加项目;
  2. 按照要求进行每一步,最终点击完成即可。

创建应用
“我的应用”中的应用都可以包含在我的项目中。“我的应用”中的服务和应用只能是华为应用市场上发布的应用。因此,只包括Android应用、快应用、鸿蒙应用等。

  1. 登录AppGallery Connect,选择“证书、APP ID和Profile”;
  2. 点击“APP ID”,进入“APP ID” 页面,进行新建;
  3. 进入“设置应用开发基础信息”页面,填写应用的基础信息,完成后点击“下一步”。
  4. 在“开放能力接入”页面,为应用选择所属的项目,完成后点击“确认”,应用即成功创建。 如需将应用添加到已有项目,点击下拉框进行选择 如需将应用添加到新项目,直接在框中填写新项目名称。

申请调试证书及Profile
申请调试证书
外网环境且只需要一台设备调试,建议使用DevEco Studio提供的自动签名,此时无需调试证书,如果需要多台设备或者内网环境调试,则需要手动签名,此时需要申请及下载调试证书。
1 . 登录AppGallery Connect,选择“证书 APP ID和Profile”
2. 选择“证书、APP ID和Profile”,进入证书页面,点击新增证书;
3. 在弹出的“新增证书”窗口填写要申请的证书信息,其中证书请求文件即是通过Deveco Studio生成的证书请求文件,信息填写完毕后点击“提交”;
4. 证书申请成功后,“证书管理”页面展示证书名称等信息,点击“下载”,将生成的证书保存本地,供后续调试签名使用;

4.5.2.3 注册调试设备

内网环境或者多款鸿蒙手机需要进行调试应用时,需要注册调试设备的udid,udid具体获取方式:hdc shell bm get --udid

  1. 登录AppGallery Connect,选择“证书 APP ID和Profile”。
  2. 导航栏选择“证书、APP ID和Profile > 设备 ”, 进入设备页面。添加需要调试设备的udid 即可。
  3. 设备添加成功后,可在“设备管理”页面查看设备信息。
  4. 如果需删除设备,勾选一个或者多个设备,点击“批量删除设备”,在弹出窗口点击“确认”即可。
4.5.2.4 申请调试Profile
  1. 登录AppGallery Connect,选择“证书 APP ID和Profile”。
  2. 导航栏选择“证书、APP ID和Profile > Profile ”, 进入Profile页面,点击右上角添加。
  3. 在“添加Profile”页面,填写Profile信息,完成后点击添加。
  4. 调试Profile申请成功后,“管理HAP Provision Profile”页面展示Profile信息,点击“下载”,将生成Profile保存本地,供后续签名使用。
4.5.2.5申请发布证书及Profile

发布证书签名文件申请同调试证书签名文件申请方式基本相同,主要区别:

  1. 选择证书类型时需要选择的是发布即可。
  2. 不需要添加调试设备udid,发布证书默认支持所有harmonyos机型。
    详细可参考华为官网

4.5.3 证书签名使用

配置证书签名信息
1、在DevEco Studio中配置密钥(.p12)文件、申请的调试证书(.cer)和调试Profile(.p7b)文件。 开发者在工程级别目录新建signature文件目录来存储相关签名证书。

2、主菜单File > Project Structure > Project > Signing Configs窗口中,取消勾选“Automatically generate signature”, 然后配置工程信息。

3、 点击“ok”即可完成了应用的调试签名配置。

  • Store File: 选择密钥库文件,文件后缀.p12
  • Store Password: 输入密钥库密码
  • Key Alias: 输入密钥库别名信息
  • Key Password: 输入密钥的密码
  • Sign Alg: 签名算法,默认为SHA256withECDSA
  • Profile File: 选择申请的Profile文件,后缀.p7b
  • Certpath File: 选择申请的数字签名证书文件,后缀.cer

五、参考资料

  • 华为官网指导材料
  • 华为开发者课堂
  • 鸿蒙生态应用开发白皮书

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

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

相关文章

【机器学习算法】——逻辑回归

目录 逻辑回归理解损失函数代码练习1. 房屋价格与面积的关系2.基于学生特征的录取概率预测 逻辑回归理解 逻辑回归是用来二分类的&#xff01; 是在线性回归模型之后加了一个激活函数&#xff08;Sigmoid)将预测值归一化到【0~1】之间&#xff0c;变成概率值。 一般计算其中一…

mongo开启慢日志及常用命令行操作、数据备份

mongo开启慢日志及常用命令行操作、数据备份 1.常用命令行操作2.mongo备份3.通过命令临时开启慢日志记录4.通过修改配置开启慢日志记录 1.常用命令行操作 连接命令行 格式&#xff1a;mongo -u用户名 -p密码 --host 主机地址 --port 端口号 库名&#xff1b; 如&#xff1a;连…

排序的事

排序的事 C语言实现C实现Java实现Python实现 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 输入n个不相同的正整数&#xff0c;每个数都不超过n。现在需要你把这些整数进行升序排序&#xff0c;每次可以交换两个数的位置&#xff0c;最少需…

.NET Framework修复工具

某些精简Windows系统或者第三方下载的改版Windows系统在安装.NET Framework的时候会出现类似下面的错误信息: 可以使用微软官方出的.NET Framework修复工具解决, 下载地址: 【免费】.NETFramework修复工具资源-CSDN文库 下载后运行即可修复系统里的.NET Framework

PyTorch 本地安装指南:全面支持 macOS 、 Linux 和 Windows 系统

PyTorch 本地安装指南&#xff1a;全面支持 macOS 、 Linux 和 Windows 系统 PyTorch 是一个功能强大的深度学习框架&#xff0c;支持高效的计算图和 GPU 加速&#xff0c;广泛应用于人工智能和机器学习项目中。本文从安装前的准备工作开始&#xff0c;详细介绍了如何使用 con…

【单片机基础知识】MCU三种启动方式(Boot选择)[主Flash/系统存储器(BootLoader)/嵌入式SRAM]

参考资料&#xff1a; MCU的三种启动方式 - EdgeAI Lab 立芯嵌入式的视频 在SRAM中运行代码 - EdgeAI Lab 利用 Boot 选择不同的启动方式&#xff1a; 根据不同的启动方式&#xff0c;将不同的地址(主 FLASH/系统存储器/嵌入式 SRAM)映射到 0x0000 0000(系统中断向量表) 上…

记录一个Flutter 3.24单元测试点击事件bug

哈喽&#xff0c;我是老刘 这两天发现一个Flutter 3.24版本的单元测试的一个小bug&#xff0c;提醒大家注意一下。 老刘自己写代码十多年了&#xff0c;写Flutter也6年多了&#xff0c;没想到前两天在一个小小的BottomNavigationBar 组件上翻了车。 给大家分享一下事件的经过。…

第四篇:k8s 理解Service工作原理

什么是service&#xff1f; Service是将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。 简单来说K8s提供了service对象来访问pod。我们在《k8s网络模型与集群通信》中也说过k8s集群中的每一个Pod&#xff08;最小调度单位&#xff09;都有自己的IP地址&#xff0c;都…

基于ResNet50和VGG16深度学习模型的阿尔茨海默病MRI图像分类与早期诊断研究

阿尔茨海默病&#xff08;AD&#xff09;是目前全球范围内最常见的神经退行性疾病之一&#xff0c;早期诊断对延缓疾病进程和改善患者生活质量至关重要。随着医学影像学的进步&#xff0c;基于MRI图像的阿尔茨海默病检测成为一种重要的研究方向。本文提出了一种基于深度学习的M…

【日常记录-Mybatis】PageHelper导致语句截断

1. 简介 PageHelper是Mybatis-Plus中的一个插件&#xff0c;主要用于实现数据库的分页查询功能。其核心原理是将传入的页码和条数赋值给一个Page对象&#xff0c;并保存到本地线程ThreadLocal中&#xff0c;接下来&#xff0c;PageHelper会进入Mybatis的拦截器环节&#xff0c;…

MFC实现全屏功能

之前全屏都是参考&#xff1a; MFC单文档&#xff08;SDI&#xff09;全屏程序的实现 主要思路就是将各种菜单工具栏隐藏恢复。 随着MFC的升级&#xff0c;MFC框架本身就具备了全屏的功能。 微软有一个全屏实现类&#xff1a; CFullScreenImpl Class managing full-screen mod…

nn.RNN解析

以下是RNN的计算公式,t时刻的隐藏状态H(t)等于前一时刻隐藏状态H(t-1)乘以参数矩阵&#xff0c;再加t时刻的输入x(t)乘以参数矩阵&#xff0c;最后再通过激活函数&#xff0c;等到t时刻隐藏状态。 下图是输出input和初始化的隐藏状态&#xff0c;当参数batch_first True时候&…

运算符重载(五)

目录 const成员函数const对象不可以调用非const成员函数非const对象可以调用const成员函数const成员函数内不可以调用其它的非const成员函数非const成员函数内可以调用其它的const成员函 取地址及const取地址操作符重载const补充场景1场景2场景3场景4 const成员函数 将const修…

redis之RedisTemplate和StringRedisTemplate的区别

1.RedisTemplate和StringRedisTemplate的区别 StringRedisTemplate继承RedisTemplate 两者的数据是不共通的&#xff08;默认的序列化机制导致key不一样&#xff09; StringRedisTemplate默认采用的是String的序列化策略 RedisTemplate默认采用的是JDK的序列化策略&#xf…

浅探 Windows 上获取磁盘信息的几种方式(一)

获取磁盘信息是一个常见需求&#xff0c;如检查磁盘预留空间&#xff0c;开发磁盘碎片整理工具&#xff0c;系统性能优化等工具等。 Windows 为此提供了各种接口&#xff0c;今天我们主要讲讲常用相关的三个API &#xff1a; GetDiskFreeSpaceGetDiskFreeSpaceExGetDiskSpaceI…

通信综合—8.通信网络安全

一、信息系统安全概述 1.信息系统的构成和分类 信息系统是将用于收集、处理、存储和传播信息的部件组织在一起而成的相关联的整体&#xff0c;般是由计算机硬件、网络和通信设备、计算机软件、信息资源和信息用户组成。它是以处理信息流为目的的人机一体化系统。信息系统主要…

语言的艺术:探秘基于GPT模型的文本生成与优化之美

语言的艺术&#xff1a;探秘基于GPT模型的文本生成与优化之美 在人工智能蓬勃发展的今天&#xff0c;语言模型如同文字艺术的魔术师&#xff0c;赋予了计算机以“书写”的能力。基于GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型的文本生成技术&#xf…

微服务篇-深入了解 XA 模式与 AT 模式、分布式事务(部署 TC 服务、微服务集成 Seata )

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 分布式事务 1.1 认识 Seata 2.0 部署 TC 服务 2.1 准备数据库表 2.2 准备配置文件 2.3 Docker 部署 3.0 微服务集成 Seata 3.1 引入依赖 3.2 改造配置 3.3 添加数…

王道考研编程题总结

我还在完善中&#xff0c;边复习边完善&#xff08;这个只是根据我自身总结的&#xff09; 一、 线性表 1. 结构体 #define MaxSize 40 typedef struct{ElemType data[MaxSize]&#xff1b;int length; }SqList 2. 编程题 1. 删除最小值 题意 &#xff1a;从顺序表中删除…

原生html+css+ajax实现二级下拉选择的增删改及树形结构列出

<?php $db_host localhost; $db_user info_chalide; $db_pass j8c2rRr2RnA; $db_name info_chalide; /* 数据库结构SQL CREATE TABLE categories ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, parent_id INT DEFAULT 0 ); */ try { $pdo new PD…