在使用华为AGC云数据库服务,可能会遇到对象类型创建失败的问题,我总结了遇到该类问题可以按照以下思路分析解决,如果有朋友希望使用云数据服务,也可以查看我的上一篇文章。
问题相关日志
集成CloudDB的时候,经常会遇到对象类型创建失败的问题,典型的日志有:
1、提示ObjectType数量不匹配
NaturalBase: GenerateDiffSchemas: remove ObjectType is not supported. count of ObjectType is less than current
2、对象类型协商失败
E/NaturalBase: OpenNaturalStore: negotiate failed. W/AGConnectCloudDB: openCloudDBZone: failed to create or open a cloudDBZone.
3、scheme未同步
[NaturalCloudSyncModule][OnConnected]: negotiate schema. [PushMessageAndNotifyStoreCv] Schema is UnSynced
4、ObjectType版本已修改,但ObjectType未修改
E/NaturalBase: CreateObjectType: ObjectType version has changed, but ObjectType has not changed. E/AGConnectCloudDB: createObjectType: failed to create ObjectType into the AGCConnectCloudDB.
问题原因
出现这个问题,主要的原因就是你的Android的项目里,ObjectType版本对应的文件,与AGC云侧的对象类型不一致导致的。
AGC云侧的,可以在这边查看:
Android项目中,主要看ObjectTypeInfoHelper以及里面对应的Class。
问题解决三板斧:
1、在AGC云侧重新导出ObjectTypes
出现这个问题,最大的原因就是项目里面的ObjectType和云侧不一致导致的问题。这个时候就需要重新导出:
在AGC界面的 : 我的项目 – 构建 – 云数据库 路径下,点击对象类型页签,在版本后面选择你要导出的版本,然后点击导出。
导出的时候,选择JAVA – android 然后输入一个包名。
导出完成后,将zip中的文件,解压到你的项目路径下即可。
2、检查对应匹配的版本
对象类型文件中,有两个Version很重要,使用的时候也需要重点关注。 也就是ObjectTypeInfoHelper文件中的
1、 FORMAT_VERSION:需要和SDK版本相对应。
当导出的FORMAT_VERSION = 1时,请使用1.2.2以下版本的CloudDB的SDK,推荐使用1.2.1.301
当导出的FORMAT_VERSION = 2时,请使用新版本CloudDB的SDK,建议使用1.2.3.301。
2、 OBJECT_TYPE_VERSION
这个就是在AGC界面导出时,在ObjectType上选择的Version,这里一般导出无需修改。
3、端侧原本的应用,卸载以后再重新安装
如果你设备上之前安装过有问题的ObjectType,直接覆盖安装的话,手机上保留原本老应用的缓存。导致创建对象类型失败。
正确的操作步骤:
1、 重新打包应用,
2、 手动在设备上卸载原应用。
3、 将重新打包的应用安装到设备上调试
官网CloudDB文档中,关于对象类型的操作:
CloudDB Demo:
https://github.com/AppGalleryConnect/agc-android-demos/tree/master/acg-clouddb-demo-java
云数据库使用指导:
https://developer.huawei.com/consumer/cn/forum/topic/0202441049629310404?fid=0101271690375130218
原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0201441041702500387?fid=0101271690375130218
原作者:Mayism