一.什么是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中的地址等信息

 def apkParseMessage(apkFilePath,apptResultPath):
apkMessage = {}
cmd = "D:/aapt d badging %s > %s"%(apkFilePath,apptResultPath)
os.popen(cmd)
time.sleep(1)
f = open(apptResultPath,"r",encoding = 'utf-8')
result =f.read()
#匹配packagename
parrenPackageName = re.compile("package: name='(.*?)'")
packageName = re.findall(parrenPackageName,result)
print(packageName)
apkMessage.setdefault("packageName",packageName[0])
#匹配当前apk版本号
parrenVersionCode = re.compile("versionCode='(.*?)'")
versionCode = re.findall(parrenVersionCode,result)
apkMessage.setdefault("versionCode",versionCode[0])
#匹配当前apk版本名
parrenVersionName = re.compile("versionName='(.*?)'")
versionName = re.findall(parrenVersionName,result)
apkMessage.setdefault("versionName",versionName[0])
parrenName = re.compile("application-label:'(.*?)'")
apkName = re.findall(parrenName,result)
apkMessage.setdefault("Name",apkName[0])
#parrenIcon = re.compile("application-icon-480:'(.*?)'")
#匹配当前apk的icon图标存储位置
parrenIcon = re.compile("icon='(.*?)'")
apkIcon = re.findall(parrenIcon,result)
apkMessage.setdefault("Icon",apkIcon[0])
print(apkMessage)
f.close() return apkMessage

  再通过python的zipfile库中的方法将icon图标读取出来,已被前台显示。

 def downLoadIcon(apkFilePath,saveIconPath,apkMessage):
IconPath = apkMessage['Icon']
print(apkMessage['Icon'])
zip = zipfile.ZipFile(apkFilePath) iconData = zip.read(IconPath)
with open(saveIconPath,'wb') as IconFile:
IconFile.write(iconData)
zip.close()
return IconFile

aapt的具体使用的更多相关文章

  1. Description Resource Path Location Type Error executing aapt: Return code -1073741819 Client line 1

    Logcat报错:Description    Resource    Path    Location Type Error executing aapt: Return code -1073741 ...

  2. Xamarin Error cannot find ‘aapt.exe’

    Problem:     solution:   A workaround is to copy your files to the old directory. Just copy the aapt ...

  3. Cannot find `aapt.exe`. Please install the Android SDK Build-tools package

    Google has updated their SDK tools ("Android SDK Tools" Rev. 23) in a way that also requir ...

  4. aapt命令介绍及常用命令实践

    D:\>aapt -h ERROR: Unknown command '-h' Android Asset Packaging Tool Usage: aapt l[ist] [-v] [-a] ...

  5. Monkey 使用aapt查看apk包名

    使用aapt    //aapt是sdk自带的一个工具,在sdk\builds-tools\目录下1.以ES文件浏览器为例,命令行中切换到aapt.exe目录执行:aapt dump badging ...

  6. 快速分析apk工具aapt的使用

    前面walfred已经介绍了使用apktool对apk进行逆向编译,通过apktool我们的确可以反编译已经序列化后的AndroidManifest.xml和资源文件等等,但是有没有一种快速有效的工具 ...

  7. Unparsed aapt error(s)! Check the console for output解决方法

    在Eclipse平台进行Android 应用开发时,编辑,修改或增删 res/下资源文件时有时会遇到如下错误提示:“Unparsed  aapt error(s)! Check the console ...

  8. aapt aidl

    AIDL:Android Interface Definition Language,即Android接口定义语言 aapt即Android Asset Packaging Tool,在SDK的bui ...

  9. Xamarin.Android提示aapt退出,代码为255

    Xamarin.Android提示aapt退出,代码为255 错误信息:”aapt.exe”已退出,代码为255.出现这种问题,通常是由于该项目所使用Android SDK不完整.通过SDK Mana ...

  10. Error executing aapt: Return code -1073741819

    在做andrid项目的时候,本来想把a项目中的a功能模块复制到b项目中,但是复制过程中出现xml文件id的问题, Error executing aapt: Return code -10737418 ...

随机推荐

  1. ubuntu安装后的基本配置及常用软件的安装

    文章作者:foochane  原文链接:https://foochane.cn/article/2019061501.html 内容简介 当前Ubuntu版本:ubuntu 18.04,具体操作如下: ...

  2. 简单易懂的banner图滚动源代码

    banner图左右滚动简单易懂源代码 1 样式展示 css代码: * { padding: 0px; margin: 0px; } .banner { width: 100%; height: 450 ...

  3. python学习——字典和集合

    一.字典 1)字典介绍 字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字.字符串.元组,这种不可变的结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 1)字典操作 &qu ...

  4. Linux下各目录及其作用

    目录及其作用 /:根目录,一般根目录下只存放目录,不要存放件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中 /bin: /usr/bin: 可执行二进制文件的目录,如 ...

  5. flutter无线调试与打包

    1.WIFI连接设备 设备打开开发者选项 -> 点击WIFI调试 ->  项目目录下输入终端命令: adb connect   设备ip地址:[端口号(一般是5555)] 2.apk打包 ...

  6. Java中指令重排

    /** * 指令重排:代码执行顺序与预期不一致 (发生在前后行代码无联系时) * 目的:提高性能 * */ public class HappenBefore { private static int ...

  7. vue.js纯前端处理如何将后台返回来的csv数据导出成csv文件

    需要实现一个下载csv文件的功能,但后台没有对这个下载文件进行处理,而是将csv数据传给前台而已,需要前台做一下处理. 这是按钮的代码: <a> <el-button size=&q ...

  8. 2018宁夏邀请赛I题 bubble sort(思维题

    https://vjudge.net/problem/Gym-102222I 居然补到个防ak,刚开始不知道啥是循环左移右移(只能移一次),不好想.. 题意:以冒泡排序为背景 给你n,k 问在1~n的 ...

  9. BZOJ4034 [HAOI2015]树上操作+DFS序+线段树

    参考:https://www.cnblogs.com/liyinggang/p/5965981.html 题意:是一个数据结构题,树上的,用dfs序,变成线性的: 思路:对于每一个节点x,记录其DFS ...

  10. HZNU 2019 Summer training 6 -CodeForces - 622

    A - Infinite Sequence  CodeForces - 622A 题目大意:给你一个这样的数列1,1,2,1,2,3,1,2,3,4,1,2,3,4,5....就是从1~n排列(n++ ...