【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

相关文章

SQL Server中的PIVOT与UNPIVOT用法具体示例详解

《SQLServer中的PIVOT与UNPIVOT用法具体示例详解》这篇文章主要给大家介绍了关于SQLServer中的PIVOT与UNPIVOT用法的具体示例,SQLServer中PIVOT和U... 目录引言一、PIVOT:将行转换为列核心作用语法结构实战示例二、UNPIVOT:将列编程转换为行核心作用语

Spring Boot项目打包和运行的操作方法

《SpringBoot项目打包和运行的操作方法》SpringBoot应用内嵌了Web服务器,所以基于SpringBoot开发的web应用也可以独立运行,无须部署到其他Web服务器中,下面以打包dem... 目录一、打包为JAR包并运行1.打包为可执行的 JAR 包2.运行 JAR 包二、打包为WAR包并运行

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

Java中 instanceof 的用法详细介绍

《Java中instanceof的用法详细介绍》在Java中,instanceof是一个二元运算符(类型比较操作符),用于检查一个对象是否是某个特定类、接口的实例,或者是否是其子类的实例,这篇文章... 目录引言基本语法基本作用1. 检查对象是否是指定类的实例2. 检查对象是否是子类的实例3. 检查对象是否

Java中的内部类和常用类用法解读

《Java中的内部类和常用类用法解读》:本文主要介绍Java中的内部类和常用类用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录内部类和常用类内部类成员内部类静态内部类局部内部类匿名内部类常用类Object类包装类String类StringBuffer和Stri

Python将字库文件打包成可执行文件的常见方法

《Python将字库文件打包成可执行文件的常见方法》在Python打包时,如果你想将字库文件一起打包成一个可执行文件,有几种常见的方法,具体取决于你使用的打包工具,下面就跟随小编一起了解下具体的实现方... 目录使用 PyInstaller基本方法 - 使用 --add-data 参数使用 spec 文件(

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

Android 实现一个隐私弹窗功能

《Android实现一个隐私弹窗功能》:本文主要介绍Android实现一个隐私弹窗功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 效果图如下:1. 设置同意、退出、点击用户协议、点击隐私协议的函数参数2. 《用户协议》、《隐私政策》设置成可点击的,且颜色要区分出来res/l