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

大黑布林李子
发布于 2025-9-15 11:18
浏览
1收藏

全文省流版

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

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

引言

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

痛点

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

针对鸿蒙端云一体化无法跑在模拟器的解决方案-鸿蒙开发者社区

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

验证

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

针对鸿蒙端云一体化无法跑在模拟器的解决方案-鸿蒙开发者社区

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

针对鸿蒙端云一体化无法跑在模拟器的解决方案-鸿蒙开发者社区

我们取一段测试用例的代码。可以看到,实际调用方法的时候,用法和官方的SDK是一摸一样的。
针对鸿蒙端云一体化无法跑在模拟器的解决方案-鸿蒙开发者社区

如何接入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。

总结

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

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2025-9-15 11:22:13修改
2
收藏 1
回复
举报
1条回复
按时间正序
/
按时间倒序
wangKirk
wangKirk

乔老师威武霸气,简直神了,这库太赞了

回复
2025-9-16 09:39:42
回复
    相关推荐