AAPT2简介

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

在这里插入图片描述

一、导读

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

大致了解一下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=PNG
      
    resource 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=PNG
      
    resource 0x7f080007 drawable/abc_btn_material
      () (file) res/yP5.xml type=XML
      
    resource 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

相关文章
|
编解码 前端开发 测试技术
这可能是市面上最好用的iOS云真机
最好用的iOS云真机,是怎么实现的呢?快来了解下吧!
3715 0
这可能是市面上最好用的iOS云真机
|
数据中心
【异常解决】postman请求提示Full authentication is required to access this resource
在使用 postman 测试接口时,该接口需要在 Header 中传入 access_token,实际上也在请求的 Header 中添加上了 access_token 参数,但是服务端还是返回401错误码,提示未登录,Full authentication is required to access this resource。
1499 1
【异常解决】postman请求提示Full authentication is required to access this resource
|
Java
BTrace如何使用?
BTrace如何使用?
300 0
|
存储 Linux Android开发
Rockchip u-boot阶段命令行和代码方式读取u盘内容并解析
Rockchip u-boot阶段命令行和代码方式读取u盘内容并解析
2283 2
|
弹性计算 缓存 测试技术
阿里云ECS云服务器2核4G能支持多少人同时访问?2核4G5M并发量评测
阿里云ECS云服务器2核4G能支持多少人同时访问?2核4G5M并发量评测,2核4G服务器并发数性能测试,阿小云账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素
|
Android开发
autojs-Hook按钮点击事件
牙叔教程 简单易懂
735 0
|
定位技术 图形学
【Unity实战】零代码实现物理2d绳子和绳桥效果——Hinge Joint 2D的使用
【Unity实战】零代码实现物理2d绳子和绳桥效果——Hinge Joint 2D的使用
1395 0
|
安全 Android开发
Android 系统签名
Android 系统签名
255 0