android aapt使用小结

转自http://blog.csdn.net/brave_heart_lxl/article/details/6187260

aaptstandsforAndroidAssetPackagingToolandisincludedinthetools/directoryoftheSDK.Thistoolallowsyoutoview,create,andupdateZip-compatiblearchives(zip,jar,apk).Itcanalsocompileresourcesintobinaryassets.

aapt即AndroidAssetPackagingTool,在SDK的tools/目录下.该工具可以查看,创建,更新ZIP格式的文档附件(zip,jar,apk).也可将资源文件编译成二进制文件.

Thoughyouprobablywon'toftenuseaaptdirectly,buildscriptsandIDEpluginscanutilizethistooltopackagetheapkfilethatconstitutesanAndroidapplication.

尽管你可能没有直接使用过aapt工具,但是buildscripts和IDE插件会使用这个工具打包apk文件构成一个Android应用程序.

Formoreusagedetails,openaterminal,gotothetools/directory,andrunthecommand:

获取更多的实用信息,请打开终端控制台,到tools/目录下,执行命令:

LinuxorMacOSX:

./aapt

Windows:

aapt.exe

本文小结了一下该工具的用法。

1.aaptl[ist][-v][-a]file.{zip,jar,apk}

ListcontentsofZip-compatiblearchive.

1.1列出压缩文件目录

aaptl<file_path.apk>

参数:

-v:会以table的形式输出目录,table的表目有:Length、Method、Size、Ratio、Date、Time、CRC-32、Name。

其中Method表示压缩形式,有:Deflate及Stored两种,即该Zip目录采用的算法是压缩模式还是存储模式;可以看出resources.arsc、*.png采用压缩模式,而其它采用压缩模式。

Ratio表示压缩率。CRC-32未明其意,Sodino盼指教。

-a:会详细输出所有目录的内容。

效果图:aapt_list.JPG

2.aaptd[ump][--values]WHATfile.{apk}[asset[asset...]]

badgingPrintthelabelandiconfortheappdeclaredinAPK.

permissionsPrintthepermissionsfromtheAPK.

resourcesPrinttheresourcetablefromtheAPK.

configurationsPrinttheconfigurationsintheAPK.

xmltreePrintthecompiledxmlsinthegivenassets.

xmlstringsPrintthestringsofthegivencompiledxmlassets.

2.1查看apk包的packageName、versionCode、applicationLabel、launcherActivity、permission等各种详细信息

aaptdumpbadging<file_path.apk>

效果图:aapt_dump_badging.JPG

2.2查看权限

aaptdumppermissions<file_path.apk>

效果图:aapt_dump_permissions.JPG

2.3查看资源列表

aaptdumpresources<file_path.apk>

一般都会输出很多的信息,如要全部查看,请用下面这两句:

aaptdumpresources<file_path.apk>>sodino.txt

sodino.txt

这样会把所有的信息通过重定向符">"输出到sodino.txt文件中,然后再打开该文件即可查看。

2.4查看apk配置信息

aaptdumpconfigurations<file_path.apk>

2.5查看指定apk的指定xml文件。

aaptdumpxmltree<file_path.apk>res/***.xml

以树形结构输出的xml信息。

aaptdumpxmlstrings<file_path.apk>res/***.xml

输出xml文件中所有的字符串信息。

效果图:aapt_dump_xmltree.JPG

3

由于此处代码量比较大,本人写成批处理形式了。

使用aapt生成R.java

rem测试的工程目录下必须得有gen文件夹,否则会提示:UnabletoopenclassfileR.java:Nosuchfileordirectory

%aapt%package-f-m-J%GEN%-S%RES%-I%ANDROID_JAR%-M%ANDROID_MANIFEST_XML%

使用aapt生成资源包文件

%aapt%package-f-M%ANDROID_MANIFEST_XML%-S%RES%-A%ASSETS%-I%ANDROID_JAR%-F%RESOURCE%

%GEN%:存放的R.java文件夹路径。

%RES%:res文件夹路径。

%ANDROID_JAR%:引用的android.jar路径。

%ANDROID_MANIFEST_XML%:工程AndroidManifest.xml绝对路径。

%ASSETS%:asset文件夹路径。

%RESOURCE%:生成的resouces.arsc存放路径。

参考:

Android系列之Android命令行手动编译打包详解

http://blog168.chinaunix.net/space.php?uid=22957718&do=blog&cuid=2322671

其余的不解释,直接见效果图:

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

DeletespecifiedfilesfromZip-compatiblearchive.

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

AddspecifiedfilestoZip-compatiblearchive.

aaptv[ersion]

Printprogramversion.

效果图:aapt_r_a_v.JPG