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