You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用aapt dump badging获取低版本SDK应用图标遇阻,求解决方案

我之前也踩过这个坑!Android 8引入自适应图标后,aapt dump badging确实会默认优先输出mipmap-anydpi-v26里的XML配置,完全忽略了低版本的PNG图标,而且你试的--max-res-version 25没效果也不是操作错了,是这个参数的逻辑和我们预期的不一样。下面给你几个可行的解决方案:

解决方法

方法一:用aapt2 dump resources精准定位低版本图标

aapt2比旧版aapt在资源查询上更灵活,你可以直接指定资源类型、密度限定符来过滤出低版本的PNG图标:

比如要获取hdpi密度的启动图标,执行:

aapt2 dump resources your_app.apk --package com.your.app.package --type mipmap --density hdpi

在输出结果里,找到名称为ic_launcher(或者你的应用图标实际名称)的条目,里面会显示对应的资源文件路径,类似这样:

resource mipmap/ic_launcher: flags=0x00000000
config: hdpi
sourceFile: res/mipmap-hdpi-v4/ic_launcher.png

这样你就能直接定位到低版本的PNG图标资源了。如果要找其他密度的图标,把--density hdpi换成mdpi、xhdpi等即可。

方法二:直接解压APK提取图标(简单粗暴)

如果不想折腾命令行,直接用解压工具(比如unzip或者7-Zip)把APK解压,然后进入res目录,找mipmap-xxxhdpi、mipmap-xxhdpi等不带-v26后缀的文件夹,里面的ic_launcher.png就是低版本SDK对应的图标。

补充:为什么--max-res-version 25没用?

这个参数是用来过滤带有SDK版本限定符的资源(比如res/mipmap-hdpi-v26),但低版本的PNG图标通常放在res/mipmap-hdpi(不带版本后缀)里,而自适应图标的XML在res/mipmap-anydpi-v26——理论上--max-res-version 25应该排除它,但实际aapt dump badging在输出时,还是会优先选择自适应图标的配置,哪怕你指定了版本限制,这算是aapt的一个小坑。

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:45:26