针对鸿蒙端云一体化无法跑在模拟器的解决方案

2025-09-15 12:11:12
112次阅读
0个评论

全文省流版

HWServerlessRest已开源,欢迎一起共建。项目地址:https://gitcode.com/nutpi/HWServerlessRest。

视频说明:https://www.bilibili.com/video/BV1ospAzGE5s/

引言

鸿蒙开发领域有一项特性叫做端云一体化。这个功能由华为云业务赋能。比起传统做法,我们在为App搭建后台服务器的时候手动搭建费时费力。但实用华为云的Serverless服务,我们只需要在网页后台做一些相关配置即可让App访问服务器数据。

痛点

官方为鸿蒙提供了相关的SDK,供App与Serverless进行交互。但是官方SDK由一个致命的痛点,一直没有解决。在模拟器与真机的差异文档中明确提示了**Cloud Foundation Kit(云开发服务)**不支持模拟器。这使我们在开发调试以及为App做回归测试的时候,造成了很大的限制。

image-20250915095036494

如何解决这个痛点?我们可以换一个思路。虽然官方的SDK不能支持模拟器,但与服务器数据交换的本质最终是通过网络的。没错,Serverless为不同平台提供了不同的访问方式,其中就有Rest API(其本质就是Http)。

验证

我们先从云数据库入手,通过官方文档的指示,拼接Http请求参数,顺利得以登录以及查询到数据库。

image-20250915095549281

之后,我们需要对方法进行封装,使之与官方SDK提供的API一致。这样,我们在项目中使用的时候就可以灵活切换官方SDK和HWServerlessRest。

image-20250915100314003

我们取一段测试用例的代码。可以看到,实际调用方法的时候,用法和官方的SDK是一摸一样的。 image-20250915112130487

如何接入HWServerlessRest

该模块已经开源,项目地址:https://gitcode.com/nutpi/HWServerlessRest 。在项目检出到本地之后,做如下步骤接入自己的项目:

  1. File -> New -> Import -> Import Module 选择HWServerlessRest根目录
  2. 在entry模块的oh-package.json5中添加dependencies
"dependencies": {
    "serverless_rest": "file:../HWServerlessRest"
  }
  1. 在AGC后台,认证服务中开通匿名账号服务。
  2. 对AuthInfo和QueryInfo进行全局参数配置。
  3. 在AGC后台,进入项目设置,找到Client ID,Client Secret,项目 ID(对应AuthInfo.productID)。
  4. 在云数据库->对象类型中获取版本号(对应QueryInfo.schemaVersion)。
  5. AuthInfo.phone设置为开发者的华为账号用户名,用手机或者邮箱。
  6. 配置完成之后即可沿用官方SDK的用法进行API的访问。

运行测试用例

本项目也提供了一些测试用例,由于项目的特殊性,需要配合AGC后台的数据来完成。运行测试用例前我们首先要配置一下AGC后台。

  1. 把beans目录复制到工程下的entry/src/main/ets
  2. 在AGC后台进入云数据库
  3. 把对象类型导入,在仓库目录中,选择extra/database/schema.json
  4. 创建存储区QuickStartDemo
  5. 在数据页点击三个点,选择导入。文件选择extra/database/data.json。

总结

希望这个仓库对大家的端云开发带来方便,也希望同道中人可以一起来共建。谢谢大家。

收藏00

登录 后评论。没有帐号? 注册 一个。