说到解析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工具)下载地址。
相关文章
- 下载android应用的apk文件变成了zip解决方案
- Android平台应用启动时读写手机存储、访问设备信息(如IMEI)等权限策略及提示信息,解决uniapp上传华为应用市场提示获取手机存储敏感权限,用户不同意时强制退出应用的问题
- Android GPS应用:动态获取位置信息
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
- Android2.2下camera应用程序支持GPS信息写入jpeg文件
- Android 笔记 ------当你获得文件路劲时获取此文件的信息
- 如何在Android应用程序中分析Apk文件?获取权限
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- Android应用开发之存储和解析xml文件
- 命令行创建Android应用,命令行生成签名文件,命令行查看签名信息,对APK包签名并编译运行