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

相关文章
|
Web App开发 JavaScript 前端开发
安卓webview访问vue工程白屏/无响应/无法加载问题处理
本文目录 1. 问题出现 2. 尝试更换内嵌浏览器 3. 尝试各种babel配置 4. 二分排除法定位问题 5. 模拟器与真机测试还不一样 6. 总结 7. 反思
3498 0
|
数据中心
|
自然语言处理 安全 搜索推荐
阿里通义等提出Chronos:慢思考RAG技术助力新闻时间线总结
在数字化时代,新闻信息的指数级增长使得从海量文本中提取和整理历史事件的时间线变得至关重要。为了应对这一挑战,阿里巴巴通义实验室与上海交通大学的中断者提出了一种基于Agent的新闻时间线摘要新框架——CH RONOS,源自希腊神话中的时间之神柯罗诺斯,该框架通过迭代多轮的自我提问方式,结合检索增强生成技术,从互联网上检索相关事件信息,并生成时间顺序的新闻摘要,为新闻时间线摘要生成提供了一种全新的解决方案。
757 44
|
弹性计算 缓存 测试技术
阿里云ECS云服务器2核4G能支持多少人同时访问?2核4G5M并发量评测
阿里云ECS云服务器2核4G能支持多少人同时访问?2核4G5M并发量评测,2核4G服务器并发数性能测试,阿小云账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素
|
缓存 JavaScript 前端开发
WebView完全解读
WebView完全解读
1311 133
|
存储 JSON JavaScript
js中JSON的使用
介绍JSON的基本概念和在JavaScript中的使用方式,包括JSON格式的语法规则、使用`JSON.stringify()`和`JSON.parse()`方法进行对象与字符串的转换,以及处理JSON数组数据。
js中JSON的使用
|
Android开发
autojs-Hook按钮点击事件
牙叔教程 简单易懂
824 0
|
Web App开发 API Windows
取接口访问者信息[IP,浏览器,操作系统]免费API接口教程
此API用于获取访问者的IP地址、浏览器和操作系统信息,支持70多种浏览器和操作系统。通过POST或GET请求至`https://cn.apihz.cn/api/ip/getapi.php`,需提供用户ID和KEY。返回结果包括状态码、消息、IP、浏览器和操作系统信息。示例:{"code":200,"ip":"175.154.88.178","browser":"Chrome","os":"Windows 10"}。详情见官网文档。
560 0
|
JavaScript 前端开发 vr&ar
如何在 JavaScript 中对字符串进行索引、拆分和操作
如何在 JavaScript 中对字符串进行索引、拆分和操作
299 0
|
Linux Go iOS开发
本地开发环境大小写不敏感引发的问题
本地开发环境大小写不敏感引发的问题
472 0

热门文章

最新文章

下一篇
开通oss服务