HarmonyOS鸿蒙Next端云一体化开发如何入门,请提供详细的集成使用解释和源码

HarmonyOS鸿蒙Next端云一体化开发如何入门,请提供详细的集成使用解释和源码

鸿蒙端云一体化是什么?有什么作用?开发如何入门,请提供详细的集成使用解释和源码

3 回复

一、结论

1、端云一体化开发是什么? 端云一体化开发是HarmonyOS基于DevEco Studio,以Cloud Foundation Kit(云开发服务)为底座,实现端侧(应用/元服务)与云侧(云端服务)在同一工具内协同开发的模式。

开发者通过云开发工程模板快速创建工程,同步完成两端代码开发、调试,并一键部署云侧工程至AGC云端,最终实现端云联动,聚焦业务逻辑、降本增效。

2、端云一体化开发与传统开发对比

区别点 传统开发模式 端云一体化开发模式
开发工具 端侧与云侧需各自工具,需自建服务器,成本高 仅需DevEco Studio,无需搭建服务器,成本低
开发人员 需不同语言技能,多人协作,沟通成本高、效率低 端侧开发者可开发云侧代码,门槛低,人力少
运维 需自建运维能力,成本高、负担重 接入Cloud Foundation Kit,免运维

3、端云一体化开发核心原理

DevEco Studio目前提供通用云开发模板 ([CloudDev]Empty Ability),基于Cloud Foundation Kit搭建基础演示项目(无业务属性),可用于学习基础开发流程,后续可删除预置代码。 端云一体化开发提供的场景化模板,包含预置代码和资源文件,通过工程向导即可快速创建开发工程。

(1)端云一体化开发: 在DevEco Studio内同步开发端侧业务代码与云侧服务代码,支持云侧工程一键部署至AGC云端。

(2)Cloud Foundation Kit支撑: 云侧工程接入该工具,可按需使用云函数、云数据库、云存储等服务,具备开箱即用、一键部署、自动弹性伸缩、免运维等特点。

二、代码实现和详细解释

首先在AGC平台创建端云一体化开发应用: 这步非常重要,后续IDE创建项目,需要和AGC平台创建好的应用进行绑定。所以要先在AGC平台进行端云一体化开发应用的创建!

// AGC平台地址:
https://developer.huawei.com/consumer/cn/service/josp/agc/index.html

2、在IDE创建端云一体化开发模板项目: 打开工程创建向导(欢迎页“Create Project”或菜单栏“File > New > Create Project”),在“Application”页签选择通用云开发模板([CloudDev]Empty Ability),点击“Next”。

IDE - Create Project - Application - [CloudDev Emptry Abiltiy ] 这里我以应用开发举例,元服务操作是类似的。

3、设置模板项目相关配置: 这里需要注意模板项目只能选择手机。并且是否开启云开发,默认是开,不能修改。其他都是很常见的属性,就不展开了。包名要和AGC平台上一致。

cke_9977.png

4、绑定本地项目和AGC项目: 这步骤非常关键,是对于刚才我们在AGC平台创建的项目,进行绑定。 如下图所示,会显示你登陆在IDE上的账号。根据项目包名,会对应显示AGC平台上项目应用的信息。

cke_8935.png

5、数据处理位置配置: 项目必须启用中国站点(云服务资源默认部署至此),可在AGC修改配置。

我们看到上图最下方提示,要在AGC平台配置数据所在地,目前端云一体化开发只能在国内。我们点击蓝字跳转过去即可。进入到AGC控制台,针对数据处理位置进行勾选后保存即可。

如果你的包名,没有在AGC平台上进行配置,会显示如下图:

cke_13547.png

以上步骤都完成后,项目就创建成功了,会自动install相关的云开发依赖。 DevEco Studio自动同步工程,端侧执行“ohpm install”、云侧执行“npm install”下载依赖

二、DEMO运行效果

cke_17760.png

鸿蒙端云一体化应用的主入口页面,主要实现了一个导航菜单,用于展示和访问 Cloud Foundation Kit 提供的三大核心云服务:云函数、云数据库和云存储。下面是添加详细注释后的代码:

import { CloudDb } from './CloudDb/CloudDb';  // 导入云数据库功能组件
import { DbInsert } from './CloudDb/DbInsert';  // 导入数据库插入操作组件
import { CloudFunction } from './CloudFunction';  // 导入云函数功能组件
import { CloudStorage } from './CloudStorage';  // 导入云存储功能组件

/**
 * 应用主入口组件
 * 展示端云一体化功能导航菜单,通过按钮跳转到不同的云服务演示页面
 */
@Entry
@Component
struct Index {
  // 提供导航路径管理,用于页面间的导航切换
  @Provide('pathStack') pathStack: NavPathStack = new NavPathStack();

  /**
   * 路径映射构建器
   * 根据路由名称渲染对应的云服务组件
   * @param routeName - 路由名称
   */
  @Builder
  pathMap(routeName: string) {
    if (routeName === 'CloudFunction') {
      CloudFunction();  // 渲染云函数演示页面
    } else if (routeName === 'CloudDb') {
      CloudDb();  // 渲染云数据库演示页面
    } else if (routeName === 'CloudStorage') {
      CloudStorage();  // 渲染云存储演示页面
    } else if (routeName === 'DbInsert') {
      DbInsert();  // 渲染数据库插入操作页面
    }
  }

  /**
   * 主页按钮构建器
   * 创建具有统一样式的导航按钮,点击后跳转到对应云服务页面
   * @param title - 按钮标题资源
   * @param description - 按钮描述资源
   * @param routeName - 目标路由名称
   */
  @Builder
  homeButton(title: Resource, description: Resource, routeName: string) {
    Button({ type: ButtonType.Normal, stateEffect: true }) {
      Column() {
        Text(title)  // 按钮标题
          .fontSize($r('app.float.body_font_size'))
          .margin({ bottom: $r('app.float.number_5'), top: $r('app.float.number_5') })
          .fontWeight(FontWeight.Bold)
        Text(description)  // 按钮描述
          .textAlign(TextAlign.Center)
          .fontSize($r('app.float.body_font_size'))
          .margin({ bottom: $r('app.float.number_5') })
      }
      .width('100%')
    }
    // 按钮样式设置
    .borderRadius($r('app.float.number_5'))
    .margin($r('app.float.number_10'))
    .borderWidth($r('app.float.number_1'))
    .borderColor($r('app.color.body_color'))
    .fontColor($r('app.color.body_color'))
    .backgroundColor($r('app.color.start_window_background'))
    .width('96%')
    .onClick(() => {
      // 点击按钮时,将目标路由压入路径栈实现页面跳转
      this.pathStack.pushPathByName(routeName, null);
    })
  }

  /**
   * 组件构建函数
   * 构建应用主界面,包含导航栏和云服务功能按钮
   */
  build() {
    Navigation(this.pathStack) {  // 使用导航组件管理页面栈
      Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center }) {
        Text($r('app.string.main_page_title'))  // 应用主标题
          .width('100%')
          .fontSize($r('app.float.main_title_font_size'))
          .textAlign(TextAlign.Center)
          .fontColor($r('app.color.body_color'))
          .margin({ bottom: $r('app.float.number_10') })
        
        // 创建云函数导航按钮
        this.homeButton($r('app.string.cloud_function_title'), $r('app.string.cloud_function_description_main'),
          'CloudFunction');
        // 创建云数据库导航按钮
        this.homeButton($r('app.string.cloudDB_label'), $r('app.string.cloud_db_description_main'),
          'CloudDb');
        // 创建云存储导航按钮
        this.homeButton($r('app.string.cloudStorage_label'), $r('app.string.cloud_storage_description_main'),
          'CloudStorage');
      }
      .height('100%')
      .width('100%')
      .padding($r('app.float.number_10'))
      .backgroundColor($r('app.color.start_window_background'))
    }
    .hideTitleBar(true)  // 隐藏标题栏
    .navDestination(this.pathMap)  // 设置导航目标映射
  }
}

更多关于HarmonyOS鸿蒙Next端云一体化开发如何入门,请提供详细的集成使用解释和源码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙Next端云一体化开发入门需使用DevEco Studio 4.0及以上版本,创建支持云开发的工程。在工程中配置云服务依赖,通过AGC控制台开通云数据库、云函数等服务。在代码中引入@hw-agconnect云服务SDK,调用云数据库API进行数据操作,使用云函数处理业务逻辑。源码示例可在华为开发者联盟官网的“端云一体化开发”文档中获取,包含云数据库增删改查及云函数调用范例。

鸿蒙端云一体化开发

鸿蒙端云一体化开发是HarmonyOS Next的核心能力之一,它旨在简化应用开发中前端(设备端)与后端(云服务)的集成,让开发者能够使用一套统一的API、开发范式和工具链,高效构建跨端、云原生的全场景应用。

核心概念与作用

  1. 统一开发体验:通过端云一体化开发套件(Cloud Development Kit, CDK),开发者可以使用ArkTS/TypeScript这一种语言,同时编写设备端和云端的业务逻辑。这打破了传统开发中需要组建前端、后端不同技术栈团队的壁垒。
  2. 数据与逻辑无缝协同:它提供了声明式的数据模型和API,使得设备端的数据能够自动与云端同步(如云数据库),设备端可以像调用本地函数一样直接调用云函数(Serverless Function),极大简化了网络通信、数据持久化和业务逻辑实现的复杂度。
  3. 高效运维部署:提供从本地开发调试到一键部署上云的完整工具链(如DevEco Studio中的云模板、云调试、云部署)。开发者无需关心服务器配置、扩容等基础设施问题,可以聚焦业务创新。

入门步骤与集成解释

1. 环境准备与项目创建

  • 安装DevEco Studio:确保使用支持HarmonyOS Next及端云一体化开发的版本(如4.1 Release或更高版本)。
  • 配置开发者账号与实名认证:在AppGallery Connect中创建项目并启用相关云服务(如认证服务、云数据库、云函数等)。
  • 创建端云一体化应用:在DevEco Studio中,选择创建新工程,应用模型选择“Stage”,并勾选“Enable Super Visual”和“Enable Cloud Development”。在项目模板中,强烈推荐选择带有“Cloud”标识的模板,例如“Cloud DB Demo”或“Cloud Program”。这些模板已预设了端云一体化的基本工程结构和配置。

2. 核心模块集成与使用解释

一个典型的端云一体化应用主要涉及以下几个部分,以下以云数据库和云函数为例说明:

  • A. 定义端云一体化数据模型entry/src/main/ets目录下(或共享件目录),创建.ets文件定义数据模型。这个模型会同时在端侧和云侧生效。

    // 示例:User.ets - 定义一个用户对象模型
    import { cloud, field, primaryKey } from '@kit.CloudServicesKit'; // 关键导入
    
    @cloud // 关键装饰器,声明此类为端云一体化对象
    export class User {
        @primaryKey // 声明为主键
        userId: string = '';
    
        @field // 声明为数据字段
        userName: string = '';
    
        @field
        age: number = 0;
    
        constructor(partial?: Partial<User>) {
            if (partial) {
                Object.assign(this, partial);
            }
        }
    }
    
  • B. 初始化云数据库并操作数据 在UI页面或业务逻辑中,初始化并操作云数据库。

    // 示例:在页面中初始化并查询数据
    import { cloud, cloudData } from '@kit.CloudServicesKit';
    import { User } from '../model/User'; // 导入上面定义的模型
    
    @Entry
    @Component
    struct Index {
        private cloudStore: cloud.CloudData<cloud.CloudDBZone> | null = null;
        @State userList: User[] = [];
    
        aboutToAppear() {
            // 1. 获取云数据库实例
            this.cloudStore = cloudData.getCloudData();
            // 2. 打开指定的云数据库区域
            this.cloudStore.openCloudDBZone({
                zoneName: 'quickStartZone',
                persistence: false
            }).then(zone => {
                // 3. 执行查询:查询所有User对象
                let query = cloud.CloudDBQuery.query(User);
                zone.executeQuery(query).then(result => {
                    this.userList = result;
                }).catch(err => {
                    console.error('Query failed: ' + JSON.stringify(err));
                });
            }).catch(err => {
                console.error('Open zone failed: ' + JSON.stringify(err));
            });
        }
    
        // 插入数据示例函数
        private insertUser(user: User) {
            if (this.cloudStore && this.cloudStore.getCloudDBZone()) {
                this.cloudStore.getCloudDBZone()?.executeUpsert(user).then(() => {
                    console.info('Insert success');
                }).catch(err => {
                    console.error('Insert failed: ' + JSON.stringify(err));
                });
            }
        }
        // UI构建...
    }
    

    设备端执行插入、查询等操作后,数据会自动同步至云端数据库,其他绑定同一用户/设备组的设备也能实时看到更新。

  • C. 创建与调用云函数

    • 创建云函数:在项目cloudfunctions目录(由云模板创建)下,可以创建新的云函数文件,例如getServerTime.ets。其本质也是一段ArkTS代码,但运行在云端。

      // cloudfunctions/getServerTime.ets
      import { cloudFunc, CloudFuncContext } from '@kit.CloudServicesKit';
      
      export async function main(ctx: CloudFuncContext): Promise<void> {
          ctx.response.setBody({
              serverTime: new Date().toISOString()
          });
      }
      
    • 设备端调用云函数

      import { cloudFunc } from '@kit.CloudServicesKit';
      
      // 调用名为'getServerTime'的云函数
      cloudFunc.callFunction({
          name: 'getServerTime',
          data: {} // 可传递参数
      }).then(response => {
          console.info('Server time: ' + JSON.stringify(response));
      }).catch(err => {
          console.error('Call function failed: ' + JSON.stringify(err));
      });
      

3. 调试与部署

  • 本地调试:DevEco Studio提供了本地云函数调试和端云协同调试能力。可以在本地运行并模拟调用云函数和云数据库操作。
  • 一键部署:开发完成后,通过DevEco Studio的“Build > Build & Release to Cloud”菜单,可以将云函数、云数据库Schema等资源一键打包部署到AppGallery Connect的云环境中。

源码获取

最直接、最权威的源码和学习资源来自官方:

  1. DevEco Studio内置模板:创建项目时选择的“Cloud DB Demo”等模板,本身就是完整可运行的端云一体化源码,这是最好的起点。
  2. HarmonyOS Sample仓库:访问Gitee上的官方HarmonyOS应用示例仓库(https://gitee.com/harmonyos/applications_app_samples),搜索“CloudDB”、“CloudFunction”等关键词,可以找到丰富的、针对特定场景的示例代码。
  3. Codelabs与指南:参考华为开发者联盟官网的“文档 > HarmonyOS应用开发”部分,其中的“端云一体化开发”章节提供了从基础到进阶的详细教程和代码片段。

总结:入门HarmonyOS Next端云一体化开发,关键在于利用好DevEco Studio的云项目模板,理解@cloud@field等装饰器定义的数据模型,掌握cloudDatacloudFunc模块对云数据库和云函数的操作。从官方模板和示例代码入手,结合本地调试,可以快速上手这一高效的全场景应用开发范式。

回到顶部