aapt的具体使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

aapt的具体使⽤
⼀.什么是aapt:
aapt Android Asset Packaging Tool android的⼀个资源打包⼯具
⼆.配置aapt路径:
aapt这个⼯具,在sdk的build-tools下,所以⼀般配置好sdk就可以使⽤该⼯具。

或者单独下载aapt这个⼯具,在环境变量path中添加aapt的路径。

aapt v查看aapt版本号,确认aapt是否配置好
三.aapt的使⽤
学习过程中没有涉及到很深的aapt的具体使⽤
主要应⽤:
aapt l
简单的罗列压缩⽂件中每⼀项的内容
aapt l -v XXX.apk
列表⽅式详细标识出压缩⽂件中的每⼀项和很多参数
Length 原始⽂件参数
Date ⽇期
Time 时间
Name 名称
Method压缩⽅法,Deflate及Stored两种,即该Zip⽬录采⽤的算法是压缩模式还是存储模式
Ratio 压缩率
Size 压缩省掉的⼤⼩
CRC-32 循环冗余校验这个计算是特定的算法的
offset:zipfile中偏移量的意思
aapt l -a
详细输出压缩⽂件中所有⽬录的内容 
aapt dump strings
打印apk中所有string资源表
aapt dump badging
查看apk中的配置信息
四.具体实现
通过aapt来完成对上传的apk进⾏⼆次验证,并提取对应的包名,版本号、版本名,icon图标在apk中的地址等信息 1def apkParseMessage(apkFilePath,apptResultPath):
2 apkMessage = {}
3 cmd = "D:/aapt d badging %s > %s"%(apkFilePath,apptResultPath)
4 os.popen(cmd)
5 time.sleep(1)
6 f = open(apptResultPath,"r",encoding = 'utf-8')
7 result =f.read()
8#匹配packagename
9 parrenPackageName = pile("package: name='(.*?)'")
10 packageName = re.findall(parrenPackageName,result)
11print(packageName)
12 apkMessage.setdefault("packageName",packageName[0])
13#匹配当前apk版本号
14 parrenVersionCode = pile("versionCode='(.*?)'")
15 versionCode = re.findall(parrenVersionCode,result)
16 apkMessage.setdefault("versionCode",versionCode[0])
17#匹配当前apk版本名
18 parrenVersionName = pile("versionName='(.*?)'")
19 versionName = re.findall(parrenVersionName,result)
20 apkMessage.setdefault("versionName",versionName[0])
21 parrenName = pile("application-label:'(.*?)'")
22 apkName = re.findall(parrenName,result)
23 apkMessage.setdefault("Name",apkName[0])
24#parrenIcon = pile("application-icon-480:'(.*?)'")
25#匹配当前apk的icon图标存储位置
26 parrenIcon = pile("icon='(.*?)'")
27 apkIcon = re.findall(parrenIcon,result)
28 apkMessage.setdefault("Icon",apkIcon[0])
29print(apkMessage)
30 f.close()
31
32return apkMessage
再通过python的zipfile库中的⽅法将icon图标读取出来,已被前台显⽰。

1def downLoadIcon(apkFilePath,saveIconPath,apkMessage):
2 IconPath = apkMessage['Icon']
3print(apkMessage['Icon'])
4 zip = zipfile.ZipFile(apkFilePath)
5
6 iconData = zip.read(IconPath)
7 with open(saveIconPath,'wb') as IconFile:
8 IconFile.write(iconData)
9 zip.close()
10return IconFile。

相关文档
最新文档