Android apk 分析工具:APK Analyzer_什么工具可以比较两个apk 之间的差异-程序员宅基地

技术标签: analyzer  android  android studio  apk  

前言

Android studio 2.2 版本后自带有一个分析工具:APK Analyzer。这是一个专门分析 apk 的神器,主要作用如下:
1. (重要) 直观的看到 apk 中各个文件的大小 (比如 DEX,resource 等等)。我们可根据文件大小信息,减小 apk 的大小;
2. (重要) 学习大企业 app 的命名规范和目录架构规范,还可以查看大公司 app 使用了什么技术和第三方框架;
3. 了解 DEX 文件的组成;
4. 快速查看 APK 的版本信息(例如 androidmanifest.xml 等也可以看到);
5. 直接比较两个 APK 的信息,有对比才有伤害;

如何使用 APK Analyzer

使用 APK Analyzer 有如下三种方式:

  • 第一种,将需要分析的 apk 拖拽到 Android studio 中即可;

  • 第二种,若是你项目中已经 build apk,那么使用 project 视图。打开整体 project—>app—>bulid—>outputs—>apk—>[XXX].apk,双击 [XXX].apk 即可。其实,只要你的 apk 在项目中,双击即可;

双击方式

  • 第三种,点击 Android studio 菜单栏—>build—>Analyze apk,然后选择 apk 即可;

菜单栏选择方式

APK Analyzer的具体分析

下面,我用最新的知乎apk(4.17.1)演示一下。

APK Analyzer分析页面

  1. 首先,图中第一个红框的地方,显示了整个apk的包名,以及版本名。版本名[XXX]其实对应的是androidmanifest中的android:versionName="[XXX]"

  2. 图中第二个红框,有两个size。Raw File Size表示原文件大小,Download Size表示经过Google play处理压缩后的apk大小。分析apk中文件或文件夹的占有比例也是相对于Download Size而言。

  3. 图中第三个红框,是整个apk的文件结构。我们熟悉的res,AndroidManifest.xml,assets,lib等都在这里。而[XXX].dex可以看到整个项目的目录框架。

classes.dex

第二个红框标出,我们可以查看dex文件中总共有多少个类,类里面有多少个方法,引用了多少个方法。
第三个红框可以看出,知乎apk使用了混淆,我们看不到真正的方法名了。

总结

上述只是讲了APK Analyzer的使用,还有很多可以深入的地方等待你去挖掘。

  • 比如查看自己开发的apk文件,哪部分占用的比例较大,是否可以减小apk的体积;
  • 比如compare with功能可以简单比较两个apk的大小比例。验证你优化后的apk和未优化的apk,哪部分size减少了,哪部份size反而增大了;
  • 通过包名,或者说路径名,可以看看大公司的框架都封装了哪些新的技术,然后选择性的加到自己公司或个人的项目中。
  • 看到某个apk的某个效果很赞,可以通过APK Analyzer查看资源文件res,文件夹名称等窥探该apk是否用了第三方框架展现等等;

推荐

android APK Analyzer 官方介绍
我是如何做到在 5 分钟之内将应用大小减少 60% 的

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/DaJian35/article/details/69367659

智能推荐

Python的datetime_python 手写datetime-程序员宅基地

文章浏览阅读4.6k次。Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime。time模块我在之前的文章已经有所介绍,它提供的接口与C标准库time.h基本一致。相比于time模块,datetime模块的接口则更直观、更容易调用。今天就来讲讲datetime模块。 datetime模块定义了两个常量:datetime.MINYEAR和datetime.MAXYEAR,分_python 手写datetime

利用Excel数据爬虫_excel爬虫-程序员宅基地

文章浏览阅读2.4k次,点赞2次,收藏8次。URL部分和URL预览填写为目标(需要爬取数据的网址)的URL地址。第三部找到User-Agent的value复制。就可以在Excel表格里看到想要的数据了。1、在Excel里数据里打开自网站。命令超时选择1分钟即可。HTTP请求标头参数。_excel爬虫

Azure OpenAI:使用Completion/ChatCompletion实现更多可能合集(持续更新)_chatcompletion azure-程序员宅基地

文章浏览阅读198次。不过类似的提示词在GPT4模型下直接使用并不能产生类似的结果,GPT4使用的是ChatCompletion,可以在System Message里或者JSON格式的User Message里带更多的上下文信息过去,在这个案例里GPT4过于智能的将两个表进行了交叉查询,看到网上有其他开发人员使用了JSON解析的方法来拼出SQL文,有机会可以尝试。###创建SQL查询问题:Dear, 210430预计什么时间有货可发?###创建SQL查询问题:Dear, 210430预计什么时间有货可发?_chatcompletion azure

oracle 磁盘空间满后导致无法连接/登陆/使用/启动_oracle的链接数占满sqlplus无法登陆进去怎么处理的-程序员宅基地

文章浏览阅读8.3k次,点赞2次,收藏19次。某天登陆服务器后连接oracle数据库时,突然提示磁盘控件不足,导致sqlplus 登陆失败,提示如下图: 通过命令 df -lh /opt/oracle查看oracle安装目录所在磁盘空间,发现确实已使用100%,如下图: oracle安装目录所在磁盘整个大小才20G,为了一劳永逸,果断准备将oracle系统表空间的数据文件迁移到其他磁盘。此时处理思路应该是先关闭oracle服务,然..._oracle的链接数占满sqlplus无法登陆进去怎么处理的

Docker之MySQL忘记密码_docker 查看mysql 密码-程序员宅基地

文章浏览阅读1.3w次。进入容器docker exec -it mysql /bin/bash修改配置文件执行一下命令cd /etc/mysqlvi my.cnf#在最后添加:skip-grant-tables #在启mysql时不启动grant-tablesmy.cnf 文件内容# Copyright (c) 2014, 2015, Oracle and/or ..._docker 查看mysql 密码

Go: go get 获取第三方库【国内gopm】_go get github-程序员宅基地

文章浏览阅读4.1k次。因为网络问题,常常拉不下来(github上的一般能拿下来),所以用国内的一个工具来获取第三方库.gopm:https://gopm.io/1. 拿 github上的包:(前提是安装git)go get -u github.com/gpmgo/gopm稍微等一会儿,然后就可以看到它为我做了几件事:在GOPATH下生成了E:\GoProjects\src\gi..._go get github

随便推点

计算机毕业设计 SSM与Vue的勤工助学管理系统(源码+论文)_ssm+vue勤工助学-程序员宅基地

文章浏览阅读199次。Hi,各位同学好呀,这里是M学姐!今天向大家分享一个今年(2022)最新完成的毕业设计项目作品,【基于SSM的勤工助学管理系统】学姐根据实现的难度和等级对项目进行评分(最低0分,满分5分)难度系数:3分工作量:5分创新点:3分界面美化:5分界面美化的补充说明:使用vue的基本都能达到5分本项目完成于2022年6月份,包含内容 : 源码 + 论文 + 答辩PPT在开放的互联网平台面前,勤工助学管理系统的信息管理面临着巨大的挑战。传统的管理模式局限于简单数据的管理,无法适应不断变化的市场格局。_ssm+vue勤工助学

分布式锁原理与实现--Redis分布式锁和ZooKeeper分布式锁-程序员宅基地

文章浏览阅读334次,点赞5次,收藏5次。分布式锁的设计和实现是一个复杂但至关重要的课题,不同的实现方式各具优势,根据系统的实际需求和现有技术栈选择合适的分布式锁方案至关重要。在分布式系统中,由于数据分散存储在不同的节点上,当多个节点同时对同一资源进行操作时,如果没有有效的协调机制,就可能出现并发控制问题,导致数据的不一致和冲突。使用setnx命令尝试设置一个唯一的key-value对,key通常与待保护的资源相关联,value可以是线程ID或随机生成的UUID,如果设置成功,则认为获取到了锁。

联想服务器TD630安装系统,ThinkServer_TD340_RAID及系统安装.docx-程序员宅基地

文章浏览阅读597次。ThinkServer_TD340_RAID及系统安装Lenovo ThinkServer TD340 RAID及系统安装前言:Lenovo ThinkServer TD340随机配备导航盘,其RAID及系统安装有两种方式可选:导航盘方式和传统方式。导航盘方式较为简洁,且在系统安装完成后无需再进行驱动安装,其驱动已集成在导航盘上,如以此方式安装按导航盘引导进行即可,在此不做详细介绍;传统方式..._联想服务器td340u盘安装win2008

java字符串转成utf-8_将字符串的编码格式转换为utf-8-程序员宅基地

文章浏览阅读2.1w次,点赞2次,收藏5次。方式一:/*** 将字符串的编码格式转换为utf-8** @param str* @return Name = new* String(Name.getBytes("ISO-8859-1"), "utf-8");*/public static String toUTF8(String str) {if (isEmpty(str)) {return "";}try {if (str.equals(n..._字符串转utf-8

手把手教你使用YOLOV5训练自己的目标检测模型-口罩检测-视频教程_搭建yolo目标检测的环境. 使用yolo-air模块来做实验-程序员宅基地

文章浏览阅读10w+次,点赞691次,收藏4k次。手把手教你使用YOLOV5训练自己的目标检测模型大家好,这里是肆十二(dejahu),好几个月没有更新了,这两天看了一下关注量,突然多了1k多个朋友关注,想必都是大作业系列教程来的小伙伴。既然有这么多朋友关注这个大作业系列,并且也差不多到了毕设开题和大作业提交的时间了,那我直接就是一波更新。这期的内容相对于上期的果蔬分类和垃圾识别无论是在内容还是新意上我们都进行了船新的升级,我们这次要使用YOLOV5来训练一个口罩检测模型,比较契合当下的疫情,并且目标检测涉及到的知识点也比较多,这次的内容除了可以作为大家_搭建yolo目标检测的环境. 使用yolo-air模块来做实验

Linux命令大全(非常详细)从零基础入门到精通,看完这一篇就够了_linux系统基本操作命令-程序员宅基地

文章浏览阅读6k次,点赞10次,收藏81次。网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…最常用的打包命令是 tar,使用 tar 程序打出来的包我们常称为 tar 包,tar 包文件的命令通常都是以 .tar 结尾的。_linux系统基本操作命令

推荐文章

热门文章

相关标签