iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android apkanalyzer简介
  • 916
分享到

Android apkanalyzer简介

androidapkanalyzer 2023-10-20 09:10:18 916人浏览 安东尼
摘要

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端移动开发、商业变现、人工智能等,希望大家多多支持。

目录

在这里插入图片描述

一、导读

我们继续总结学习基础知识,温故知新。

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, resources
  • verb :要了解的关于 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-beta
apkanalyzer 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 59598
dex 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 gP d 1 1 85 g.aC d 1 1 85 g.a.aM 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学习专栏

ddd

来源地址:https://blog.csdn.net/fumeidonga/article/details/133042052

--结束END--

本文标题: Android apkanalyzer简介

本文链接: https://www.lsjlt.com/news/432903.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android apkanalyzer简介
    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导...
    99+
    2023-10-20
    android apkanalyzer
  • Android 布局简介
    目录  序  正文 FrameLayout(帧布局) 简介 属性 栗子 LinearLayout(线性布局) 简介 属性 栗子 RelativeLayout(相对布局) 简介 属性 栗子 TableLayout(表格布局) 简介 属...
    99+
    2022-06-06
    布局 Android
  • Android Vold简介(一)
    Vold(volume Daemon),即Volume守护进程,用来管理Android中存储类的热拔插事件,处于Kernel和Framework...
    99+
    2022-06-06
    Android
  • Android Socket 简单介绍
    文章目录 前言一、Socket是什么?百度百科的解释我自己的理解 二、简单示例1.服务端2.客户端3.布局4.实现 参考总结 前言 最近需求需要使用Socket进行通讯,我在工作...
    99+
    2023-09-23
    android
  • 简介Android 中的AsyncTask
    AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合。其实AsyncTask并不是那么好,甚至有些糟糕。本文我会讲AsyncTask会引起哪些问...
    99+
    2022-06-06
    asynctask Android
  • Android OKHttp使用简介
    目录配置 创建OkHttpClient 同步get请求异步get请求 同步post请求异步post请求上传文件表单提交下面是官网给出的OKHTTP的特点: 支持HTTP/2...
    99+
    2022-11-12
  • Android GKI 架构简介
    0. 前言 本文简单介绍下GKI 相关的知识点,方便更快的了解GKI 概念和架构,如果想要了解细节,还是要看官网并结合实际。 相关术语: ACK:Android Common Kernel AOSP:Android Open Source...
    99+
    2023-09-04
    android GKI ACK
  • Android系统架构简介
    一,Android系统架构 Android的系统架构主要分为五层,见下图: 从下至上依次是: Linux内核: Android基于Linux,由Linux提供核心系统服务,如安全、内存管理、进程管...
    99+
    2023-09-14
    android 系统架构
  • Android InputMethodManager输入法简介
    一、结构 public final class InputMethodManager extends Object Java.lang.Object android.view....
    99+
    2022-06-06
    Android
  • Android 命令行工具简介
    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导...
    99+
    2023-10-04
    android 命令行 log
  • Android init.rc文件简单介绍
    Android init.rc文件简单介绍 init.rc脚本是由Android中linux的第一个用户级进程init进行解析的。 init.rc 文件并不是普通的配置文件,而...
    99+
    2022-06-06
    init Android
  • Android中的Adapter简单介绍
    Android中的Adapter在自定义显示列表时非常有用,比如SimpleAdapter,它的构造函数是:  public SimpleAdapter (Context co...
    99+
    2022-06-06
    adapter Android
  • Android中的SQLite数据库简介
    SQLite简介: SQLite是Android系统采用的一种开源的轻量级的关系型的数据库,Android中允许每个应用程序都拥有自己独立的数据库,每个应用程序的数据库的位置一...
    99+
    2022-06-06
    sqlite数据库 SQLite Android
  • Android 单元测试用法 简介
      本代码中只简单写了一个类,可以在该类中增加想要测试的功能项。 Focus2AndroidTest测试类 package com.example.aaaaa; i...
    99+
    2022-06-06
    单元 单元测试 测试 Android
  • Android Framework Application Framework层简单介绍
    引言               Andro...
    99+
    2022-06-06
    framework Android
  • Android图形显示流程简介
    注:本文缩写说明 本文代码都是基于Android S 一、概述 本文将对从App画出一帧画面到这帧画面是如何到达屏幕并最终被人眼看到的这一过程进行简要分析,并将这其中涉及到的各个流程与其在systrace上的体现对应起来,期望最终...
    99+
    2023-09-05
    android
  • Android Accessibility 辅助功能简单介绍
    Android Accessibility 辅助功能 Accessibility: 许多Android使用者因为各种情况导致他们要以不同的方式与手机交互。 这包括了有些用户...
    99+
    2022-06-06
    Android
  • Android popupwindow简单使用方法介绍
    先看下效果 1.首页 package com.yskj.jh.demopopupwindow; import android.content.Context; impo...
    99+
    2022-06-06
    方法 popupwindow Android
  • Android Retrofit的简单介绍和使用
    Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp做了一层封装。把网络请求都交给给了Okhttp,我们只需要通过简单的配置就能使用re...
    99+
    2022-06-06
    retrofit Android
  • MongoDB(一):NoSQL简介、MongoDB简介
    1. NoSQL简介 1.1 什么是NoSQL NoSQL(NoSQL= Not Only SQL),意即“不仅仅是SQL",是一项全新的数据库理念,泛指非关系型的数据库。 1.2 为什么需要NoSQL 随着互联网web2.0网站的兴起,非...
    99+
    2019-07-31
    MongoDB(一):NoSQL简介 MongoDB简介
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作