端云一体化,极简开发数独闯关游戏元服务

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com

前言

数独闯关游戏元服务,支持2*4历史闯关记录卡片、4*4数独闯关游戏卡片,无需进入元服务,可在桌面上开始游戏,同步刷新记录。

端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

一、基本概念

  • 元服务(原名原子化服务)是一种基于HarmonyOS API的全新服务提供方式,以HarmonyOS万能卡片等多种呈现形态,向用户提供更轻量化的服务。具有即用即走、信息外显、服务直达的特性。
  • 万能卡片(简称卡片)是一种界面展示形式,可以将应用的重要信息或操作前置到卡片,以达到服务直达、减少体验层级的目的。
  • HUAWEI DevEco Studio是华为基于IntelljJ IDEA Community开源版本打造的一款面向全场景多设备,提供一站式的分布式应用开发平台,支持分布式多端开发、分布式多端调测、多端模拟仿真,为运行在HarmonyOS/OpenHarmony系统上的应用/服务提供一站式开发平台。
  • HarmonyOS SDK是集成在DevEco Studio中,为应用/服务开发提供所需的一系列系统开放能力,如框架、Ability、分布式服务、安全、方舟编译器、HMS Core、基础软件服务、硬件服务等,其包含开发者可以使用的API以及调试编译等基础的工具链。
  • ArkTS语言是华为自研的开发语言,基于TypeScript(简称TS)基础上匹配了ArkUI框架,扩展了声明式UI、状态管理等相应的能力。
  • ArkUI框架是一套构建分布式应用界面的声明式UI开发框架,其使用极简的UI信息语法、丰富的UI组件、以及实时界面预览工具,帮助开发者提升HarmonyOS应用界面开发效率。
  • ArkCompiler是华为自研的统一编程平台,包括编译器、工具链、运行时等关键部件,支持高级语言在多种芯片平台的编译与运行。
  • AppGallery Connect(简称AGC)致力于为应用的创意、开发、分发、运营、经营各环节提供一站式服务,构建全场景智慧化的应用生态体验。
  • 端云一体化是为丰富HarmonyOS对云端开发的支持、实现HarmonyOS生态端云联动,DevEco Studio推出了云开发功能,开发者在创建工程时选择云开发模板,即可在DevEco Studio内同时完成HarmonyOS应用/服务的端侧与云侧开发。

二、约定

  • DevEco Studio 3.1.1 Release
  • HarmonyOS SDK API 9
  • ArkTS语言
  • Stage模型
  • 端云一体化元服务工程
  • 确保已使用已实名认证的华为开发者账号登录DevEco Studio。

三、创建端云一体化元服务工程

1、打开创建工程向导

选择以下一种方式,打开工程创建向导界面

  • 当前未打开任何工程,单击DevEco Studio欢迎页中“Create Project”创建新工程。
  • 当前已打开工程,单击菜单栏“File > New > Create Project”创建新工程。

2、选择工程模板

在Choose Your Ability Template向导页,单击“Atomic Service”切换工程类型,选择云开发模板,单击“Next”进入下一步。

端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

3、配置工程信息

在工程配置界面,配置工程的基本信息。单击“Next”按钮进入关联云开发资源界面。

端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

参数

说明

Project name

工程的名称,由大小写字母、数字和下划线组成。

Bundle name

软件包名称,需保证唯一,由字母、数字、下划线和符合“.”组成,以字母开头,长度为7-127个字符。

Save location

工程文件本地存储路径,由大小写字母、数字和下划线等组成,不能包含中文字符。

Compile SDK

应用的目标API Version,在编译构建时,DevEco Studio会根据指定的Compile API版本进行编译打包。使用云开发模板,版本不低于9。

Model

应用支持的模式,云开发模板仅支持Stage模式。

Language

开发语言。Stage模式仅支持使用ArkTS语言开发。

Compatible SDK

兼容的最低API Version。云开发模板,版本不低于9。

Device Type

工程模板支持的设备类型,当前API 9仅支持手机设备。

Enable CloudDev

是否启用云开发,默认启用且无法更改。

4、关联云开发资源

为工程关联云开发所需的资源,即在DevEco Studio中选择您的华为开发者账号加入的开发者团队,将该团队在AGC的同包名应用关联到当前工程,具体操作如下:

  • 若尚未登录DevEco Studio,单击“Sign in”,拉起浏览器在弹出的账号登录页面,使用已实名认证的华为开发者账号完成登录。

    登录成功后,在授权界面单击“允许”按钮为DevEco Studio授权,界面将展示账号昵称。

  • 单击“Team”下拉框,选择开发团队。选中团队后,系统根据工程包名自动查询团队下的同包名应用。若为首次创建且团队下未创建同包名的应用,则提示需要在AGC平台创建应用。

    单击“AppGallery Connect”打开AGC应用创建向导,填写应用信息,单击“确认”按钮创建应用。

    完成以上操作后,DevEco Studio即可获取到同包名应用对应的项目信息。

5、工程初始化配置

成功创建工程并关联云开发资源后,DevEco Studio会为工程自动执行一些初始化配置,并开通云开发相关服务:认证服务、云函数、云数据库、云托管、API网关、云存储。

端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

  • 端侧工程自动集成AGC SDK,包括AGC SDK 配置文件entry/src/main/resources/rawfile/agconnect-services.json 和在entry/oh-package.json5配置文件中引入的AGC相关云服务最新版本SDK。

    端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

  • 云侧工程自动集成云数据库最新版本Node.js Server SDK。

    端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

四、端云协同元服务工程介绍

端云一体化元服务开发工程目录分为三个子工程:元服务开发工程(Application)、云开发工程(CloudProgram)、端侧公共库(External Libraries)。

端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

1、元服务开发工程(Application)

元服务开发工程主要用于开发应用端侧的业务代码,元服务开发工程目录结构如下:

端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

- Application
    - AppScope
        app.json5    // 应用的全局配置信息
    - entry           // 应用/服务模块,编译构建生成一个HAP
        oh_modules   // 用于存放三方库依赖信息
        - src/main
            - ets    // 用于存放ArkTS源码
            - resources    // 用于存放应用/服务所用到的资源文件
            module.json5    // Stage模型配置文件
        build-profile.json5    // 当前模块信息、编译信息配置项
        hvigorfile.ts          // 模块级编译构建任务脚本
        oh-package.json5        // 配置三方包声明的入口及包名
    build-profile.json5    // 应用配置信息,包括签名、产品配置等
    hvigorfile.ts          // 应用级编译构建任务脚本

2、云开发工程(CloudProgram)

云开发工程中开发者可以为应用开发云函数和云数据库服务资源,云开发工程目录结构如下:

端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

- CloudProgram
    - clouddb    // 云数据库工程目录
        dataentry    // 用于存放数据条目文件
        objecttype    // 用于存放对象类型文件
        db-config.json    // 模块配置文件
    - cloudfunctions    // 云函数工程目录
        cloudFunctionName // 云函数名称
          node_modules    // 包含所有三方依赖
          cloud-config.json    // 云开发工程配置文件
          package.json    // 定义了TypeScript公共依赖

五、云函数开发指南

1、创建函数

在云端工程(CloudProgram)中可以创建函数、编写函数业务代码、为函数配置调用触发器。

单击“cloudfunctions”目录,选择“New > Cloud Function”创建云函数。端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

输入函数名称,单击“OK”按钮DevEco Studio自动生成函数目录。函数名称仅支持小写英文字母、数字、中划线(-),首字母必须为小写字母,结尾不能为中划线(-)。

为当前工程创建生成数独9*9宫格二维数组算法,云函数名称为sudoku-algorithm 。

端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

云函数目录结构。

端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

- sudoku-algorithm
   node_modules    // 自动为该函数引入依赖包
   function-config.json    // 函数的配置文件,可配置触发器,通过触发器暴露的触发条件来实现函数调用。
   package.json            // 包含了当前函数的名称、版本等函数元数据。
   sudoku-algorithm.ts    // 函数入口文件

云函数触发器:云函数触发器在function-config.json文件中triggers属性中配置,当前支持HTTP触发器、CLOUDDB触发器、AUTH触发器、CLOUDSTORAGE触发器、CRON触发器五种。

  • HTTP触发器工程创建完成后默认自动在function-config.json文件生成HTTP触发器配置。函数部署到云端后会自动生成触发URL,开发者向URL发起HTTP请求时触发函数。
{
    "type": "http",
    "properties": {
        "enableUrlDecode": true,
        "authFlag": "true",
        "authAlgor": "HDA-SYSTEM",
        "authType": "apigw-client"
    }
}

参数

说明

enableUrlDecode

通过HTTP触发器触发函数,对于contentType为“application/x-www-form-urlencoded”的触发请求,是否使用URLDecoder对请求body进行解码再转发到函数中。

- true:启用。

- false:不启用。

authFlag

是否鉴权,默认为true。

authAlgor

鉴权算法,默认为HDA-SYSTEM。

authType

HTTP触发器的认证类型。

 - apigw-client:端侧网关认证,适用于来自APP客户端侧的函数调用。

 - cloudgw-client:云侧网关认证,适用于来自APP服务器侧的函数调用。

2、开发云函数

云函数的代码实现基于不同的语言运行环境可分为Node.js、Java、Python,还有一种比较特别运行环境为Custom Runtime(自定义运行环境)。本工程的语言运行环境为Node.js。

云函数的入口方法:module.exports.myHandler = function(event, context, callback, logger)

  • myHandler:入口方法名称。
  • event:调用方传递的事件对象,JSON格式。
  • context:函数运行时上下文对象,封装了日志接口、回调接口、环境变量env对象等。
  • callback:事件处理结果。

logger:记录日志。开发者在代码中使用logger接口记录日志,当前支持四种级别。

  • logger.debug()
  • logger.error()
  • logger.warn()
  • logger.info()

函数必须通过显示调用callback(object)将事件处理结果返回给AGC,结果可以是任意对象,但必须与JSON.stringify兼容,AGC会将结果转换成JSON字符串,返回给调用方。callback执行完成后,函数即执行结束。

为云函数添加返回内容:

let myHandler = async function (event, context, callback, logger) {
  logger.info(event);

  // do something here
  callback({
    code: 0,
    desc: "Success.",
    data: "请求成功!"
  });
};
export { myHandler };

调试云函数:函数开发过程中,开发者可在本地进行调试,或者将函数部署到AGC云端后,在本地触发调用云端函数。当前本地调试支持Run和Debug两种模式,Debug模式支持使用断点来追踪函数的运行情况。

  • 本地云函数调试,单击"cloudfunctions > Run/Debug Cloud Function"运行/调试云函数。

    端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

  • 查看Run面板,若出现“Cloud Functions loaded successfully”,标识云函数启动成功(云函数启动/调试将部署cloudfunctions中所有的云函数),并生成对应的POST URL。

    端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

  • 在菜单栏选择“Tools > CloudDev > Cloud Functions Requestor”触发云函数调用。

    端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

  • 在弹出的云函数调用界面填写触发事件参数。

    端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区

    • Environment:选择函数调用环境,Local表示本地调用,Remote表示远程调用(需要先将函数部署到AGC云端)。
    • Cloud Function:选择需要触发的云函数。
    • Event:输入事件参数,内容为JSON格式请求体数据。
  • 单击Trigger按钮,触发执行云函数,执行结果展示在Result框内,Run面板同时打印运行日志。

    端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区