开天辟地 HarmonyOS(鸿蒙) - 开发基础: 基础知识

源码 https://github.com/webabcd/HarmonyDemo
作者 webabcd

开天辟地 HarmonyOS(鸿蒙) - 开发基础: 基础知识

示例如下:

pages\basic\Overview.ets

/*
 * 基础知识
 * 参见 /readme.txt 中的相关说明
 */

import { TitleBar } from '../TitleBar';

@Entry
@Component
struct Overview {
  build() {
    Column({ space: 10 }) {
      TitleBar()
      Text('参见 /readme.txt 中的相关说明')
    }
  }
}

\readme.txt

开发文档
https://developer.huawei.com
https://docs.openharmony.cn

第三方库
https://ohpm.openharmony.cn

OpenHarmony 是开源的
HarmonyOS 是鸿蒙操作系统,不开源,他是基于 OpenHarmony 开发的,其支持 Android 的 app 是因为其集成了 AOSP(Android Open Source Project)
HarmonyOS NEXT 是纯血鸿蒙操作系统,完全去掉了 AOSP

ArkTs
ark 是方舟的意思,ts 是 typescript
ArkTs 兼容大部分的 typescript 语法,不支持 var any unknown symbol,不支持匿名类型,不支持解构,不支持 Generator

ohos
ohos 全称是 OpenHarmony Operating System
一个 @kit 包一般会整合好多 @ohos 包
比如 import { router } from '@kit.ArkUI'; 实际导入的是 import router from '@ohos.router';
比如 import { window } from '@kit.ArkUI'; 实际导入的是 import window from '@ohos.window';

.ets 文件
ets 的全称是 extended typescript

.json5 文件
兼容 json 的基础上,引入了新的特性,比如支持注释,支持尾随逗号,允许未加引号的键名等

开发工具 DevEco Studio,其中的 DevEco 是 Development Ecosystem 的缩写
文件结构及说明如下
HarmonyDemo                         // 项目名称
|---AppScope
|   |---resources                   // 应用级的资源
|   |---app.json5                   // 应用级的配置
|---entry                           // 模块名称
|   |---src
|   |   |---main
|   |   |   |---ets                 // 用于保存代码文件
|   |   |   |---resources           // 用于保存资源文件
|   |   |   |---module.json5        // 当前模块的配置
|   |---build-profile.json5         // 当前模块的编译相关的配置
|   |---oh-package.json5            // 当前模块的依赖
|   |---oh-package-lock.json5       // 当前模块的依赖及依赖的版本
|---build-profile.json5             // 应用级的编译相关的配置
|---oh-package.json5                // 应用级的依赖
|---oh-package-lock.json5           // 应用级的依赖及依赖的版本

一个项目由多个模块(module)组成,模块的类型有 HAP(包括 entry 和 feature 两种类型), HSP, HAR
每个 HAP 可以包含多个 UIAbility,每个 UIAbility 实例都会在最近任务列表中显示为一个对应的任务窗口,每个 UIAbility 可以包含多个页面
每个 HAP 都有一个 AbilityStage 容器,当需要加载 HAP 的入口 UIAbility 实例时,会先创建 AbilityStage 实例

通过 Previewer 可以快速查看 UI 效果,修改代码后不用重新编译即可快速看到修改后的效果,类似 flutter 的 hot reload,但是很多功能都无法使用
通过 Simulator 可以使用较完整的功能,但是它不支持 hot reload

xs(Extra Small) - 水平宽度 0vp - 320vp(左闭右开)
sm(Small) - 水平宽度 320vp - 520vp(左闭右开)
md(Medium) - 水平宽度 520vp - 840vp(左闭右开)
lg(Large) - 水平宽度 840vp - 无限大
xl(Extra Large) - 自定义
xxl(Extra Extra Large) - 自定义

sdpi(Small-scale Dots Per Inch) - dpi 在 0 - 120(左开右闭)
mdpi(Medium-scale Dots Per Inch) - dpi 在 120 - 160(左开右闭)
ldpi(Large-scale Dots Per Inch) - dpi 在 160 - 240(左开右闭)
xldpi(Extra Large-scale Dots Per Inch) - dpi 在 240 - 320(左开右闭)
xxldpi(Extra Extra Large-scale Dots Per Inch) - dpi 在 320 - 480(左开右闭)
xxxldpi(Extra Extra Extra Large-scale Dots Per Inch) - dpi 在 480 - 640(左开右闭)

ArkTS 方舟编程语言
ArkUI 提供 UI 框架,通过 ArkTS 声明式编程。比如 import { router } from '@kit.ArkUI'
Core File Kit 提供文件管理能力。比如 import { fileIo as fs } from '@kit.CoreFileKit'
Network Kit 提供网络相关能力。比如 import { http } from '@kit.NetworkKit'
Background Tasks Kit 提供后台任务能力。比如 import { backgroundTaskManager } from '@kit.BackgroundTasksKit';

hdc(OpenHarmony Device Connector)
是一个用于设备连接和调试的命令行工具,类似于 Android 开发中的 ADB(Android Debug Bridge),其存放于类似如下的地址: DevEco Studio 安装目录/sdk/default/openharmony/toolchains/hdc.exe

ohpm(OpenHarmony Package Manager)
安装指定的依赖 ohpm i @webabcd/harmony-httpserver
安装所有依赖 ohpm i
上面的 i 是 install 的缩写

\readme_agc.txt

几个概念:
AGC - AppGallery Connect
AGC 的地址 https://developer.huawei.com/consumer/cn/service/josp/agc/index.html
AGC 中的一个项目可以包含多个应用,这里所谓的项目比较类似分组的概念
.csr - 证书请求文件 Certificate Signing Request
.cer - AGC 上申请的证书文件的后缀名
.p7b - AGC 上申请的 profile 文件的后缀名
.p12 - 密钥库文件


证书相关:
1、生成证书请求文件
在 DevEco Studio 中选择 Build -> Generate Key and CSR
如果有密钥库文件(.p12)那么就选择它,如果没有则新建密钥库文件
选择好密钥库文件之后,设置一个秘钥别名(一个密钥库可以包含多个秘钥别名,一个秘钥别名对应一个 .csr 文件,后续在配置签名的时候会用到秘钥别名)
然后指定 .csr 文件的路径之后,就可以生成 .csr 文件了(建议 .csr 文件的文件名与秘钥别名一致)
注:选择保存路径的时候,最好都指向一个单独的文件夹,最终会生成一个 .p12 文件(密钥库文件),一个 .csr 文件(证书请求文件),一个名为 material 的文件夹(存放一些相关的资料)
2、在 AGC 的“证书、APP ID和Profile”中生成证书
证书类型分为“调试证书”和“发布证书”,为证书起名时,调试证书可以起名为:应用名称_debug,发布证书可以起名为:应用名称_release(注:证书的后缀名为 .cer)
选择 .csr 文件后就可以生成证书了
3、如果需要调试的话,则需要在 AGC 的“证书、APP ID和Profile”中注册调试设备,最多注册 100 个设备
获取设备的 UDID 的方法如下:
进入设备的“设置” -> “关于本机”,然后多次点击版本号,打开开发者模式
进入设备的“设置” -> “系统”,在最下方找到“开发人员选项”,然后打开“USB调试”开关
通过 hdc shell bm get --udid 获取设备的 UDID
hdc 的地址在 DevEco Studio 安装目录/sdk/default/openharmony/toolchains 中
4、在 AGC 的“证书、APP ID和Profile”中生成 profile
需要选择相关的证书
为 profile 起名时,调试 profile 可以起名为:应用名称_debug,发布 profile 可以起名为:应用名称_release(注:profile 的后缀名为 .p7b)
如果是调试 profile 还要选择已注册的设备
5、配置签名
在 DevEco Studio 中选择 File -> Project Structure -> Project -> Signing Configs 做配置(对应的配置文件为: 根目录/build-profile.json5)
调试场景时,可以使用自动签名也可以使用手动签名
发布场景时,只能使用手动签名


华为账号登录相关:
1、在 AGC 中创建相关的项目和相关的应用
2、在 AGC 中选择“我的项目”,然后点击相关的项目,然后点击相关的应用,然后在“常规”中找到指定应用的“OAuth 2.0客户端ID(凭据)”中的 Client ID
3、在本地开发项目中的 entry 模块的 module.json5 中做如下配置
"module": {
  "type": "entry",
  "metadata": [
    {
      "name": "client_id",
      "value": "从 AGC 上拿到的指定应用的“OAuth 2.0客户端ID(凭据)”中的 Client ID"
    }
  ]
}
4、配置证书指纹
在 DevEco Studio 中选择 File -> Project Structure -> Project -> Signing Configs
点击 Store file(*.p12): 最右侧的指纹按钮,然后复制证书指纹信息
在 AGC 中选择“我的项目”,然后点击相关的项目,然后点击相关的应用,然后在“常规”中找到指定应用的“SHA256证书/公钥指纹”,然后点击“添加证书指纹”,然后粘贴之前复制的证书指纹信息
5、配置公钥指纹
在 AGC 中选择“我的项目”,然后点击相关的项目,然后点击相关的应用,然后在“常规”中找到指定应用的“SHA256证书/公钥指纹”,然后点击“添加公钥指纹 (HarmonyOS API 9及以上)”,然后选择相关的公钥指纹信息即可
6、申请 scope 权限
进入 https://developer.huawei.com/consumer/cn/console/api/scopeManage 
先在左上角选择好项目和凭证(凭证名称是由应用名称和应用的 APP ID 组成的),然后再查看或申请 scope 权限
默认有 openid, profile 权限,敏感权限需要单独申请

\readme_ohpm.txt

ohpm(OpenHarmony Package Manager)

1、先在 har 模块中的 oh-package.json5 文件中做一些配置

2、OpenHarmony 三方库中心仓
https://ohpm.openharmony.cn/

3、若需发布组织化库,需先在 ohpm.openharmony.cn 的“个人中心”->“组织管理”中,新增组织并等待审核(通常1-2小时)

4、生成 SSH 密钥生成
ssh-keygen -m PEM -t RSA -b 4096 -f d://ohpm.pub
注:ssh-keygen 的地址可能是 C:\Windows\System32\OpenSSH\ssh-keygen.exe

5、在 ohpm.openharmony.cn 的“个人中心”->“认证管理”中,添加一个 OHPM 公钥
公钥的值保存在 d://ohpm.pub.pub

6、配置私钥
ohpm config set key_path d://ohpm.pub
注:ohpm 的地址可能是 h:\Program Files\Huawei\DevEco Studio\tools\ohpm\bin\ohpm.bat

7、配置发布码
ohpm config set publish_id 发布码
注:在 ohpm.openharmony.cn 的“个人中心”中有名为“复制发布码”的按钮,

8、在 DevEco Studio 中,选中 har 项目,然后在 Build 中执行 Make Module 'xxx'
生成的 .har 文件在 D:\gitroot\HarmonyHttpServer\harmony_httpserver\build\default\outputs\default\harmony_httpserver.har

9、发布 .har 到 ohpm.openharmony.cn
ohpm publish D:\gitroot\HarmonyHttpServer\harmony_httpserver\build\default\outputs\default\harmony_httpserver.har
当出现 what is your passphrase of the private key: 提示时,输入你在执行 ssh-keygen 时输入的密码

源码 https://github.com/webabcd/HarmonyDemo
作者 webabcd

posted @ 2025-03-07 15:24  webabcd  阅读(93)  评论(0)    收藏  举报