构建-13 Analyzer APK文件分析
使用APK Analyzer分析您的构建
- 查看APK中文件的绝对大小和相对大小,例如DEX和Android资源文件。
- 了解DEX文件的组成。
- 快速查看APK中文件的最终版本,例如AndroidManifest.xml文件。
- 对两个APK进行并排比较[side-by-side comparison]。
- 将APK拖到Android Studio的编辑器窗口中。
- Switch to the Project perspective in the Project window,然后在默认的build / output / apks /目录中双击APK。
- 在菜单栏中选择Build> Analyze APK,然后选择您的APK。
重要:分析调试版本时,请使用通过选择Build> Build APK或gradle命令创建的APK。单击工具栏中的 Run 会生成启用了Instant Run的APK,这些APK不应与APK Analyzer一起用于优化任务,因为它们仅供开发使用,并动态加载大多数资源。您可以通过是否有 instant-run.zip 文件嵌入在APK中来识别即时运行APK。
重要:分析调试版本时,请使用通过选择Build> Build APK或gradle命令创建的APK。单击工具栏中的 Run 会生成启用了Instant Run的APK,这些APK不应与APK Analyzer一起用于优化任务,因为它们仅供开发使用,并动态加载大多数资源。您可以通过是否有 instant-run.zip 文件嵌入在APK中来识别即时运行APK。
查看文件和大小信息

查看清单文件

查看 DEX 文件
请注意,在APK中打包依赖项时,依赖项中定义的方法会添加两个方法计数。
另请注意,编译源代码后,缩小[minification]和/或Proguard收缩也会大大改变DEX文件的内容。
请注意,在APK中打包依赖项时,依赖项中定义的方法会添加两个方法计数。
另请注意,编译源代码后,缩小[minification]和/或Proguard收缩也会大大改变DEX文件的内容。


过滤DEX文件树视图
- 在 File 列表中,选择 classes.dex文件。
- 在 Class 列表中,导航到并选择一个class,展开您选择的class。
- 点击切换按钮以显示或隐藏类字段或方法。
- 点击切换显示所有引用的方法或字段以显示或隐藏引用的包,类,方法和字段。 在树视图中,斜体节点[talicized nodes]是在所选DEX文件中没有定义的引用。

加载 Proguard 映射文件

- seeds.txt:Proguard配置阻止在压缩过程中被删除的节点以粗体显示。
- mapping.txt:启用反混淆[Deobfuscate]名称,以便您可以恢复由Proguard进行混淆处理的节点的原始名称。
- usage.txt:启用Show removed节点,以便显示Proguard在压缩期间删除的类,方法和字段。 已被恢复的节点以删除线显示。
显示字节码,查找用法,生成Keep规则

public void a() {
System.out.println("GoodBye");
}
x
public void a() {
System.out.println("GoodBye");
}
.method public a()V
.registers 3
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "GoodBye"
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method
.method public a()V
.registers 3
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "GoodBye"
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method


# Add *one* of the following rules to your Proguard configuration file.
# Alternatively作为选择, you can annotate classes and class members with @android.support.annotation.Keep
# keep the class and specified members from being removed or renamed
-keep class com.bqt.test.OtherClass2 { *; }
# keep the specified class members from being removed or renamed
# only if the class is preserved保留
-keepclassmembers class com.bqt.test.OtherClass2 { *; }
# keep the class and specified members from being renamed only
-keepnames class com.bqt.test.OtherClass2 { *; }
# keep the specified class members from being renamed only
-keepclassmembernames class com.bqt.test.OtherClass2 { *; }
x
# Add *one* of the following rules to your Proguard configuration file.
# Alternatively作为选择, you can annotate classes and class members with @android.support.annotation.Keep
# keep the class and specified members from being removed or renamed
-keep class com.bqt.test.OtherClass2 { *; }
# keep the specified class members from being removed or renamed
# only if the class is preserved保留
-keepclassmembers class com.bqt.test.OtherClass2 { *; }
# keep the class and specified members from being renamed only
-keepnames class com.bqt.test.OtherClass2 { *; }
# keep the specified class members from being renamed only
-keepclassmembernames class com.bqt.test.OtherClass2 { *; }
查看代码和资源实体




比较APK文件
- 将要发布的APK版本加载到APK分析器中。
- 在APK分析器的右上角,单击“比较”。
- 在选择对话框中,找到上次发布给用户的APK,然后单击“确定”。

构建-13 Analyzer APK文件分析的更多相关文章
- - Gradle 翻译 Analyzer APK文件分析 MD
目录 目录 APK文件分析 使用 APK 分析器分析您的编译版本 查看文件和大小信息 查看 AndroidManifest.xml 查看 DEX 文件 过滤DEX文件树视图 加载 Proguard 映 ...
- apk文件分析原则
如果在dex生成的jar文件里没有发现关键内容的话,就要注意jar里面的native函数以及loadlibrary操作,从而可以判断出加载了哪些so,调用了什么函数.就不会出现判断不出是不是加载了某s ...
- Android系统加载Apk文件的时机和流程分析(1)--Android 4.4.4 r1的源码
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80982869 Android系统在启动时安装应用程序的过程,这些应用程序安装好之 ...
- 使用 Eclipse Memory Analyzer 进行堆转储文件分析
Eclipse Memory Analyzer(MAT)是著名的跨平台集成开发环境 Eclipse Galileo 版本的 33 个组成项目中之一,它是一个功能丰富的 JAVA 堆转储文件分析工具,可 ...
- mat 使用 分析 oom 使用 Eclipse Memory Analyzer 进行堆转储文件分析
概述 对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现.JVM 能够记录 ...
- matlab M文件分析工具使用(Code Analyzer and Profiler)
Code Analyzer and Profiler Matlab中,对写在m文件(.m文件)里的代码有分析的工具,可以进行优化,这里做一个简单的介绍. Code Analyzer Code Anal ...
- [Android Memory] 使用 Eclipse Memory Analyzer 进行堆转储文件分析
转载地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html Eclipse Memory Analyzer ...
- 破解第一个程序----分析APK文件
反编译APK成功后,在outdir目录下会生成一系列目录与文件. smali:程序所有的反汇编代码: res:程序中所有的资源文件: 如何寻找突破口是分析程序的关键.错误提示一般是指引关键代码的风向标 ...
- Windows环境手动DOS命令构建apk文件
第一步 抽取资源id,生成R.java aapt p[ackage] -f [-A <assets>] -S <res> -M <AndroidManifest.xml& ...
随机推荐
- UOJ.52.[UR #4]元旦激光炮(交互 思路)
题目链接 \(Description\) 交互库中有三个排好序的,长度分别为\(n_a,n_b,n_c\)的数组\(a,b,c\).你需要求出所有元素中第\(k\)小的数.你可以调用至多\(100\) ...
- PHP 合理配置实现文件上传及保存文件到数据库
合理配置 php.ini 如何配置php.ini实现PHP文件上传功能.其中涉及到php.ini配置文件中的upload_tmp_dir.upload_max_filesize.post_max_si ...
- hdu 4431 第37届ACM/ICPC 天津赛区现场赛A题 枚举
题意:就是给了13张牌.问增加哪些牌可以胡牌.m是数字,s是条,p是筒,c是数字 胡牌有以下几种情况: 1.一个对子 + 4组 3个相同的牌或者顺子. 只有m.s.p是可以构成顺子的.东西南北这样 ...
- LayoutInflater作用及使用(转)
作用: 1.对于一个没有被载入或者想要动态载入的界面, 都需要使用inflate来载入. 2.对于一个已经载入的Activity, 就可以使用实现了这个Activiyt的的findViewById方法 ...
- oracle直接读写ms sqlserver数据库(二)配置透明网关
环境说明: 数据库版本:11gR2 透明网关版本:11g 操作系统Windows Server2008_64位 ORACLE_HOME目录:D:\app\Administrator\product\1 ...
- Renesas M16C/6X -- Simple PWM Signal Generation Using DMA
1. Requirements To generate a PWM output, we need to create a train of pulses with constant period a ...
- 爬虫IP被禁的简单解决方法
爬虫以前听上去好厉害好神秘的样子,用好了可以成就像Google.百度这样的索索引擎,用不好可以凭借不恰当的高并发分分钟崩掉一个小型网站.写到这里想到12306每年扛住的并发请求量,觉得好牛逼. 爬虫和 ...
- gdb调试报错:Missing separate debuginfos, use: debuginfo-install glibc-XXX
解决方案: 1.先修改“/etc/yum.repos.d/CentOS-Debuginfo.repo”文件的 enable=1: 2.使用 sudo yum install glibc 安装: 3.使 ...
- cocos2d-x学习资源汇总
http://blog.csdn.net/akof1314 http://blog.csdn.net/bill_man/ http://blog.csdn.net/fylz1125/ MoonWa ...
- VC设置代理方法
参考文章: VC 设置代理 Setting and Retrieving Internet Options Change Internet Proxy settings http://suppor ...