【HarmonyOS】元服务卡片本地启动拉起加桌没问题,上架后拉起加桌时卡片展示异常

发布时间 2023-11-22 10:24:21作者: Mayism123
【关键字】

加桌选卡展示异常 、 2卡共用一个布局 、 代码混淆

 

【问题现象】

元服务卡片在本地启动拉起加桌时,多卡的选卡过程显示是没问题的。但是在上架后拉起加桌时,多卡的选卡过程卡片展示异常。

代码逻辑是通过创建卡片的时候判断卡片的尺寸大小,显示对应的卡片。

当前异常的卡片是小卡片样式问题。

cke_361.png

【问题分析】

  1. 排查系统版本是怎么获取的。

    cke_4550.png

    获取系统版本代码是正确的。

  2. 检查样式和尺寸的代码判断逻辑是否正确。

    因为本地编辑器启动后体验是没问题的。

  3. 检查加桌卡片与元服务的最新版本是否一致,即同步更新了。

    从加桌弹框的右上角检查确认卡片和元服务都是最新的版本号。

  4. 排查卡片生成逻辑。

    下图onCreateFrom就是卡片生成逻辑。

    cke_9081.png​​

  5. 抓取上架后的日志检查这段判断代码逻辑是否存在。

    打开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包解决此问题。