在使用華為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