aapt的用法

2023-10-21 10:20
文章标签 用法 aapt

本文主要是介绍aapt的用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!





什么是aapt?
执行命令: C:\Users\Xiaopeng>aapt

Android Asset Packaging Tool

1. 列出apk包的内容
aapt l[ist] [-v] [-a] file.{zip,jar,apk}

注:filepath是apk存放的路径

1.1 aapt l -v filepath/..apk  :以table的形式列出来    (不过我用起来老是出,win7和xp都一样,大家可以试一下)


1.2 aapt l -a filepath/..apk    : 详细的列出apk的内容

由于内容太多,我们把内容都存放到txt文件里,打开查看

1.3 aapt l filepath/..apk  : 查看apk内容



由于内容太多,我们把内容都存放到txt文件里,打开查看



对比一下可以看出, aapt l -a filepath/..apk 显示的apk内容更详细

2. 查看apk的一些信息

aapt d[ump] [--values] WHAT file.{apk} [asset [asset ...]]
   badging          Print the label and icon for the app declared in APK.
   permissions      Print the permissions from the APK.
   resources        Print the resource table from the APK.
   configurations   Print the configurations in the APK.
   xmltree          Print the compiled xmls in the given assets.
   xmlstrings       Print the strings of the given compiled xml assets.

aapt d badging filepath/..apk :显示标签、图标和应用程序的相关描述。  (这个命令很有用啊,我写过一个自动化更新下载的程序,就用到这个命令来校验应用的包名、版本和权限)


aapt d permissions filepath/..apk :显示apk所具有的系统权限



aapt d badging filepath/..apk : 显示apk的资源列表  (很多内容,如果想看最好还是转到txt里面查看吧)


aapt d configurations filepath/..apk : 显示apk的配置信息    


aapt d xmltree filepath/..apk  xmlname :  以树型显示apk中某个xml文件

例:以树型显示QQapk中 AndroidManifest.xml文件


aapt d xmlstrings filepath/..apk  xmlname :  显示apk中某个xml文件中所有的字符

例:显示QQapk中 AndroidManifest.xml中的字符


3. 编译android资源

aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \
        [-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \
        [--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] \
        [--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] \
        [--rename-manifest-package PACKAGE] \
        [--rename-instrumentation-target-package PACKAGE] \
        [--utf16] [--auto-add-overlay] \
        [--max-res-version VAL] \
        [-I base-package [-I base-package ...]] \
        [-A asset-source-dir]  [-G class-list-file] [-P public-definitions-file] \
        [-S resource-sources [-S resource-sources ...]] \
        [-F apk-file] [-J R-file-dir] \
        [--product product1,product2,...] \
        [-c CONFIGS] [--preferred-configurations CONFIGS] \
        [-o] \
        [raw-files-dir [raw-files-dir] ...]

哇,有点多,参考别人给出的解释:

-f    如果编译出来的文件已经存在,强制覆盖
-m  使生成的包的目录存放在-J参数指定的目录
-J    指定生成的R.java 的输出目录 
-S    res文件夹路径
-A    assert文件夹路径
-I     某个版本平台的android.jar的路径
-F    具体指定APK文件的输出 

实例:

一. 将工程的资源编译到R.java文件

aapt package -m -J <R.java文件夹> -S <res路径> -I <android.jar路径> -M<AndroidManifest.xml路径>

实例:
1. cmd -- 定位到android源文件目录,如: cd   E:\wirelessqa\hi ---  根据上面给出的命令套进去

<R.java文件夹>  : gen\com\perf\
<res路径>:  res
<android.jar路径> :    
E:\Software\android-sdk-windows-1.6_r1\platforms\android-1.6\android.jar  这个要看你apk对应支持的android版本
这里有很多,找到对应的

                                                                                                                
<AndroidManifest.xml路径>:  AndroidManifest.xml 

OK,执行命令: 

aapt p -f -m -J gen\com\perf\ -S res -I E:\Software\android-sdk-windows-1.6_r1\platforms\android-1.6\android.jar -M AndroidManifest.xml



二. 将工程的资源编译到一个APK包里

aapt package -f -S <res路径> -I <android.jar路径> -A <assert路径> -M <AndroidManifest.xml路径> -F <输出的包目录+包名>

实例:
1. cmd -- 定位到android源文件目录,如: cd  E:\wirelessqa\hi ---  根据上面给出的命令套进去
<res路径>: res
<android.jar路径>:
E:\Software\android-sdk-windows-1.6_r1\platforms\android-1.6\android.jar
<assert路径> : assets
<AndroidManifest.xml路径>:  当前目录下的 AndroidManifest.xml
<输出的包目录+包名>:  当前目录下 hi.apk

OK,执行命令: 
aapt p -f -S res -I E:\Software\android-sdk-windows-1.6_r1\platforms\android-1.6\android.jar -A assets -M AndroidManifest.xml -F hi.apk

4. 移除打包好的apk中的文件

aapt r[emove] [-v] file.{zip,jar,apk} file1 [file2 ...]

实例:将apk中的某个文件移除掉     命令:aapt r <你的apk文件路径> <想要移除的文件名>



先从hi.apk除除AndroidManifest.xml文件,再尝试去显示,结果无法找到,证明我们已经移除成功。

5. 添加文件到打包好的apk中

aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]

实例:将文件添加到打包好的apk文件中    命令:aapt a <你的apk文件路径> <想要添加的文件路径>



在这里我遇到一个问题,添加文件成功之后再去尝试显示文件,结果提示文件损坏,至于是什么问题我还不知道,如果大家谁知道可以告诉我一下。

6. PNG文件预处理

aapt c[runch] [-v] -S resource-sources ... -C output-folder ...        做PNG文件的预处理,并将结果存储到一个文件夹中

实例: aapt c -S <res路径>  -C <想存放的文件夹路径>


结果:

7. 显示aapt版本

aapt v[ersion]   
 

这篇关于aapt的用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/dongsheng186/article/details/46618089
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/253748

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

Java8 Collectors.toMap() 的两种用法

《Java8Collectors.toMap()的两种用法》Collectors.toMap():JDK8中提供,用于将Stream流转换为Map,本文给大家介绍Java8Collector... 目录一、简单介绍用法1:根据某一属性,对对象的实例或属性做映射用法2:根据某一属性,对对象集合进行去重二、Du

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

Java 中 Optional 的用法及最佳实践

《Java中Optional的用法及最佳实践》在Java开发中,空指针异常(NullPointerException)是开发者最常遇到的问题之一,本篇文章将详细讲解Optional的用法、常用方... 目录前言1. 什么是 Optional?主要特性:2. Optional 的基本用法2.1 创建 Opti

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1