HarmonyOS Developer DevEco Studio使用指南-端云一体化开发
简介
为进一步提升HarmonyOS应用的开发体验,DevEco Studio推出了云开发功能,开发者在创建工程时选择云开发模板,即可在DevEco Studio内同时完成HarmonyOS应用的端侧与云侧开发,体验端云一体化协同开发。
注意
- 目前仅HarmonyOS应用支持云开发功能,原子化服务暂不支持。
- 使用云开发功能,需同时满足如下条件:
○ Compile SDK版本≥9
○ 完成华为开发者帐号实名认证
○ 签署云开发相关协议
相比于传统开发模式,云开发模式具备成本低、效率高、门槛低等优势,具体区别见下表。
区别点 | 传统开发模式 | 云开发模式 |
开发工具 | 端侧与云侧各需一套开发工具,云侧需自建服务器,工具成本高。 | DevEco Studio一套开发工具即可支撑端侧与云侧同时开发,无需搭建服务器,工具成本低。 |
开发人员 |
|
|
运维 | 需自行构建运营与运维能力,成本高、负担重。 | 直接接入AGC Serverless云服务,实现免运维,无运维成本或资源浪费。 |
云开发特性
云开发特性主要包含了如下功能。
主要功能 | 描述 |
端云一体化开发 | 您可以在DevEco Studio中同时开发与调试应用的端侧代码与云侧代码。
○ 云函数:支持在DevEco Studio中创建函数、编写函数代码、部署函数到AGC云端。 ○ 云数据库:支持在DevEco Studio中创建对象类型、在对象类型中添加数据条目、部署云数据库到AGC云端。 |
一键部署云工程 | 云工程开发完毕后,您可在DevEco Studio中将其一键部署至AGC云端。 |
端云一体化组件 | DevEco Studio还为您提供多种端云一体化组件。集成端云一体化组件后,您只需进行简单配置即可向应用用户提供登录、支付等多种功能。 当前仅支持端云一体化登录组件,用于向应用用户提供登录、登出功能,目前支持帐号密码登录、手机验证码登录、以及邮箱验证码登录。 |
开发流程
HarmonyOS应用端云一体化开发流程如下图所示。
序号 | 阶段 | 任务 | 说明 |
1 | 创建端云一体化开发工程 | 选择通用云开发模板(Empty Ability with CloudDev)。 | |
配置工程信息 | 配置工程名称、类型等基本信息。 | ||
在进行云开发之前,您需为工程关联所需的资源:在DevEco Studio中登录已实名的华为开发者帐号,选择您帐号加入的开发者团队,将该团队在AGC的同包名应用关联到当前工程。 上述云开发资源关联成功、工程创建完毕后,DevEco Studio会为您的工程自动执行一些初始化配置: | |||
2 | 端云一体化开发与调试 | 端侧开发与调试 |
|
在云侧工程下开发、调试与部署云服务:
| |||
3 | 端侧发布与云侧部署 | 将端侧工程进行打包,生成APP,后续即可在AGC进行应用上架。 | |
云工程开发完毕后,您可在DevEco Studio中将其一键部署至AGC云端。 |
创建端云一体化开发工程
新建工程
选择云开发模板
- 选择以下任一种方式,打开工程创建向导界面。
○ 如果当前未打开任何工程,可以在DevEco Studio的欢迎页点击“Create Project”开始创建一个新工程。
○ 如果已经打开了工程,可以在菜单栏选择“File > New > Create Project”来创建一个新工程。
- 根据工程创建向导,在“HarmonyOS”页签,选择预置的通用云开发模板(Empty Ability with CloudDev),然后点击“Next”。
配置工程信息
- 在工程配置界面,配置工程的基本信息。
参数 | 说明 |
Project name | 工程的名称,由大小写字母、数据和下划线组成。 |
Project type | 工程的类型。 目前云开发暂不支持原子化服务,因此本字段默认只能选择“Application”,不支持选择“Atomic service”。 |
Bundle name | 软件包名称,需保证唯一。包名需遵循如下规则:
|
Save location | 工程文件本地存储路径,由大小写字母、数字和下划线等组成,不能包含中文字符。 |
Compile SDK | 应用的目标API Version,在编译构建时,DevEco Studio会根据指定的Compile API版本进行编译打包。 注意 使用通用云开发模板,Compile SDK版本不得低于9。 |
Model | 应用支持的模式。通用云开发模板仅支持Stage模式。 |
Language | 开发语言。Stage模式仅支持使用ArkTS语言开发。 |
Compatible SDK | 兼容的最低API Version。 |
Device type | 该工程模板支持的设备类型。目前API 9仅支持手机设备。 |
- 点击“Next”,开始关联云开发资源。
关联云开发资源
为工程关联云开发所需的资源,即在DevEco Studio中登录已实名的华为开发者帐号,选择您帐号加入的开发者团队,将该团队在AGC的同包名应用关联到当前工程。具体操作如下:
- 如您尚未登录DevEco Studio,点击“Sign in”,在弹出的帐号登录页面,使用已实名认证的华为开发者帐号完成登录。
登录成功后,界面将展示帐号昵称。
- 点击“Team”下拉框,选择开发团队。
注意
团队帐号持有者需为团队完成实名认证。
- 关联应用。
选中团队后,系统根据工程包名在该团队中自动查询AGC上的同包名应用。
- 如查询到应用,选中该应用,点击“Finish”即可。
- 如查询到的应用尚未关联任何项目,则无法选中。请先将应用添加到您的项目下。
- 如果查询到的应用所属项目尚未启用数据处理位置,请点击界面提示内的“AppGallery Connect”
注意
- 由于云开发目前仅支持中国站点,请确保项目启用的数据处理位置包含中国站点。
- 无论项目启用的默认数据处理位置为哪个站点,后续开发的云服务资源都将部署在中国站点。
- 如在当前团队中未查询到同包名应用,请先确认填写的包名是否有误。
○ 如包名有误,点击界面提示中的“go back”返回工程信息配置界面进行修改。
○ 如包名无误,则表明当前团队尚未在AGC控制台创建与当前工程包名相同的应用。您可点击界面提示中的“AppGallery Connect”,前往AGC控制台创建同包名应用。
完成以上操作后,DevEco Studio即可获取到同包名应用信息。选中应用后,点击“Finish”。
- 如您所属的团队尚未签署云开发相关协议,点击协议链接仔细阅读协议内容后,勾选同意协议,点击“Finish”,进入主开发界面。
说明
只有帐号持有者和法务角色才有权限签署协议。
- 在主开发界面,可查看刚刚新建的工程。关于工程的详细目录结构介绍,请参见端云一体化开发工程介绍。
工程初始化配置
当您成功创建工程并关联云开发资源后,DevEco Studio会为您的工程自动执行一些初始化配置。
自动开通云开发相关服务
DevEco Studio为工程关联的项目自动开通云开发相关服务:认证服务、云函数、云数据库、云托管、API网关、云存储。服务开通状态可在Event Log窗口查看。
说明
如服务开通失败,您可随界面引导前往AGC控制台进行手动开通。
端侧工程自动集成配置文件和云服务SDK
DevEco Studio为端侧工程自动集成agconnect-services.json配置文件以及相关云服务最新版本HarmonyOS SDK。
- “entry > src > main > resources > rawfile”目录下:agconnect-services.json配置文件,内含client secret和API key,请妥善保管。
- “entry > package.json”:自动引入了相关云服务(认证服务、云函数、云存储、云数据库)最新版本HarmonyOS SDK,同时会自动集成端云一体化登录组件的最新SDK。
云侧工程自动集成云数据库SDK
DevEco Studio为云侧工程自动集成云数据库最新版本Node.js Server SDK。
“cloudfunctions > 函数目录名 (如下图idgenerator)> package.json”:自动引入云数据库最新版本的Node.js Server SDK。
端云一体化开发工程介绍
端云一体化开发工程目录分为三个子工程:端开发工程(Application)、云开发工程(CloudProgram)、端侧公共库(External Libraries)。
端开发工程(Application)
端开发工程主要用于开发应用端侧的业务代码,端开发工程目录结构请参见HarmonyOS工程介绍。
云开发工程(CloudProgram)
在云开发工程中,您可为您的应用开发云函数和云数据库服务资源。云开发工程目录结构如下图所示:
- clouddb:云数据库工程目录。
○ dataentry:用于存放数据条目文件。
○ objecttype:用于存放对象类型文件。
○ db-config.json:模块配置文件,主要包含云数据库工程的配置信息,如默认存储区名称、默认数据处理位置。
- cloudfunctions:云函数工程目录。默认自动创建一个示例函数“idgenerator”,如上图所示。您可按需使用。
- node_modules:包含了所有第三方依赖。
- cloud-config.json:云开发工程配置文件,包含应用名称与ID、项目名称与ID、启用的数据处理位置、支持的设备类型等。
- package.json:定义了TypeScript公共依赖。
- package-lock.json:记录当前状态下实际安装的各个npm package的具体来源和版本号。
端侧公共库(External Libraries)
端侧公共库中包含了JDK的扩展类库。