【關鍵字】
加桌選卡展示異常 、 2卡共用一個布局 、 代碼混淆
【問題現象】
元服務卡片在本地啟動拉起加桌時,多卡的選卡過程顯示是沒問題的。但是在上架后拉起加桌時,多卡的選卡過程卡片展示異常。
代碼邏輯是通過創建卡片的時候判斷卡片的尺寸大小,顯示對應的卡片。
當前異常的卡片是小卡片樣式問題。
【問題分析】
-
排查系統版本是怎么獲取的。
獲取系統版本代碼是正確的。
-
檢查樣式和尺寸的代碼判斷邏輯是否正確。
因為本地編輯器啟動后體驗是沒問題的。
-
檢查加桌卡片與元服務的最新版本是否一致,即同步更新了。
從加桌彈框的右上角檢查確認卡片和元服務都是最新的版本號。
-
排查卡片生成邏輯。
下圖onCreateFrom就是卡片生成邏輯。
?
-
抓取上架后的日志檢查這段判斷代碼邏輯是否存在。
打開ap log,抓取hdc日志,抓取日志后,解壓hiapplogcat開頭的日志,找到操作時間點,就能看到具體日志。
分析識別,在顯示更過服務卡片時,滑動到第三個卡片還是顯示1*2,不是應該的2*2,而且1*2樣式明顯與本地編輯器體驗不一樣。好像是因為1*2卡片顯示了2*2卡片的內容,導致了樣式問題。
現網日志分析后,應用沒有給卡片提供mini數據導致view顯示不對,日志并未顯示“MainAbility-更新卡片...”那行打印,導致mini數據并未生效,繼續分析代碼,初步判斷是onCreateFrom中這行日志上方部分代碼導致更新數據未生效因為1*2卡片沒有收到數據,所以沒有任何更新,可能走到了默認下方mini false值里面去加載view。
【解決方案】
最終通過現網app包與debug包的日志結合代碼進行分析調試,識別由于release包沒有添加混淆導致onCreateForm傳遞卡片mini數據時失敗,并且兩張卡片是同一個布局加載的,沒有獲取到數據導致兩張卡片走的同一個布局,顯示有誤。將debug包打開混淆復現此問題,添加keep混淆后,debug包解決此問題。