应用场景
在不解压apk文件夹的情况下批量的从apk文件中提取出所有的so文件。这样你即不用使用apktool 这些工具令产生大量的中间文件,或者将apk的后缀变为.zip,然后在解压,节省了磁盘空间。
功能说明
提取出一系列的apk文件然后提取出它们中的所有so文件,按照apk的名字以及它们之前所在的文件夹进行存储。如下图所示:
代码实现
#!/usr/bin/env python # coding=utf-8 import zipfile import os path = "/home/chicho/test/test/" so_path="/home/chicho/test/test/so/" apklist=os.listdir(path) for APK in apklist: if APK.endswith(".zip"): portion = os.path.splitext(APK) apkname = portion[0] abs_so_path=os.path.join(so_path,apkname) #/so/apkname/ abs_zipAPK_path=os.path.join(path,APK) z = zipfile.ZipFile(abs_zipAPK_path,'r') solists=[] for filename in z.namelist(): if filename.endswith(".so"): sofileName = os.path.basename(filename) soSource = os.path.basename(os.path.dirname(filename)) ''' make a dir with the source(arm?mips) ''' storePath=os.path.join(abs_so_path,soSource) # e.g. /.../so/apkname/mips/ if not os.path.exists(storePath): os.makedirs(storePath) ''' copy the xxx.so file to the object path ''' newsofile=os.path.join(storePath,sofileName) f = open(newsofile,'w') f.write(z.read(filename))
时间: 2024-10-11 23:13:54