欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python如何提取APK图标

程序员文章站 2022-04-22 09:16:44
有个需求,需要提取1000个APK的图标,最开始的想法通过Apktools对APK进行解压,再获取图标,由于Apktools解压APK比较耗时,这个办法就被弃用。通过分析找到一个快...

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

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

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

2、通过Python zipfile提取图标

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


代码实现

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

#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\temp\目录下生成了图标文件icon.png
Python如何提取APK图标