cmd>sdk>aapt 命令可應用於查看apk包名、主activity、版本等很多信息

aapt即Android Asset Packaging Tool.本文小結了一下該工具的用法。


1.  aapt l[ist] [-v] [-a] file.{zip,jar,apk}
   List contents of Zip-compatible archive.
1.1 列出壓縮文件目錄
aapt l <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
list


2. 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.

2.1 查看apk包的packageName、versionCode、applicationLabel、launcherActivity、permission等各種詳細信息
aapt dump badging <file_path.apk>
效果圖:aapt_dump_badging.JPG
badging

2.2 查看權限
aapt dump permissions <file_path.apk>
效果圖:aapt_dump_permissions.JPG

permission

2.3 查看資源列表
aapt dump resources <file_path.apk>
一般都會輸出很多的信息,如要全部查看,請用下面這兩句:
aapt dump resources <file_path.apk>   > sodino.txt
sodino.txt
這樣會把所有的信息通過重定向符">"輸出到sodino.txt文件中,然後再打開該文件即可查看。


2.4 查看apk配置信息
aapt dump configurations <file_path.apk>


2.5 查看指定apk的指定xml文件。
aapt dump xmltree <file_path.apk> res/***.xml
以樹形結構輸出的xml信息。
aapt dump xmlstrings <file_path.apk> res/***.xml
輸出xml文件中所有的字符串信息。
效果圖:aapt_dump_xmltree.JPG

xmltree

 

 

3
由於此處代碼量比較大,本人寫成批處理形式了。

使用aapt生成R.java
rem 測試的工程目錄下必須得有gen文件夾,否則會提示:Unable to open class file R.java:No such file or directory
%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



其餘的不解釋,直接見效果圖:
 aapt r[emove] [-v] file.{zip,jar,apk} file1 [file2 ...]
   Delete specified files from Zip-compatible archive.

 aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]
   Add specified files to Zip-compatible archive.

 aapt v[ersion]
   Print program version.
效果圖:aapt_r_a_v.JPG   

 

r_a_v

 


亂碼問題說明:

在Window下,進行adb shell後,舉個例子,如果你的sdcard下保存着中文字符文件名的文件,則在CMD下顯示是一些無規律的中文並夾雜着亂碼。如下圖:

ansi

 

出現這種情況的原因是:

Android中使用的是UTF-8字符,而CMD默認字符集是ANSI,中文環境下即爲GBK,代碼頁爲936。

查詢當前代碼頁的方法爲在CMD下直接輸入“chcp”命令,並會返回“活動的代碼頁:936”字樣。

 

找出原因了,解決辦法也就有了。

只要使用UTF-8格式的代碼頁65001就OK了,命令如下:

  1. chcp 65001  

最後結果如下圖:

65001

可以看到,中文字符都顯示正常了。呵呵,Sodino解決!!

 

 

2011年5月27日14時33分22秒:

引申一個問題:

剛把CMD默認值代碼頁設爲65001後,發現用ADT打混淆包的Eclipse會報"Conversion to Dalvik format failed with error 1"的異常,至今原因不明。將代碼頁默認值再調回936後即正常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章