端云一体化,极简开发数独闯关游戏元服务
想了解更多关于开源的内容,请访问:
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面板同时打印运行日志。
端云一体化,极简开发数独闯关游戏元服务-开源基础软件社区