AAPT2简介

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

目录

  • 一、导读
  • 二、概览
  • 三、使用介绍
    • 3.3 编译
    • 3.2 链接
    • 3.3 dump(转储) 命令
    • 3.4 diff (差异)
    • 3.5 optimize(优化)
    • 3.6 convert (转换)
  • 四、 推荐阅读

在这里插入图片描述

一、导读

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

大致了解一下AAPT2,单独使用到的命令可能就dump(转储)多一些了。

二、概览

AAPT2(Android 资源打包工具)是一种构建工具,Android Studio 和 Android Gradle 插件使用它来编译和打包应用的资源。
AAPT2 会解析资源、为资源编制索引,并将资源编译为针对 Android 平台进行过优化的二进制格式。

可从命令行下载 Android SDK Build Tools,或者android Studio中的 sdkmanager 进行下载,可单独运行aapt2命令。

正常来讲,我们可以在 \Android\Sdk\build-tools\xxxx 目录下看到aapt2
在这里插入图片描述

三、使用介绍

3.3 编译

AAPT2 支持编译所有 Android 资源类型,如可绘制对象和 XML 文件。调用 AAPT2 进行编译时,每次调用都会传递一个资源文件作为输入。
然后,AAPT2 会解析该文件并生成一个扩展名为 .flat 的中间二进制文件。

3.2 链接

在链接阶段,AAPT2 会合并在编译阶段生成的所有中间文件(如资源表、二进制 XML 文件和处理过的 PNG 文件),并将它们打包成一个 APK。
此外,在此阶段还会生成其他辅助文件,如 R.java 和 ProGuard 规则文件

3.3 dump(转储) 命令

dump 用于输出 APK 的信息。

aapt2 dump sub-command filename.apk [options]

例如:以下示例会输出所指定 APK 的资源表中的内容,

aapt2 dump resources output.apk

上面这个命令有什么用呢, 比如,我们在进行apk 优化时,通过分析apk中大图,这个时候,我们看到的是混淆后的资源名,
这个时候,我们就可以通过这个命令进行apk分析,会输出以下的一些信息,如:

    resource 0x7f080005 drawable/abc_btn_to_on_mtrl_000(mdpi) (file) res/ee9.png type=PNG(hdpi) (file) res/5JC.png type=PNG(xhdpi) (file) res/Yhg.png type=PNG(xxhdpi) (file) res/FGd.png type=PNG(xxxhdpi) (file) res/YWo.png type=PNGresource 0x7f080006 drawable/abc_btn_to_on_mtrl_015(mdpi) (file) res/TQp.png type=PNG(hdpi) (file) res/06h.png type=PNG(xhdpi) (file) res/0Ig.png type=PNG(xxhdpi) (file) res/9Vg.png type=PNG(xxxhdpi) (file) res/I3D.png type=PNGresource 0x7f080007 drawable/abc_btn_material() (file) res/yP5.xml type=XMLresource 0x7f08000b drawable/abc_btn_on_mtrl_000(mdpi) (file) res/n_x.png type=PNG(hdpi) (file) res/SrE.png type=PNG(xhdpi) (file) res/BGR.png type=PNG(xxhdpi) (file) res/9tt.png type=PNG(xxxhdpi) (file) res/FYP.png type=PNG

这样就可以快速找到对应的资源,当然还有很多用处。

子命令说明
apc输出在编译期间生成的 AAPT2 容器(APC)的内容。
badging输出从 APK 的清单中提取的信息。
configurations输出 APK 中的资源使用的每项配置。
overlayable输出 APK 的可叠加资源。
packagename输出 APK 的软件包名称。
permissions输出从 APK 的清单提取的权限。
strings输出 APK 的资源表字符串池的内容。
styleparents输出 APK 中使用的样式的父项。
resources输出 APK 的资源表的内容。
xmlstrings输出 APK 的已编译 XML 中的字符串。
xmltree输出 APK 的已编译 XML 树。

转储选项

选项说明
–no-values禁止在显示资源时输出值。
–file file将文件指定为要从 APK 转储的参数。
-v提高输出的详细程度。

3.4 diff (差异)

使用 diff 比较两个 APK 并确定它们之间的任何差异。

aapt2 diff first.apk second.apk

当然,我们也可以之间使用android studio进行对比,方法如下:将一个apk直接拖入studio窗口,然后在右上角会有一个compare 按钮

在这里插入图片描述

3.5 optimize(优化)

optimize 用于在合并后的资源和 resources.arsc 被打包到 APK 之前对其运行优化。这项优化可将 APK 大小缩减约 1-3%,具体取决于所用资源的大小和数量。

aapt2 optimize options file[,file[..]]例如:
aapt2 optimize -o output.apk --enable-sparse-encoding input.apk示例会优化 input.apk 中的资源,并在 output.apk 中创建一个经过优化的新 APK

后面略

3.6 convert (转换)

默认情况下,AAPT compile 命令会将资源编译为适合 APK 的二进制格式。
可通过指定 --proto-format,以指定适合 AAB 文件的 protobuf 格式。convert 命令可在这两种格式之间转换 APK

aapt2 convert -o output-file options file[,file[..]]

AAPT2

四、 推荐阅读

Java 专栏

SQL 专栏

数据结构与算法

Android学习专栏

ddd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/101751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT AIGC 高效办公自动化案例

根据业务员姓名查找对应月份的科目成绩。 我们让ChatGPT AIGC来完成Excel公式。 Prompt:有一个表格A列为姓名,B列为语文,C列为数学,请根据J2单元格的姓名 ,查找出对应的数学成绩,请写出函数来完成 将生成的vlookup函数公式=VLOOKUP(J2, A:C, 3, FALSE)复制到表格中进行验…

Windows11下清理Docker Desktop与wsl的C盘空间占用

一、清理Docker Desktop的磁盘占用 //【查看docker 占用的空间】 docker system dfTYPE 列出了docker 使用磁盘的 4 种类型: Images:所有镜像占用的空间,包括拉取下来的镜像,和本地构建的。Containers:运行的容器占用…

整理mongodb文档:副本集成员可以为偶数

个人博客 整理mongodb文档:副本集成员可以为偶数 想了下,仲裁节点还是不想直接说太多,怕有的同学想太多,且本身副本集就偏向运维的,新手基本也没什么权限操作,就不多废话了。 文章概叙 文章从MongoDB是否可以用偶数…

【计算机网络笔记】计算机网络的结构

系列文章目录 什么是计算机网络? 什么是网络协议? 文章目录 系列文章目录网络边缘接入网络数字用户线路 (DSL)电缆网络典型家庭网络的接入机构(企业)接入网络 (Ethernet)无线接入网络 网络核心Internet结构最后 计算机网络的结构…

scratch保护环境 2023年5月中国电子学会图形化编程 少儿编程 scratch编程等级考试一级真题和答案解析

目录 scratch保护环境 一、题目要求 1、准备工作 2、功能实现 二、案例分析

panads操作excel

panads简介 pandas是基于Numpy创建的Python包,内置了大量标准函数,能够高效地解决数据分析数据处理和分析任务,pandas支持多种文件的操作,比如Excel,csv,json,txt 文件等,读取文件之…

android studio 我遇到的Task :app:compileDebugJavaWithJavac FAILED问题及解决过程

前几天一个网友在学习我的一个小项目的时候,发现无法达到目的,在帮他解决问题的过程中发现他用的是最近的giraffe版本的as,我用的是老版本,没办法打开他的项目,没办法只能卸载我的as,安装了最近版的diraffe…

华为云云耀云服务器L实例评测 | 实例使用教学之综合导览

华为云云耀云服务器L实例评测 | 实例使用教学之综合导览 实例使用教学实例场景体验实例性能评测实例评测使用介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器是什么华为云云耀云…

3、TCP状态

TCP状态 1、TCP通信时序 三次握手成功后,服务器和客户端进入了状态ESTABLISHED 当处于Time_WAIT状态后,不会马上变成CLOSE状态,会经历2MSL(约40秒),之后才会进入CLOSE状态。 总结: 主动发起…

NodeJs中使用JSONP和Cors实现跨域

跨域是为了解决浏览器请求域名,协议,端口不同的接口,相同的接口是不需要实现跨域的。 1.使用JSONP格式实现跨域 实现步骤 动态创建一个script标签 src指向接口的地址 定义一个函数和后端调用的函数名一样 实现代码 -- 在nodejs中使用http内…

单目标应用:墨西哥蝾螈优化算法(Mexican Axolotl Optimization,MAO)求解微电网优化MATLAB

一、微网系统运行优化模型 微电网优化模型介绍: 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、墨西哥蝾螈优化算法MAO 墨西哥蝾螈优化算法(Mexican Axolotl Optimization,MAO)由Yenny Villuendas-Rey 1等人于2021…

棱镜七彩参编!开源领域4项团体标准正式发布

近日,中电标2023年第27号团体标准公告正式发布,《T/CESA 1270.2-2023 信息技术 开源治理 第 2 部分:企业治理评估模型》、《T/CESA 1270.3-2023 信息技术 开源治理 第 3 部分:社区治理框架》、《T/CESA 1270.5-2023 信息技术 开源…

FastAPI学习-27 使用@app.api_route() 设置多种请求方式

对同一个访问函数设置多个http 请求方式 api_route 使用 使用methods 参数设置请求方式 from fastapi import FastAPIapp FastAPI() app.api_route(/demo/b, methods[get, post]) async def demo2(): return {"msg": "demo2 success"}判断请求方式…

IDEA 2023.2.2图文安装教程及下载

IDE 系列的第二个年度更新现已发布,涵盖 IntelliJ IDEA、WebStorm、PyCharm、DataGrip、GoLand、DataSpell 以及 All Products Pack 订阅中包含的其他工具。该版本还包括多项用户体验增强功能,例如 Search Everywhere(随处搜索)中…

上个月Balada Injector攻击中有超过17,000个WordPress网站被黑

导语 最近,一场名为Balada Injector的攻击活动引起了广泛关注。这次攻击以WordPress网站为目标,据统计,有超过17,000个网站受到了感染。在本文中,我们将详细介绍这次攻击的概述、攻击手段以及如何保护自己的网站。 攻击概述 Balad…

bash上下键选择选项demo脚本

效果如下: 废话不多说,上代码: #!/bin/bashoptions("111" "222" "333" "444") # 选项列表 options_index0 # 默认选中第一个选项 options_len${#options[]}echo "请用上下方向键进行选择&am…

Flutter配置Android SDK路径

在使用VSCode作为开发Flutter的工具时,当选择调试设备时,通常看不到android的模拟器,只能看到Chrome之类的。 原因就是Flutter找不到Android的SDK路径,所以无法识别模拟器,我们用flutter doctor命令检查环境时&#xf…

vuex入门

文章目录 一、vuex简介1.1 概述1.2 核心 二、使用2.1 安装2.2 创建store模块2.3 在src/store/index.js中写入内容2.4.在src/main.js中导入并使用store实例2.5.在views新建vuex目录,添加Page1.vue和Page2.vue文件2.6.配置路由2.7.在LeftNav.vue添加内容 三、存取值3.1 state直接…

C/C++ 线程超详细讲解(系统性学习day10)

目录 前言 一、线程基础 1.概念 2.一个进程中多个线程特征 2.1 线程共有资源 2.2 线程私有资源 3.线程相关的api函数 3.1 创建线程 创建线程实例代码如下: 需要特别注意的是: -lpthread和-pthread的区别 3.2 给线程函数传参 传参实例代码如…

pytoch M2芯片测试

今天才发现我的新片是M2芯片,而不是M1芯片,有点尴尬 参考网址 https://www.oldcai.com/ai/pytorch-train-MNIST-with-gpu-on-mac/ 测试结果如下 M2_cpu.py # https://www.oldcai.com/ai/pytorch-train-MNIST-with-gpu-on-mac/ import torch from tor…