构建-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& ...
随机推荐
- java 使用grpc步骤
1.配置grpc maven依赖 <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-ne ...
- Codeforces Round #368 (Div. 2) B. Bakery 水题
B. Bakery 题目连接: http://www.codeforces.com/contest/707/problem/B Description Masha wants to open her ...
- LPC43xx SGPIO Camera interface design
AN11196: Camera interface design using SGPIO
- Golang 版本发布 与 TIOBE 排名
2016年国庆节(10月1日)开始接触 Go 语言,记录一下它的 版本发布 与 TIOBE 排名: Golang 排行榜 月份 版本 排名 备注 2012.03 1.0 201 ...
- .NET轻量级ORM组件Dapper修炼手册
一.摘要 1.1.为什么叫本次的分享课叫<修炼手册>? 阿笨希望本次的分享课中涉及覆盖的一些小技巧.小技能给您带来一些帮助.希望您在日后工作中把它作为一本实际技能手册进行储备,以备不时之需 ...
- x86 TargetPlatform with XBAPs
I've got a XAML Browser Hosted Application (XBAP) project that has a dependency on another project t ...
- VS Supercharger插件的破解
Supercharger我已经用了很多年了,感觉十分不错,最初使用的时候,是叫做CodeMap.不过要想很好的使用起来这个VS插件,需要对其进行细致的设置. 这里不再多说了,看下,这个软件怎么破解吧. ...
- redis实现发布(订阅)消息
redis实现发布(订阅)消息 什么是redis的发布订阅(pub/sub)? Pub/Sub功能(means Publish, Subscribe)即发布及订阅功能.基于事件的系统中,Pub/S ...
- Control reaches end of non-void function 犯过最傻的错误
之所以会报“Control reaches end of non-void function ”的警告,时因为方法名中缺少返回类型.正确的写法如下: +(void)setMobile:(NSStrin ...
- ArcGIS 10.2 链接64位Oracle数据库
https://my.oschina.net/zctzl/blog/909541 来自:https://blog.csdn.net/LoveCarpenter/article/details/5954 ...