通过 APK 分析器的命令行版本,您可以在构建流程完成后立即了解 APK 的组成,并且可以比较两个 APK 之间的差异。使用 APK 分析器可以减少调试应用中的 DEX 文件和资源相关问题所花费的时间,并减小 APK 的大小。

apkanalyzer 包含在 Android SDK 工具软件包中,位于 android_sdk/tools/bin/apkanalyzer 下。或者,您也可以在 Android Studio 中访问 APK 分析器工具,如使用 APK 分析器来分析您的 Build 中所述。

语法

apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]

subject 是您要查询的内容,可以是整个 APK,也可以是 APK 的一部分。subject 可以是以下任意一项。

apk:分析 APK 文件属性,如应用 ID、版本代码和版本名称。

files:分析 APK 文件内的文件。

manifest:分析 APK 文件内的清单的内容。

dex:分析 APK 文件内的 DEX 文件。

resources:查看文本、图像和字符串资源。

verb 是您要了解的关于 subject 的内容。命令中介绍了 subject、verb 及其选项。

您需要为每个命令指定一个 APK 文件。只有 apk compare 命令需要您指定第二个 APK。只要选项含义明确,任何选项都可以缩短。例如,--human-readable 全局选项可以缩短为 -h。以下示例会分析 apk (subject) 以获取其 file-size (verb),然后以简单易懂的格式(-h 选项)输出文件大小:

apkanalyzer -h apk file-size myapk.apk

全局选项

选项

说明

--human-readable

以简单易懂的格式输出大小。

命令

下表将命令说明按 subject 进行了整理,并列出了每个 subject 适用的 verb 和选项组合。

查看 APK 文件属性

说明

apk summary apk-file

输出应用 ID、版本代码和版本名称。

输出示例:com.myapp 5 1.1-beta

apk file-size apk-file

输出 APK 的总文件大小。

apk download-size apk-file

输出 APK 的下载大小估计值。

apk features [--not-required] apk-file

输出 APK 用来触发 Play 商店过滤的功能。添加 --not-required 选项可在输出中包含标记为“非必需”的功能。

输出示例:android.hardware.type.watch

android.hardware.microphone implied: requested android.permission.RECORD_AUDIO permission

apk compare [options] apk-file

apk-file2

比较 apk-file 和 apk-file2 的大小。您可以添加以下选项:

--different-only:输出存在差异的目录和文件。

--files-only:不输出目录条目。

--patch-size:逐个显示每个文件的补丁程序大小估计值,而不是原始差异。

输出示例(旧大小/新大小/大小差异/路径):39086736 48855615 9768879 /

10678448 11039232 360784 /classes.dex

18968956 18968956 0 /lib/

110576 110100 -476 /AndroidManifest.xml

...

查看 APK 文件系统

说明

files list apk-file

列出 APK 中的所有文件。

输出示例:/

/classes2.dex

/classes.dex

/assets/

/assets/asset.data

/AndroidManifest.xml

/resources.arsc

/res/

...

files cat --file path apk-file

输出文件内容。您必须使用 --file path 选项(如 --file

/AndroidManifest.xml)指定 APK 内的路径。

查看清单中的信息

说明

manifest print apk-file

以 XML 格式输出 APK 清单。

manifest application-id apk-file

输出应用 ID 值。

manifest version-name apk-file

输出版本名称值。

manifest version-code apk-file

输出版本代码值。

manifest min-sdk apk-file输出最低 SDK 版本。

manifest target-sdk apk-file

输出目标 SDK 版本。

manifest permissions apk-file

输出权限列表。

manifest debuggable apk-file

输出应用是否可调试。

访问 DEX 文件信息

说明

dex list apk-file

输出 APK 中的 DEX 文件列表。

dex references [--files path] [--files path2]

apk-file

输出指定 DEX 文件中的方法引用数。

默认包含所有 DEX 文件。添加 --files 选项可指明要包含的特定文件。

输出示例:classes.dex 59598

classes2.dex 8042

dex packages [option1 option2 ...] apk-file

输出 DEX 中的类树。在输出中,P、C、M 和 F 分别表示软件包、类、方法和字段。x、k、r 和 d 分别表示已移除、保留、引用和定义的节点。

添加以下选项可优化输出:

--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()

dex code --class class [--method method]

以 smali 格式输出类或方法的字节码。输出中必须包含类名,并且要输出完全限定类名以进行反编译。添加 --method 选项可指定要反编译的方法。方法反编译的格式为 name(params)returnType,例如 someMethod(Ljava/lang/String;I)V。

查看存储在 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 选项可指定文件的路径。

android apk 在线分析,apkanalyzer相关推荐

  1. Android APK加壳技术方案----代码实现

    本文章由Jack_Jia编写,转载请注明出处. 文章链接:http://blog.csdn.net/jiazhijun/article/details/8746917 作者:Jack_Jia    邮 ...

  2. Android APK的签名--笔记版 V1 签名和V2签名总结

    1. 工具介绍 jarsigner 是JDK提供的针对jar包签名的通用工具, 位于 JDK/bin/jarsigner apksigner 是Google官方提供的针对Android apk 签名验 ...

  3. 对 android apk 进行重新签名操作

    注:如何进行 android apk 的签名,不是本文主要内容,如需了解签名先关步骤,可以参考我的以下这篇文章. 地址:http://www.cnblogs.com/LuQingshang/p/392 ...

  4. 【转】Android APK反编译就这么简单 详解(附图)

     转自:http://blog.csdn.net/vipzjyno1/article/details/21039349/ [置顶] Android APK反编译就这么简单 详解(附图) 分类: and ...

  5. Visual Studio 2017为Android APK包签名

    Visual Studio 2017为Android APK包签名 为Android APK包签名,可以保证后期的App顺利升级.在Visual Studio 2015中,IDE会自动生成两个APK包 ...

  6. android+apk+反编译和再签名打包,Android:apk反编译步骤,打包、签名和逆向工程经验总结...

    思路一.apktool1.通过apktool反编译出资源和smaliapktool d MobileManager.apkF:\Android\decompile\apktoolapktool d M ...

  7. Java反编译Jar包和Android APK(类似.NET Reflector)

    JD-GUI 这个JD-GUI可以反编译jar包,用法就是打开jar包直接浏览. JD-Eclipse JD-Eclipse是个Eclipse插件,安装方法是打开Eclipse,菜单 Help – & ...

  8. android软件更新模块实现的技术和方法,Android APK签名原理及方法

    一 Android签名机制及原理 Android系统在安装APK的时候,首先会检验APK的签名,如果发现签名文件不存在或者校验签名失败,则会拒绝安装,所以应用程序在发布之前一定要进行签名.给APK签名 ...

  9. Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了 ...

  10. 爱加密Android APk 原理解析

    转载请标明出处:http://blog.csdn.net/u011546655/article/details/45921025 爱加密Android APK加壳原理解析 一.什么是加壳? 加壳是在二 ...

最新文章

  1. Python,OpenCV基于支持向量机SVM的手写数字OCR
  2. 牛客网 Wannafly挑战赛8 A.小Y和小B睡觉觉
  3. UA MATH565C 随机微分方程III Ito积分的构造
  4. vb.net2019- 串口serial port通信
  5. linux 路由指向策略,Linux 路由 学习笔记 之六 策略规则的添加
  6. 音视频技术开发周刊 | 159
  7. 网信金融 与 金银猫合作
  8. delphi 脚本引擎比较
  9. java中怎么制作单选框_java代码swing编程 制作一个单选按钮的Frame
  10. python3.7打包exe后有显示no utf-8_pyinstaller 打包生成exe之后运行提示‘no module name 'xxx'’错误...
  11. android UI进阶之仿iphone的tab效果
  12. 写一个shell 快速启动停止你的微服务吧
  13. php前台输出繁体,利用PHP输出控制功能做简繁体转换_php
  14. java做抽奖系统怎么搞_JAVA 随机抽奖系统 实现教程及代码
  15. lizard的基本使用
  16. 计算机设计项目符号和编号,项目符号和编号
  17. element-ui按需引入报错 Error: Cannot find module ‘babel-preset-es2015‘
  18. 微信公众平台开发入门教程(图文详解)
  19. The following signatures were invalid: EXPKEYSIG F42ED6FBAB17C654 的解决方法
  20. 【0基础入门课程】实战入门柿饼UI,带你实现动感汽车仪表盘、APP Store等

热门文章

  1. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-7.授权登录获取微信用户个人信息实战...
  2. 阶段3 3.SpringMVC·_03.SpringMVC常用注解_3 PathVariable注解
  3. 阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
  4. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第3节 综合案例_文件上传_2_综合案例_文件上传案例的客户端...
  5. Linux--Linux下安装JDk
  6. MyBatis笔记(一) 最简单的select
  7. postgresql 模式与用户,及跨库访问
  8. DBUtils——handler
  9. Android实时直播,一千行java搞定不依赖jni,延迟0.8至3秒,强悍移动端来袭
  10. 向java全台推送数据等