网站访问量排行榜,广州白云区新闻头条最新消息今天,棋牌游戏在哪做网站,正规挣钱最快的游戏关于作者#xff1a;CSDN内容合伙人、技术专家#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 #xff0c;擅长java后端、移动开发、商业变现、人工智能等#xff0c;希望大家多多支持。 目录 一、导读二、概览三、用法3.1 使用 Android Studio3.1.1… 关于作者CSDN内容合伙人、技术专家 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 擅长java后端、移动开发、商业变现、人工智能等希望大家多多支持。 目录 一、导读二、概览三、用法3.1 使用 Android Studio3.1.1 查看文件和大小信息3.1.2 查看 AndroidManifest.xml3.1.3 查看 DEX 文件3.1.4 过滤 DEX 文件树状视图3.1.5 加载 ProGuard 映射3.1.6 显示字节码、查找用法以及生成 Keep 规则3.1.7 查看代码和资源实体3.1.8 比较文件 3.2 使用 命令行 四、 推荐阅读 一、导读
我们继续总结学习基础知识温故知新。
apkanalyzer 用于分析我们生成的apk可以得到各种我们想要的信息 例如分析 APK 文件属性如应用 ID、版本代码和版本名称查看文本、图像和字符串资源等等。 常用的如
apkanalyzer apk summary xxx.apk 输出应用 ID、版本代码和版本名称。 eg: com.myapp 5 1.1-beta二、概览
通过 APK 分析器的命令行版本您可以在构建流程完成后立即了解 APK 的组成并且可以比较两个 APK 之间的差异。 使用 APK 分析器可以减少调试应用中的 DEX 文件和资源相关问题所花费的时间并减小 APK 的大小。
apkanalyzer 包含在 Android SDK 命令行工具软件包中位于 android_sdk/cmdline-tools/version/bin/apkanalyzer。 或者您也可以在 Android Studio 中访问 APK 分析器工具如使用 APK 分析器来分析您的 build 中所述。
三、用法
Android Studio 包含一个 APK 分析器可让您在构建流程完成后立即了解 APK 或 Android App Bundle 文件的组成。 使用 APK 分析器可以减少调试应用的 DEX 文件和资源相关问题所用的时间并且有助于减小 APK 的大小。 您也可以使用 apkanalyzer 从命令行运行 APK 分析器。
下面我们分部讲解一下.
3.1 使用 Android Studio
可以通过以下三种方式访问 APK 分析器
将 APK 或 app bundle 拖到 Android Studio 的 Editor 窗口中。在 Project 窗口中切换到 Project 视图然后在默认的 build/output/apks/ 目录中双击相应 APK。在菜单栏中依次选择 Build Analyze APK然后选择您的 APK 或 app bundle。
打开后就可以直接查看相关信息了这一步是傻瓜式的操作了。
通过 apkanalyzer我们可以
3.1.1 查看文件和大小信息
3.1.2 查看 AndroidManifest.xml
3.1.3 查看 DEX 文件
3.1.4 过滤 DEX 文件树状视图
3.1.5 加载 ProGuard 映射
3.1.6 显示字节码、查找用法以及生成 Keep 规则
这个我们讲一下使用方式为先选定一个dex文件然后在下面展示类的窗口中选择一个类然后点击右键即可。 Show bytecode 对选定的类、方法或字段进行反编译并在对话框中显示 smali 字节码表示形式 Find usages 显示 DEX 代码的哪些其他部分对选定的类或方法进行了引用如果加载了 seeds.txt以粗体显示的节点表示 ProGuard 配置阻止在压缩过程中移除这些节点。 Generate Proguard Keep rule 生成 Keep 规则大白话就是如果你不想混淆这个类使用该选择之间生成keep规则即可。
3.1.7 查看代码和资源实体
3.1.8 比较文件
apkanalyzer
3.2 使用 命令行
apkanalyzer 的语法为
apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]global-options 这里我们常用的有 -h 简单易懂的格式-h 选项subject 要查询的内容常用的有 apk, files, manifest, dex, resourcesverb 要了解的关于 subject 的内容
apkanalyzer -h apk verb [options] apk-file [apk-file2]
apkanalyzer -h files verb [options] apk-file [apk-file2]
apkanalyzer -h manifest verb [options] apk-file [apk-file2]
apkanalyzer -h dex verb [options] apk-file [apk-file2]
apkanalyzer -h resources verb [options] apk-file [apk-file2]-h 可要可不要我们列一下常用命令
查看 APK 文件属性说明apkanalyzer apk summary xxx.apk输出应用 ID、版本代码和版本名称。 eg: com.myapp 5 1.1-betaapkanalyzer apk file-size xxx.apk输出 APK 的总文件大小apkanalyzer apk download-size xxx.apk输出 APK 的下载大小估计值apkanalyzer apk features xxx.apk输出 APK 用来触发 Play 商店过滤的功能apkanalyzer apk features --not-required xxx.apk输出 APK 用来触发 Play 商店过滤的功能。添加 --not-required 选项可在输出中包含标记为“非必需”的功能apkanalyzer apk compare xxx1.apk xxx2.apk比较 apk-file 和 apk-file2 的大小。输出示例旧大小/新大小/大小差异/路径apkanalyzer apk compare --different-only xxx1.apk xxx2.apk比较 apk-file 和 apk-file2 的大小,输出存在差异的目录和文件apkanalyzer apk compare --files-only xxx1.apk xxx2.apk比较 apk-file 和 apk-file2 的大小。不输出目录条目apkanalyzer apk compare --patch-size xxx1.apk xxx2.apk比较 apk-file 和 apk-file2 的大小。逐个显示每个文件的补丁大小估计值而不是原始差异
查看 APK 文件系统说明apkanalyzer files list xxx.apk列出 APK 中的所有文件apkanalyzer files cat --file path xxx.apk输出文件内容。您必须使用 --file path 选项如 --file /AndroidManifest.xml指定 APK 内的路径。
查看清单中的信息说明apkanalyzer manifest print xxx.apk以 XML 格式输出 APK 清单。apkanalyzer manifest application-id xxx.apk输出应用 ID 值。apkanalyzer manifest version-name xxx.apk输出版本名称值。apkanalyzer manifest version-code xxx.apk输出版本代码值。apkanalyzer manifest min-sdk xxx.apk输出最低 SDK 版本。apkanalyzer manifest target-sdk xxx.apk输出目标 SDK 版本。apkanalyzer manifest permissions xxx.apk输出权限列表apkanalyzer manifest debuggable xxx.apk输出应用是否可调试。
查看清单中的信息说明dex list apk-file输出 APK 中的 DEX 文件列表。dex references [–files path] [–files path2] apk-file输出指定 DEX 文件中的方法引用数。 默认包含所有 DEX 文件。添加 --files 选项可指明要包含的特定文件。 输出示例classes.dex 59598dex packages [option1 option2 …] apk-file输出 DEX 中的类树。在输出中P、C、M 和 F 分别表示软件包、类、方法和字段。x、k、r 和 d 分别表示已移除、保留、引用和定义的节点。dex code --class class [–method method]以 smali 格式输出类或方法的字节码。输出中必须包含类名并且要输出完全限定类名以进行反编译。添加 --method 选项可指定要反编译的方法。方法反编译的格式为 name(params)returnType例如 someMethod(Ljava/lang/String;I)V。
packages 添加以下选项可优化输出--defined-only在输出中仅包含 APK 中定义的类。
--files指定要包含的 DEX 文件名。默认所有 DEX 文件。
--proguard-folder file指定用于搜索映射的 Proguard 输出文件夹。
--proguard-mappings file指定 Proguard 映射文件。
--proguard-seeds file指定 Proguard 种子文件。
--proguard-usages file指定 Proguard 用法文件。
--show-removed显示由 Proguard 移除的类和成员。
输出示例类型/状态/定义的方法/引用的方法/字节大小/名称P d 1 1 85 g
P d 1 1 85 g.a
C d 1 1 85 g.a.a
M d 1 1 45 g.a.a java.lang.Object get()
C r 0 1 40 byte[]
M r 0 1 40 byte[] java.lang.Object clone()查看存储在 res/ 和 resources.arsc 中的资源说明resources packages输出资源表中定义的软件包列表。resources configs --type type [–package package] apk-file输出指定 type 的配置列表。 type 是资源类型如 string。 如果要指定资源表软件包名称请添加 --package 选项否则系统将使用第一个定义的软件包。resources value --config config --name name --type type [–package package] apk-file输出由 config、name 和 type 指定的资源的值。type 选项是资源类型如 string。如果要指定资源表软件包名称请添加 --package 选项否则系统将使用第一个定义的软件包。resources names --config config --type type [–package package] apk-file输出属于某个配置和类型的资源名称列表。type 选项是资源类型如 string。 如果要指定资源表软件包名称请添加 --package 选项否则系统将使用第一个定义的软件包。resources xml --file path apk-file以简单易懂的形式输出 XML 二进制文件。 添加 file 选项可指定文件的路径。
apkanalyzer
四、 推荐阅读
Java 专栏
SQL 专栏
数据结构与算法
Android学习专栏