minSdkVersion 26的Android应用能否仅使用自适应图标?
关于minSdk 26应用仅保留自适应图标的可行性说明
当应用minSdkVersion设置为26时,从AOSP原生规范层面,完全可以移除所有适配低版本的位图图标资源,仅保留自适应图标,但实际开发中需要处理厂商定制ROM的Launcher兼容问题,你遇到的三星设备显示默认安卓机器人图标就是这类兼容问题。
资源存放规则
- 符合规范的自适应图标资源,确实应当存放在
mipmap-anydpi-v26目录下,目录内需要包含和清单文件配置对应的两个XML文件:- 普通自适应图标配置
ic_launcher.xml,内部定义图标前景、背景图层 - 圆形自适应图标配置
ic_launcher_round.xml
- 普通自适应图标配置
- 该目录的资源限定符表示:适配API 26及以上所有版本、任意屏幕密度的设备,资源优先级高于其他带密度限定的同名mipmap资源,不需要放到其他密度拆分的mipmap目录中。
三星设备显示默认机器人图标的原因
这个问题和Android系统版本对自适应图标的支持度无关,是三星旧版One UI Launcher的已知兼容bug:
部分版本的三星Launcher在读取应用图标时,不会主动解析anydpi-v26下的XML格式自适应图标,只要应用没有提供任何位图格式(PNG/WebP)的同名图标资源,就会直接fallback到系统默认的安卓机器人图标。同类bug在早年的华为EMUI、小米MIUI版本中也出现过,和系统API等级无关,属于厂商定制Launcher未遵循AOSP实现规范导致的问题。
可落地的最优方案
不需要保留Image Asset Studio生成的全密度旧版图标资源,用最小成本即可兼顾包体积和兼容:
- 保留
mipmap-anydpi-v26目录下的全套自适应图标XML配置及对应的前景、背景资源,作为符合规范的Launcher的主力图标资源 - 额外在
mipmap-xxhdpi目录下,放置一张和自适应图标最终显示效果一致的PNG格式备用图标,同时提供普通和圆形两个版本,文件名和清单配置的ic_launcher、ic_launcher_round保持一致即可,不需要为所有屏幕密度切分图标,系统会自动缩放这张兜底图给存在兼容bug的Launcher调用 - 可以直接删除Image Asset Studio生成的mdpi、hdpi、xhdpi、xxxhdpi等其他密度目录下的旧版图标资源,不会影响正常显示,还能缩减包体积
排查提示:记得检查
AndroidManifest.xml中的android:icon和android:roundIcon两个属性,确保都正确指向了对应的图标资源,漏配roundIcon也是触发定制Launcher图标显示异常的常见原因。
内容的提问来源于stack exchange,提问作者Gober
相关产品推荐
相关产品推荐

