解析APK文件获取Android应用信息

说到解析APK文件获取Android应用信息,大家首先想到的就是aapt(Android Asset Packaging Tool)工具。没错!小编也是基于aapt工具,结合java代码实现APK文件的解析。
aapt工具依赖下列包,需要先在系统中安装,以CentOS 7.0操作系统为例,我们使用yum命令安装这些依赖包,命令如下:
yum install glibc.i686(如果存在x86_64的旧版本则需要先更新x86_64的版本后或选择相同版本的rpm包才能使用yum安装)
yum install zlib.i686
yum install libstdc++.i686
依赖包安装好后,我们可以使用命令:
./aapt_linux_64 d badging /tmp/9a6038d8-150c-4942-af53-747757cd2d69.apk
此处参数d表示dump,及命令也可以写成:
./aapt_linux_64 dump badging /tmp/9a6038d8-150c-4942-af53-747757cd2d69.apk
参数badging表示输出详细信息,英文原文为:Print the label and icon for the app declared in APK(即打出输出APK文件中声明的各种标签,按钮等信息),另外我们还可以查看APK包的packageName、versionCode、applicationLabel、launcherActivity、permission等各种详细信息,如下图所示执行结果:
在这里插入图片描述
在Java中我们通过ProcessBuilder.start() 方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获取相关信息,此处我要需要其运行aapt命令,所以因为command(AppConstants.AAPT_APK_PARSER_TOOL, “d”, “badging”, apkPath),参数分别为aapt工具在本机中的绝对路径,aapt参数d,aapt命令参数badging,APK文件的绝对路径;
在这里插入图片描述
通过process.getInputStream()可以返回aapt命令执行后返回的应用信息(aapt执行结果图示可以查看返回信息格式),通过对返回信息格式分析可知格式为key:value形式并通过换行符分隔每个属性,所以我们就可以一行行数据读取并解析,
在这里插入图片描述
在这里插入图片描述如果一行中字符串是以“package”开头,则可以解析出packageName,versionCode,versionName
在这里插入图片描述
以上大致介绍了如何使用Java结合aapt工具实现APK文件的解析,感兴趣的同学可以关注我们的微信公众号,回复“aapt工具”获取aapt工具包(包含Linux及Windows系统下的aapt工具)下载地址。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/chendaike/article/details/86678290