【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

相关文章

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打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

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

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

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

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 的

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

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

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