【Android自动化打包】01. aapt的用法

2023-10-21 10:20

本文主要是介绍【Android自动化打包】01. 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]   
 

 

这篇关于【Android自动化打包】01. aapt的用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/253752

相关文章

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

Flutter打包APK的几种方式小结

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通... 目录前言1. android原生打包APK方式2. Flutter通过原生工程打包方式3. Futte

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

JavaScript Array.from及其相关用法详解(示例演示)

《JavaScriptArray.from及其相关用法详解(示例演示)》Array.from方法是ES6引入的一个静态方法,用于从类数组对象或可迭代对象创建一个新的数组实例,本文将详细介绍Array... 目录一、Array.from 方法概述1. 方法介绍2. 示例演示二、结合实际场景的使用1. 初始化二

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

Python实现自动化表单填写功能

《Python实现自动化表单填写功能》在Python中,自动化表单填写可以通过多种库和工具实现,本文将详细介绍常用的自动化表单处理工具,并对它们进行横向比较,可根据需求选择合适的工具,感兴趣的小伙伴跟... 目录1. Selenium简介适用场景示例代码优点缺点2. Playwright简介适用场景示例代码