AAPT2简介

news2024/11/18 18:35:57

关于作者: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=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

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

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

相关文章

[CISCN 2019初赛]Love Math - RCE(异或绕过)

[CISCN 2019初赛]Love Math 1 解题流程1.1 分析1.2 解题题目代码: <?php //听说你很喜欢数学,不知道你是否爱它胜过爱flag if(!isset($_GET[c]))

【Python】QTreeWidget树形结构添加

源码&#xff1a; # 参考网址&#xff1a; https://blog.csdn.net/weixin_42286052/article/details/129532631 import os.path import sys from PySide6.QtWidgets import QApplication,QMainWindow,QHBoxLayout,QVBoxLayout,QPushButton,QTreeWidget,QTreeWidgetItem,QTreeW…

抖音自动养号脚本+抖音直播控场脚本

功能描述 一.抖音功能 1.垂直浏览 2.直播暖场 3.精准引流 4.粉丝留言 5.同城引流 6.取消关注 7.万能引流 8.精准截流 9.访客引流 10.直播间引流 11.视频分享 12.榜单引流 13.搜索引流 14.点赞回访 15.智能引流 16.关注回访 介绍下小红书数据挖掘 搜索关键词&…

uml简单用例图怎么画(要素,文字形式)

参与者&#xff08;三类&#xff09;&#xff1a;人&#xff0c;外部系统&#xff0c;设备 用例&#xff1a; 系统外部可见的用例单元 表示前俩的关系&#xff1a;带箭头的实线&#xff08;参与者1——用例1&#xff09; 【实线为了观看我标红了&#xff0c;实际没有的】 1.i…

vue实现一个简单导航栏

Vue之简单导航栏 在vue中&#xff0c;想要实现导航栏的功能&#xff0c;除了用传统的a标签以外&#xff0c;还可以使用路由——vue-router来实现&#xff0c;前端小白在此记录一下学习过程&#xff08;默认已经搭建好vue的脚手架环境&#xff09;&#xff1a; 建立项目并安装…

【数据结构-字符串 四】【字符串识别】字符串转为整数、比较版本号

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【字符串转换】&#xff0c;使用【字符串】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

Andriod学习笔记(一)

写在前面的话 App开发的编程语言Java和KotlinXML App连接的数据库App工程目录结构模块级别的编译配置文件清单文件 界面显示与逻辑处理 安卓是一种基于Linux内核的自由及开放源代码的操作系统&#xff0c;主要使用于移动设备。 Mininum SDK表示安卓该版本以上的设备都可以运行该…

Vue计算属性的使用

当我们想要通过data中运算得到一个新的数据时&#xff0c;我们就可以使用计算属性。比如&#xff1a;data里的单价price和数量number可以相乘计算总价sum&#xff0c;这个sum我们就称为计算属性。 计算属性的语法格式&#xff1a; computed:{ 计算属性名称 ( ) { return 计算…

LAS Spark 在 TPC-DS 的优化揭秘

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 文章主要介绍了火山引擎湖仓一体分析服务 LAS Spark&#xff08;下文以 LAS Spark 指代&#xff09;在 TPC-DS 上的性能突破与优化策略。TPC-DS 是一个模拟复杂数据…

4、在 CentOS 8 系统上安装 pgAdmin 4

pgAdmin 4 是一个开源的数据库管理工具&#xff0c;专门用于管理和操作 PostgreSQL 数据库系统。它提供了一个图形用户界面&#xff08;GUI&#xff09;&#xff0c;使用户能够轻松地连接到 PostgreSQL 数据库实例&#xff0c;执行 SQL 查询&#xff0c;管理数据库对象&#xf…

网络拓扑自动扫描工具

topology-scanner Topology-Scanner是WeOps团队免费开放的一个网络拓扑自动扫描模块&#xff0c;可以自动发现网络设备的类型、网络设备之间的互联 使用方式 java -jar ./topology-scanner.jar --config_path./config/ 配置说明 1. 拓扑发现请求参数文件(request.json) i…

Web3 新手攻略:9 个不可或缺的 APP 助力你踏入加密领域

Web3世界充满了无限机遇&#xff0c;但要掌握它&#xff0c;您需要合适的工具&#xfffd;&#xfffd;&#xfffd;。今天&#xff0c;我将为您介绍9款Web3必备APP&#xff0c;涵盖钱包、DEX、和工具三大类别。而且&#xff0c;我要特别强烈推荐一个强大的钱包——Bitget Wall…

基于java+vue+springboot的家庭理财记账信息网站

运行环境 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven 项目介绍 在这科技…

Bitxhub跨链平台

BitXHub跨链平台 跨链系统架构 过程 在跨链合约中调用统一写好的Broker合约Broker合约抛出事件由Plugin捕获到封装成平台统一的数据结构提交到中继链中目的链的跨链网关从中继链中同步IBTP数据结构网关将该数据结构通过Plugin提交到目的链 中继链体系架构 中继链的模块和流程…

【Vue面试题十七】、你知道vue中key的原理吗?说说你对它的理解

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;你知道vue中key的原理吗…

10.本项目的简单介绍及所用工具

本项目的简单介绍及所用工具 本项目的层次架构适合初学者或者有一些基础的同学&#xff0c;项目整体简单明了&#xff0c;有着非常严谨的逻辑思维&#xff0c;并且在前面文章中也讲了一些项目中所需要的软件安装配置以及一些前置的在本项目中所需要的java基础知识。 项目名称 …

TCPUDP

TCP 1.什么是TCP TCP是处于运输层的通信协议&#xff0c;该协议能够实现数据的可靠性传输。 2.TCP报文格式 源端口和目的端口&#xff1a;各占两个字节&#xff0c;发送进程的端口和接收进程的端口号。 序号&#xff1a;占4个字节,序号如果增加到溢出&#xff0c;则下一个序…

几种预训练模型微调方法和peft包的使用介绍

文章目录 微调方法Lora(在旁边添加训练参数)Adapter&#xff08;在前面添加训练参数&#xff09;Prefix-tuning&#xff08;在中间添加训练参数&#xff09;Prompt tuning PEFTPEFT 使用PeftConfigPeftModel保存和加载模型 微调方法 现流行的微调方法有&#xff1a;Lora,promp…

【MySql】5- 实践篇(三)

文章目录 1. 日志和索引问题1. 日志相关问题1.1 两阶段提交 2. 业务设计相关问题 2. order by工作原理2.1 全字段排序2.2 rowid 排序2.3 全字段排序 VS rowid 排序 3. 正确显示随机消息3.1 内存临时表3.2 磁盘临时表3.3 随机排序方法 1. 日志和索引问题 1. 日志相关问题 1.1 …

NodeJs内置模块child_process

内置模块child_process子进程 写在前面 子进程是Nodejs的核心Api&#xff0c;如果你会shell命令&#xff0c;它会有非常大的帮助&#xff0c;或者你喜欢编写前端工程化工具之类&#xff0c;它也有很大的用处&#xff0c;以及处理CPU密集型应用。 创建子进程 Nodejs创建子进…