构建-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& ...
随机推荐
- 以管理员身份运行CMD
To complete these procedures, you must be a member of the Administrators group. To start a command p ...
- java ftp上载下传 遇到的问题
1.下载文件中文乱码,和下载文件大小为0kb /** * Description: 从FTP服务器下载文件 * * @param url * FTP服务器hostname * @param port ...
- JavaMail发送和接收邮件API(详解)
一.JavaMail概述: JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分. 厂商所提供的JavaMa ...
- 通过本地Git部署网站到WebSite
玩过Azure WebSite(WebApp)的同学应该知道部署网站的方式非常多,今天我要讲的是如果通过本地Git部署网站到WebSite. 1.新建WebSite 创建WebSite非常简单,我这里 ...
- 使用CefSharp在.Net程序中嵌入Chrome浏览器(六)——调试
chrome强大的调试功能令许多开发者爱不释手,在使用cef的时候,我们也可以继承这强大的开发者工具. 集成调试: 我们可以使用如下函数直接使用集成在chrome里的开发者工具 _chrome.Sho ...
- OAuth2.0网页授权 提示未关注该测试号
用无高级接口权限的公众号使用别人的appid和appsecret在网页中获取用户信息时,提示未关注该测试号. 搜集各种资料才发现是因为 测试帐号只能对关注者网页授权,正式帐号可以对未关注者授权
- oracle HA 高可用性具体解释(之二,深入解析TAF,以及HA框架)
oracle HA 高可用性具体解释(之中的一个,client.server端服务具体解释):http://write.blog.csdn.net/postedit 我们已经看到TAF是的Oracle ...
- Delphi如何在Form的标题栏绘制自定义文字
Delphi中Form窗体的标题被设计成绘制在系统菜单的旁边,如果你想要在标题栏绘制自定义文本又不想改变Caption属性,你需要处理特定的Windows消息:WM_NCPAINT.. WM_NCPA ...
- WebLogic使用总结(五)——Web项目使用Sigar在WebLogic服务器部署遇到的问题
今天在WebLogic 12c服务器上部署Web项目时,碰到了一个问题.项目中使用到了"Sigar.jar"监控Window平台下的cpu使用率.内存使用率和硬盘信息,sigar. ...
- 在ASP.NET MVC中实现区域或城市选择
每次在"万达影城"网上购票总会用到左上角选择城市的功能.如下: 今天就在ASP.NET MVC中实现一下.我想最好的方式应该是写一个插件,但自己在这方面的功力尚欠缺,如果大家在这方 ...