小部件适配常见问题Q&A更新时间: 2024-10-17 11:12:00

一、产品设计规范类问题

1、小米小部件与安卓原生组件有什么区别,入口一样吗?

答:小米小部件是在安卓原生组件的基础上,对产品设、技术进行了一定的规范,赋予了小部件一些专属能力,例如曝光刷新、实时动态、负一屏和桌面相互拖拽等能力。

小米小部件入口:手机安装相应版本的APP,桌面双指捏合/负一屏“+”可直接进入小部件中心,下滑或搜索看到小部件。

安卓原生组件入口:各家厂商都支持展示安卓原生组件,只是每家展示入口不一样。

特别说明:小米小部件展示在小部件中心以后,安卓原生组件池里就不会显示这个小部件。例如,当您上线了A、B、C三个组件,A是按照小米小部件规范开发的,B与C是安卓原生组件,那么在小米系统里的展示规律是,小部件中心只显示A组件,不会显示安卓原生B、C组件。

2、圆角适配问题

答:圆角主要适配两个分辨率:1440x3200(2k屏)适配:values-sw411dp/demin 14.48dp;其他分辨率适配: values/dimen 12.67dp

备注 :圆角设计规范:2k屏 是50px 对应的dp为50/3.5,其他分辨率为38x 对应dp为38/3

详细设计规范可查看《小部件规范》

3、圆角适配常见问题

答:预览图是用于展示在小部件中心的一张静态图,预览图圆角统一为38px,不区分机型和分辨率。

4、深色模式必须适配吗?

答:深色模式必须适配

5、多语言必须适配吗?

答:建议跟随主应用适配多语言里的部分或全部语言,需要注意维吾尔族语言,如果不适配,与汉语形式保持一致即可。

二、技术规范类问题

1、为什么我在xml中配置的minHeight是110dp,最终展示的高度却不是110dp?

答:xml中appwidget-provider标签下配置的minHeight仅仅用来计算该Widget在Y轴方向应当占用的格子数,与最终展示高度没有直接关系(minWidth同理)。

格子计算规则:假设在桌面上一个格子的规格是70x80dp,则该widget最终展示高度为:Math.ceil(110/80)*80-paddings,注意不要与AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT混淆

2、小部件最终展示尺寸为什么跟设计稿不一致?

:由于不同设备分辨率不同,桌面支持不同的网格模式,是否使用虚拟按键等原因,小部件最终展示并没有按绝对尺寸实现,会在不同情况下进行自适应,所以跟设计稿有一定出入;业务需要根据情况进行自适应。

备注:适配时可参考《小部件规范》-「小部件设计规范」、《小米小部件技术规范与系统能力说明》-「小部件技术规范和要求」、《小米Widget适配建议及示例》。

3、为什么老版本桌面切换深色模式时会有options变化回调,新版本没有?

答:新版本上考虑到options回调会拉起三方进程,为了避免,深色模式切换时采用新的方法实现,宿主(桌面/负一屏)会缓存RemoteViews,切换时会用上一次的RemoteViews重建widget;

注意:该方案要求只能在xml中静态适配深色模式,不支持在RemoteViews通过代码设置或切换深色模式。

三、审核及验收类问题

1、Widget 进程内存大如何优化

  • 混淆应用(效果明显)
  • Application 针对 Widget 进程进行优化,Widget 进程只加载Widget 需要逻辑(效果明显)
  • 无用内存及时释放
  • 减少三方库的引用
  • 减少包体积

2、如何排查手机重启小部件加载慢是否由于系统导致

  • 开发者选项里打开时间悬浮
  • 将问题小部件所在屏设置为主屏(长按桌面->设置主屏)。关机重启,该过程用另一台手机录制,便于后面用日志分析现象。
  • 拨号界面输入#*#284#*# 获取284 日志
  • 284日志中查找 “ widgets:" 知道问题widget 的id
  • 284日志中查重“Historical broadcasts [foreground]:” 和上一步的id 获取问题 广播时间
  • 对比广播发出时间和录像中的时间,若广播在加载出来前1~2秒才发出,则为系统问题,反之不是。

3、如何排查手机重启小部件加载慢问题

  • 排查是否和系统相关
  • 排查是否有耗时操作
  • 排查是否和授权有关
  • 添加缓存,防止网络请求过长,卡片长时间空白

4、小部件尺寸不符合预期

  • 小部件minWidth 和minHeight 是否按技术文档配置(无需关注产品设计中的尺寸规范)。
  • 小部件背景是否透明padding

5、应用正常发版,小部件需要跟着发版每次提交审核吗

  • 适配了小部件版本号后,如果小部件没有改动,应用发版后,不用在提交小部件审核,如果没有适配小部件版本号,每次应用发版需要提交小部件审核,否则,线上就会看不到小部件了。

6、小部件审核和应用商店审核是否同步

  • 不同步进行,应用商店后台提交app,通过审核之后再去开发者平台提交小部件信息,如果小部件未审核通过,不影响应用发版。

四、其它问题

1、小部件为什么要运行于特殊的独立进程中?可以不可以运行在主进程中?

答:除了常驻进程,其他小部件原则上只能运行在Widget 进程中。为了给用户更好的体验,小米对原有的Widget 进行了改造,小部件运行在特殊进程中有利于管控和优化。

2、小米 Widget 会不会在其他手机上展示?需不需要兼容适配?

答:小米 Widget 是基于原生的 Widget,因此 Android 手机上都能会显示。小部件需要兼容小米旧版系统以及其他品牌手机,兼容方案可参考谷歌官方。

3、没有收到刷新广播怎么办?

  • 检测是否安装的最新开发环境
  • 小部件是否添加小米 Widget标识
  • 小部件是否配置了曝光刷新

4、未发布的小部件怎么从小部件中心添加到桌面上?

答:小部件中心展示的都是已通过审核正式上线的小部件,正在审核中的小部件无法在线上看到,测试环境下参考《三方适配全流程指导》,里面有自测方法

5、提测的时候邮件发不过去怎么办?

答:建议用个人邮箱发送,附件过大可以上传到网盘。

6、小部件开发完了合入应用之后是不是就能上架了?

答:开发完之后要走测试流程,测试环境审核通过之后,上传小部件开放平台,再次测试通过之后才能正常上架。

7、所有的系统都能使用小米小部件吗

答:只有中高端机型且升级到MIUI13版本及以上才拥有此功能,所以开发者需要准备的设备版本需要在MIUI13版本及以上。

8、自测过程中对静置功耗有疑问?

答:提测大礼包中给出了详细步骤和说明,例如静置功耗网络问题,4G和WiFi,不是二选一进行测试,而是都需要测试,报告里面也明确说明,严格按照里面的执行即可。

9、内存测试环境要求

答:内存测试需要在Linux环境下进行,请自行安装环境进行测试。

文档内容是否有帮助?
有帮助
无帮助