嗯哼玮
嗯哼玮
3月前 · 6 人阅读

有个需求,需要提取1000个APK的图标,最开始的想法通过Apktools对APK进行解压,再获取图标,由于Apktools解压APK比较耗时,这个办法就被弃用。通过分析找到一个快的方法,步骤如下(window系统):

1、通过aapt工具,提取图标在APK中路径**

aapt工具在android_sdk的build-tools27.0.2目录
然后随便找一个APK命令为test.apk,执行aapt dump badging test.apk命令,会发现输出有一部分内容如下:
这里写图片描述
接下来通过findstr命令提取application-icon-120这一行,图标的路径为r/a6/icon.png
这里写图片描述

2、通过Python zipfile提取图标

步骤1已经获取了图标在APK中的路径,通过Python的zipfile库,将APK的图标保存到本地。


代码实现

将aapt.exe拷贝到H:Python emp目录


#coding=utf-8
import os
import zipfile

def parse_icon(filePath):

    cmd = "H:\Python\temp\aapt.exe dump badging %s | findstr application-icon-120" % filePath

    output = os.popen(cmd).read()
    print output

    iconPath = output[22:len(output) - 2]
    print iconPath

    zip = zipfile.ZipFile(filePath)
    iconData = zip.read(iconPath)

    saveIconName = "H:\Python\temp\icon.png";

    with open(saveIconName,'w+b') as saveIconFile:
        saveIconFile.write(iconData)

    parse_icon("H:\Python\appstore\test.apk")

执行完就会发现,在H:Python emp目录下生成了图标文件icon.png
这里写图片描述

收藏 0
关键词: 图标 apk icon python aapt temp
评论