aapt android开发工具的一个命令行工具。
apk android的安装文件

下面是用python脚本获取版本 图标信息。O(∩_∩)O 有个问题呢,但是 ,先记录下。

#!/usr/bin/env python
#coding:utf-8import os,re,sys
import zipfile#检查apk版本号等信息
def getAppBaseInfo(apkFile, dstPath):  get_info_command = "aapt dump badging %s" % ( apkFile )   output = os.popen(get_info_command).read()   match = re.compile("package: name='(\S+)' versionCode='(\d+)' versionName='(\S+)'").match(output) if not match:print(output)raise Exception("can't get packageinfo")packagename = match.group(1)versionCode = match.group(2)versionName = match.group(3)launchableActivity =""appCnName =""appEnName = ""lines = output.splitlines()for l in lines:l = l.strip()if l.startswith("application-icon"):# print(l)iconInfo = l.split(":")if os.path.splitext(iconInfo[1])[1].startswith('.xml'):getIconFromXml(apkFile,dstPath,iconInfo)if os.path.splitext(iconInfo[1])[1].startswith('.png'):pngPath = iconInfo[1]pngPath = pngPath.replace("\'","")iconInfo[1] = pngPathgetIconFromPng(apkFile,dstPath,iconInfo)if l.startswith("launchable-activity"):launchableActivity = l.split("'")[1]lableName = l.split("'")[3]if appCnName == "":appCnName = lableNameif appEnName == "":appEnName = lableNameif l.startswith("application-label-zh-CN:") or l.startswith("application-label-zh:"):appCnName = l.split("'")[1]# print(l)if l.startswith("application-label-en"):appEnName = l.split("'")[1]apkInfo = u" 中文名:%s   \n 英文名:%s  \n 包名:%s \n 版本号:%s \n 版本名称:%s \n 启动类:%s " % (appCnName,appEnName,packagename, versionCode, versionName,launchableActivity)print(apkInfo)writeInfo(dstPath,apkInfo)
# 将apk的信息写入文本文件中
def writeInfo(dstPath,apkInfo):with open(dstPath+"/info.txt",'w') as f:f.write(apkInfo)# 从apk中提取出PNG图片
def getIconFromPng(apkFile,dstPath,iconInfo):z = zipfile.ZipFile(apkFile,'r')icon = z.read(iconInfo[1])            with open('%s/%s.png'%(dstPath,iconInfo[0]),'wb') as f:f.write(icon)
#通过aapt查询图片
def getIconFromXml(apkFile,dstPath,iconInfo):query_xml_command = "aapt dump xmltree %s %s" % ( apkFile ,iconInfo[1])print(query_xml_command)output = os.popen(query_xml_command).read()lines = output.splitlines()pngResId = ''for l in lines:l = l.strip()if(l.startswith('A: android:drawable')):pngResId = l.split("@0x")[1]print(pngResId)query_png_command = "aapt dump --values resources %s | grep -iC10 %s" % ( apkFile ,pngResId)print(query_png_command)output = os.popen(query_png_command).read()lines = output.splitlines()pngPath = ""for l in lines:l = l.strip()if(l.startswith("(string8) ")):pngPath = lprint("png l "+ l)pngPath = pngPath.replace("(string8) ","")pngPath = pngPath.replace("\"","")print("png path "+ pngPath)if os.path.splitext(pngPath)[1].startswith('.png'):breakiconInfo[1]=pngPathgetIconFromPng(apkFile,dstPath,iconInfo)if __name__=='__main__':if len(sys.argv)<3:print('format is python3 abc.py xxx.apk /extrat/to/dir ')exit(0)apkFile = sys.argv[1]dstPath = sys.argv[2]if not os.path.splitext(apkFile)[1] == '.apk':print('please input a xxx.apk')exit(0)if not os.path.isfile(apkFile):print(apkFile+'  not found')exit(0)if  not os.path.exists(dstPath):os.makedirs(dstPath)getAppBaseInfo(apkFile, dstPath)

aapt 获取Android版本信息和图标相关推荐

  1. 获取Android版本信息和电话信息

    Android的版本信息可以通过android.os.Build获得,电话信息可以通过TelephonyManager获得,代码如下: private void get_infor(){ sdk = ...

  2. android开发获取手机,通过ADB获取Android手机信息,获取手机信息

    通过ADB获取Android手机信息,获取手机信息 原文:https://blog.csdn.net/fasfaf454/article/details/51438743 1.获取手机系统信息( CP ...

  3. GetVersionEx 获取系统版本信息

    转自:http://blog.csdn.net/yyingwei/article/details/8286658 最近在windows 8上获取系统版本信息需要调用系统API,于是用到了GetVers ...

  4. ansible playbook脚本获取系统版本信息

    ansible playbook脚本获取系统版本信息 执行环境说明 脚本执行过程中实测系统为 redhat6.redhat7 suse11 suse12: [root@ansible_host ~]# ...

  5. linux获取bios版本号,在Windows中获取BIOS版本信息的4种方法 | MOS86

    BIOS,或技术上称为基本输入和输出系统,是计算机中最重要的软件之一.它位于主板上,并管理硬件设备(如处理器,硬盘,图形卡等)之间的所有连接.主板制造商不时会发布BIOS或UEFI(统一可扩展固件接口 ...

  6. (1)python pyinstaller打包exe添加版本信息(2)python获取exe版本信息(3)pyqt5开发exe添加检查版本更新功能

    笔者总结不容易点个关注吧    一键三联哦!       感谢您! python pyinstaller打包exe添加版本信息 打包并添加版本信息 注意!这里有个坑 如果第二次要修改版权信息 要将fi ...

  7. js 获取浏览器版本信息(全)

    原文地址 js 获取浏览器版本信息(全) 觉得挺不错的,所以就收藏起来 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...

  8. 【转载】JS获取浏览器版本信息

    document.write("js获取到的浏览器版本信息:");document.write("<br />");document.write(& ...

  9. iphone adb android,通过ADB获取Android手机信息

    1.获取手机体系信息(CPU,厂商名称等) adbshell"cat/system/build.prop|grep"product"" 2.获取手机体系版别 a ...

最新文章

  1. PullToRefreshListView中嵌套ViewPager滑动冲突的解决
  2. leetcode面试题 08.08. 有重复字符串的排列组合(回溯)
  3. CSV 导入mysql 数据库
  4. 生产中k8s适合mysql_在K8S集群中构建复杂的MySQL单实例数据库
  5. python中的copy模块(浅复制和深复制)
  6. get和post方式提交中文乱码问题解决方案
  7. Bootstrap Table插件 页面跳转后再回来保存搜索的值
  8. python入门经典-入门python有什么好的书籍推荐?
  9. 使用分区表fstab永久挂载磁盘分区
  10. DISCUZ编辑器工具栏图标不显示
  11. 比起高性能计算,高端存储才更亟待国产化
  12. u盘有声音但是不显示怎么办?u盘不显示解决方案
  13. 计算体脂率,并给出评价
  14. QCA988x Windows7驱动安装方法
  15. Elasticsearch cardinality存在误差
  16. LNMP编译安装及应用(理论+实验)——详细步骤说明,看完可以尝试操作
  17. 短视频小程序,互联网新风口
  18. flutter底层原理和embedder的隐忧
  19. 为什么说“分布式架构”才是AR眼镜的未来
  20. 混合整数线性规划问题 Matlab

热门文章

  1. Android之录音功能
  2. Activiti(十三)UEL 表达式分配个人任务
  3. 浅谈 Mock Server
  4. 【项目实训】0320公共周报
  5. 武汉理工大学计算机专业英语,给大家讲个笑话,武汉理工外语专业400分以上的28人...
  6. .NET Core配置Swagger
  7. ​使用 Opencv 创建类似 Instagram 的滤镜!
  8. 职称计算机作用,2010年职称计算机:Photoshop滤镜作用
  9. CV面试题目总结(三) - 传统图像算法
  10. 常用外贸邮箱的正确选择让你事半功倍