针对鸿蒙端云一体化无法跑在模拟器的解决方案
全文省流版
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 。在项目检出到本地之后,做如下步骤接入自己的项目:
- File -> New -> Import -> Import Module 选择HWServerlessRest根目录
- 在entry模块的oh-package.json5中添加dependencies
"dependencies": {
"serverless_rest": "file:../HWServerlessRest"
}
- 在AGC后台,认证服务中开通匿名账号服务。
- 对AuthInfo和QueryInfo进行全局参数配置。
- 在AGC后台,进入项目设置,找到Client ID,Client Secret,项目 ID(对应AuthInfo.productID)。
- 在云数据库->对象类型中获取版本号(对应QueryInfo.schemaVersion)。
- AuthInfo.phone设置为开发者的华为账号用户名,用手机或者邮箱。
- 配置完成之后即可沿用官方SDK的用法进行API的访问。
运行测试用例
本项目也提供了一些测试用例,由于项目的特殊性,需要配合AGC后台的数据来完成。运行测试用例前我们首先要配置一下AGC后台。
- 把beans目录复制到工程下的entry/src/main/ets
- 在AGC后台进入云数据库
- 把对象类型导入,在仓库目录中,选择extra/database/schema.json
- 创建存储区QuickStartDemo
- 在数据页点击三个点,选择导入。文件选择extra/database/data.json。
总结
希望这个仓库对大家的端云开发带来方便,也希望同道中人可以一起来共建。谢谢大家。
- 0回答
- 0粉丝
- 3关注
- HarmonyOSNext 端云一体化(1)
- HarmonyOSNext 端云一体化(6)
- HarmonyOSNext 端云一体化(4)
- HarmonyOSNext 端云一体化(5)
- HarmonyOS Next 端云一体化(2)
- HarmonyOS Next 端云一体化(3)
- 鸿蒙5.0如何快速接入端云一体化的认证服务
- 【HarmonyOS Next开发】端云一体化初始化项目
- 【HarmonyOS】鸿蒙端云一体化开发入门详解 (一)
- 初步认识HarmonyOS NEXT端云一体化开发
- 工程创建流程. 创建端云一体化工程:
- DevEco Studio创建端云一体化工程全攻略
- 鸿蒙端云一体化开发的完整流程及关键依赖整理,涵盖工程创建、依赖配置、云函数调用等核心步骤
- HarmonyOS Text组件Span间距解决方案
- 鸿蒙Flutter实战:12-使用模拟器开发调试