一、案例开发——发布流程

  本章主要介绍了从零开始发布案例的流程。

1.1. 配置Git环境

  首先需要配置git环境,为后续代码下载与提交奠定基础,具体步骤如下。

  1) 下载git并安装,下载地址:https://git-scm.com/downloads 。

  2) 注册gitee 账号。

    alt text

  3) 配置账户邮箱。

    alt text

  4) 在gitee 搜索HarmonyOS-Cases,并进入HarmonyOS-Cases/Cases 仓库,仓库地址:https://gitee.com/harmonyos-cases/cases 。

  5) 拉取代码至本地。

git clone https://gitee.com/harmonyos-cases/cases.git

  6) 配置身份信息。

git config --global user.name 'gitee 用户名'
git config --global user.email 'gitee 用户邮箱'

1.2. 代码开发

  1) 进行案例的代码开发,具体内容可见第二章代码开发部分。

  2) 检查开发代码符合第二章内容要求后,可进行案例发布、合入主仓等步骤。

1.3. 代码开发

  1) 点击forked将仓库安装到个人仓库中。

    alt text

  2) 在git中创建远程仓库关联fork的个人仓库。

git remote add remote 个人仓库地址

  3) 通过git提交并推送代码至远程仓库

1. git add .
2.1 git commit -m "分支名" // 第一次提交使用该命令
2.2 git commit -m "分支名" --amend // 2次及以上提交使用该命令
3. git push remote head:master

1.4. 检视合入主仓

  1) 在个人仓库中提交PR。

    alt text

  2) 提供编译通过与codelinter截图。

    alt text

  3) 检查PR的CheckList内容,保证提交代码符合要求。

    alt text

  4) 有必要的话,先进行内部交叉review加分(点赞)。

  5) 通知审核员审核并等待(包括代码规范审核——蒋文赛、测试——孙仁,以及UX审核——李晓艳),修改评论意见。

  6) 如果存在冲突,请先解决冲突。

1. git pull --rebase 'https://gitee.com/harmonyos-cases/cases' master
2. git status // 查看冲突文件并修改冲突
3. git add .
4. git rebase --continue

  7) 重新提交文件

1. git add .
2. git commit -m "分支名" --amend
3. git push remote head:master -f

  8) 等待所有检视人员加分(点赞)后,可提醒审核员蒋文赛合入代码至主仓。

1.5. 论坛更新

  所有问题闭环并合入主仓以后,找陈永建更新论坛。

二、案例开发——代码开发

  本章主要介绍了案例代码开发的流程。

2.1. 模块配置

  本节主要介绍了代码开发前的模块配置以及工程文件配置。

  1) 创建har包。右键feature文件夹,New->Module;然后,新建一个static library模块。

    alt text

    alt text

  2) 配置工程build-profile.json5。在工程build-profile.json5文件中的”modules”字段内添加har包路径。(name与har包中的src/main/module.json5的name字段同名)

    alt text

    alt text

  3) 配置product模块oh-package.json5文件。(字段名格式@ohos/har包名,字段地址为har包地址)

    alt text

  4) 配置product模块build-profile.json5文件。(填入内容与product模块oh-package.json5文件的字段名保持一致)

    alt text

2.2. 代码结构

  alt text

  除了必需的结构,其余结构可以自行定义,也可以按照以上结构定义。

2.3. 编写核心组件——案例核心功能实现

  本部分需要实现案例的核心功能,如:地址交换的核心功能就是传入两个组件并可以交换两个组件的位置。后续主要介绍了实现案例核心功能的基本步骤。

2.3.1. 核心组件要求

  本小节主要介绍了编写核心组件时,需要考虑的一些要求。

  2.3.1.1. 功能自定义

  功能自定义就是需要实现开发者可以自定义核心组件的一些功能,使核心组件使用起来更具通用性,如:动效自定义;内容自定义;...;

  2.3.1.2. 对外暴露属性与接口

  为了实现功能自定义,需要对外暴露一些接口与属性,使开发者可以从外部定义核心组件的一些功能。

  1) 对外暴露属性

    alt text

  2) 对外暴露接口

    alt text

2.3.2. 核心组件注释

  本小节主要介绍了核心组件所需的一些注释,主要分为组件注释和成员变量与函数注释两部分。

  2.3.2.1. 组件注释

  alt text

  组件注释主要包括以下三个部分:

  1) 功能描述:核心组件实现的功能有哪些。(以1.;2.;方式罗列)

  2) 实现原理:核心组件是如何实现的。(总结README文档的实现思路部分,以1.;2.;方式罗列)

  3) 对外参数与接口描述:描述对外参数与接口的定义,格式如下:

/**
 * @param {必选参数类型} 必选参数名 - 参数含义
 * @param {可选参数类型} [可选参数名] - 参数含义
 */

  2.3.2.2. 组件内成员变量与函数注释

  1) 成员变量注释:描述成员变量的定义,格式如下:

// 参数描述

    alt text

  2) 成员函数注释:描述成员函数的定义,格式如下:

/**
 * 函数描述
 * @param {必选参数类型} 必选参数名 - 参数含义
 * @param {可选参数类型} [可选参数名] - 参数含义
 * @returns {返回类型} 返回值含义
 */

    alt text

2.4. 编写UI/样例代码

  本节主要需要实现UI界面,以展示核心组件的功能,同时为开发者提供使用核心组件的示例。

2.4.1. UI/样例组件注释

  alt text

  UI/样例组件注释主要包括以下四个部分:

  1) 功能描述:简单介绍实现的样例。(直接使用README的介绍部分)

  2) 推荐场景:推荐使用核心组件的场景。

  3) 核心组件:核心组件以及一些核心组件需要的自定义类型。(以1.;2.;方式罗列)

  4) 实现步骤:核心组件的使用步骤,格式如下。(主要包括核心组件入参的获取等)

/**
 * 1. 步骤1
 * @example
 * 代码样例
 * 2. 步骤2
 * @example
 * 代码样例
 */

2.5. 填写README文件

  在har包目录下填写README文件,除了包括介绍、效果预览图、使用说明、实现思路等字段,还需要额外包括:

  1) 下载安装:如何导入核心组件

  2) 快速使用:介绍如何快速上手使用核心组件

  3) 属性(接口)说明字段:自定义组件/类的接口说明

  具体可参照案例CustomAnimationTab。

2.6. 导入动态路由模块

  在oh-package.json5中导入动态路由模块。

  alt text

2.7. 配置FeatureComponent文件

  删除原有的@AppRouter路由导航(如果有),在ets模块目录下新增FeatureComponent.ets文件, 在内部实现@AppRouter路由导航,并且将UI/样例组件导入进来。(其中@AppRouter的name字段设置为har包名/组件名)

  alt text

2.8. 配置hvigorfile文件

  为hvigorfile文件添加配置,使其能够被动态路由导入。配置后,点击sync now会自动生成一个src/main/ets/generated/RouterBuilder文件。

  alt text

2.9. 导出UI/样例组件与RouterBuilder文件内容

  额外将编写的RouterBuilder文件内容、UI/样例组件、核心组件以及自定义组件/类从Index.ets文件中导出。

  alt text

2.10. 录制gif并配置WaterFlowData文件

  配置product目录下的WaterFlowData文件。首先录制案例使用的gif,添加到product的media目录下,文件名为har包名。其次,在product的WaterFlowData文件添加对应的配置项,格式如下。

new SceneModuleInfo(gif地址, 标题, @AppRouter的name字段, 案例类别, 开发难度)

  alt text

  alt text

2.11. 配置根目录下的config.json文件

  本节主要介绍了如何配置config.json文件,从而使组件可以展示在插件市场中,主要包括以下两个步骤:

  1) 编写案例配置,配置字段如下所示。

{
  "name": "案例名称",
  "id": "案例Id(案例编号)",
  "image": "案例gif图case仓地址",
  "description": "案例描述",
  "codeInfo": {
    "casePath": "案例case仓地址",
    "caseRepositoriesInfo": "",
    "insertCode": "UI/样例组件(组件名后面要加上括号)",
    "importCode": "import { UI/样例组件名 } from 'har包名';",
    "codeAnnotation": "/**\n * 功能描述:README的介绍 \n * 参数介绍:一般填无\n * README:README地址\n */",
    "napi": false
  }
}

    alt text

  2) 寻找案例分类并将配置填写到对应类别下的repositoriesInfoList中。

    alt text

2.12. 检查清单

  本节作为最终收尾,列举了案例代码实现后需要做的一些检查操作。

  1) oh-package.json5文件是否引入了本地模块。(动态路由模块除外)

  2) Index.ets文件是否导出了RouterBuilder文件内容、UI/样例组件、核心组件以及自定义组件/类。

  3) 核心功能是否集成在了核心组件中,实现UI与核心功能分离。

  4) 各种注释是否完备。

  5) 核心组件内部是否尽可能初始化了对外暴露参数与接口。

  6) config.json是否配置且正确。

  7) README文件是否填写。

  8) WaterFlowData配置是否正确。

  9) 检查提交分支名是否只有一个。

  10) har包中各种资源的字段名是否以案例名开头。

    alt text