【Android自動化打包】01. aapt的用法
什麼是aapt?
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 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] ...]
aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]
aapt c[runch] [-v] -S resource-sources ... -C output-folder ... 做PNG檔案的預處理,並將結果儲存到一個資料夾中
aapt v[ersion]
執行命令: C:\Users\Xiaopeng>aapt
Android Asset Packaging Tool
1. 列出apk包的內容
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的一些資訊
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檔案路徑> <想要移除的檔名>
例項:將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]
轉自:http://blog.csdn.net/wirelessqa
相關文章
- 【Android自動化打包】02. javac的用法AndroidJava
- android aapt用法AndroidAPT
- Android程式自動化打包Android
- 自動化打包那些事
- 【Android自動化打包】03. APK的數字簽名AndroidAPK
- Python的iOS自動化打包PythoniOS
- iOS自動化編譯打包iOS編譯
- iOS自動化打包(fastlane使用)iOSAST
- Android 自動化打包實踐 gradle打包並推送到git遠端庫AndroidGradleGit
- Android自動打包、簽名、優化、上傳ANT指令碼Android優化指令碼
- iOS如何實現自動化打包iOS
- 安卓自動化打包環境搭建安卓
- 使用 fastlane 實現自動化打包AST
- 為Android應用增加渠道資訊 自動化不同渠道的打包過程Android
- Mac 環境下 Android 使用 Jenkins 構建自動化打包MacAndroidJenkins
- jenkins配置android自動打包平臺JenkinsAndroid
- [Android]aapt命令小結AndroidAPT
- iOS自動化打包部署踩坑記iOS
- fastlane 自動化打包工具實踐AST
- jenkins iOS自動化打包分發JenkinsiOS
- 實現Xcode 9自動化打包XCode
- 使用Automator自動化iOS打包流程iOS
- 教你在Android自動打包解包簽名方法Android
- 關於iOS自動化打包的一些分享iOS
- 360加固+美團walle多渠道自動化打包
- iOS--利用Fastlane實現自動化打包iOSAST
- 關於jenkins自動化打包探索Jenkins
- ReactNative專案自動化打包釋出React
- [android]android自動化測試十三之monkeyRunner自動化框架Android框架
- 基於Jenkins實現php專案的自動化測試、自動打包和自動部署JenkinsPHP
- jenkins+gitlab + 蒲公英實現 android 應用自動化打包分發JenkinsGitlabAndroid
- [android]android自動化測試Android
- 自動化瓦力多渠道打包python指令碼Python指令碼
- React Native專案自動化打包釋出React Native
- android使用jenkins進行自動化打包並且上傳到fir或者蒲公英AndroidJenkins
- 使用 Fastlane 實現 iOS 跟 Android 自動打包指令碼ASTiOSAndroid指令碼
- Android使用Ant自動編譯簽名打包詳解Android編譯
- Android ant自動打包指令碼:自動替換友盟渠道、版本號、包名Android指令碼