从 Android apk 中提取自适应启动器图标作为 svg/png?

问题描述 投票:0回答:1

有没有办法提取apk文件的启动器图标,即使它是自适应图标(矢量可绘制)? 我找不到单个批处理或 python 脚本来实现此目的。

有很多使用 aapt 的脚本,但它们都只适用于 png 文件。

注意:我不想在 Android 设备本身上运行它。

android vector icons apk extract
1个回答
0
投票

我找到了一种使用 aapt 甚至从混淆的 apk 中获取位图的方法(其中所有重命名的图像都位于根“res”文件夹中):

  1. 获取应用程序清单中指定的图标路径:

aapt 转储徽章 [apk] | grep“应用程序:”

application: label='Total Commander' icon='res/2r.xml' banner='res/BO.png'

如果是xml,那么我们需要更深入。

  1. 转储资源以查找该图标的资源 ID,使用 grep 过滤输出,取前一行:

aapt dump --values 资源 [apk] | grep“res/2r.xml”-B1

    resource 0x7f0b0000 com.ghisler.android.TotalCommander:mipmap/icon: t=0x03 d=0x00000322 (s=0x0008 r=0x00)
      (string8) "res/2r.xml"

因此,资源 ID 为 0x7f0b0000。

  1. 搜索此资源 ID,在每个条目中使用其真实路径作为下一行:

aapt dump --values 资源 [apk] | grep "0x7f0b0000" -A1

      spec resource 0x7f0b0000 com.ghisler.android.TotalCommander:mipmap/icon: flags=0x00000500
      spec resource 0x7f0b0001 com.ghisler.android.TotalCommander:mipmap/icon_launcher_foreground: flags=0x00000500
--
        resource 0x7f0b0000 com.ghisler.android.TotalCommander:mipmap/icon: t=0x03 d=0x00000169 (s=0x0008 r=0x00)
          (string8) "res/vI.png"
--
        resource 0x7f0b0000 com.ghisler.android.TotalCommander:mipmap/icon: t=0x03 d=0x00000196 (s=0x0008 r=0x00)
          (string8) "res/0n.png"
--
        resource 0x7f0b0000 com.ghisler.android.TotalCommander:mipmap/icon: t=0x03 d=0x00000230 (s=0x0008 r=0x00)
          (string8) "res/cH.png"
--
        resource 0x7f0b0000 com.ghisler.android.TotalCommander:mipmap/icon: t=0x03 d=0x00000260 (s=0x0008 r=0x00)
          (string8) "res/_J.png"
--
        resource 0x7f0b0000 com.ghisler.android.TotalCommander:mipmap/icon: t=0x03 d=0x0000027a (s=0x0008 r=0x00)
          (string8) "res/PN.png"
--
        resource 0x7f0b0000 com.ghisler.android.TotalCommander:mipmap/icon: t=0x03 d=0x000002cb (s=0x0008 r=0x00)
          (string8) "res/41.png"
--
        resource 0x7f0b0000 com.ghisler.android.TotalCommander:mipmap/icon: t=0x03 d=0x000002fd (s=0x0008 r=0x00)
          (string8) "res/S2.png"
--
        resource 0x7f0b0000 com.ghisler.android.TotalCommander:mipmap/icon: t=0x03 d=0x00000322 (s=0x0008 r=0x00)
          (string8) "res/2r.xml"
  1. 使用最后一个位图条目(跳过“xml”),它将具有最佳质量(最高密度)。请注意,位图图标可以是其他格式(jpeg、webp)。
© www.soinside.com 2019 - 2024. All rights reserved.