码迷,mamicode.com
首页 > 其他好文 > 详细

批量从apk文件中提取出so文件

时间:2015-01-04 06:25:47      阅读:427      评论:0      收藏:0      [点我收藏+]

标签:android

应用场景

在不解压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))







































批量从apk文件中提取出so文件

标签:android

原文地址:http://blog.csdn.net/chichoxian/article/details/42382887

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!