Android SDK工具链清单
目錄
- 構(gòu)建工具
- aapt/aapt2
- apksigner
- zipalign
- d8
- aidl
- jetifier
- bundletool
- 命令行工具
- apkanalyzer
- avdmanager
- lint
- sdkmanager
- 平臺工具
- adb
- etc1tool
- fastboot
- logcat
- dmtracedump
- systrace
- perfetto
- 其他開發(fā)端工具
- emulator
- mksdcard
- jobb
- retrace
- 終端工具
- dumpsys
- bmgr
為了對安卓開發(fā)編譯過程有更清晰、具體的認知,有必要對Android SDK中提供的工具鏈有所有了解,以應(yīng)對和解決整個開發(fā)過程中任何步驟中可能出現(xiàn)的問題。本文以 安卓命令行工具中文官網(wǎng)為依據(jù),結(jié)合以往自己的實踐經(jīng)驗對這些工具的功能展開簡要介紹,具體用法詳見標題鏈接,對于一些重要的工具后面可能會出一些專門的文章介紹。
根據(jù)工具功能類別,可以大致分為:構(gòu)建工具、命令行工具、平臺工作、終端工具等。
構(gòu)建工具
位置:android_sdk/build-tools/version/
構(gòu)建工具是編譯打包過程中涉及的一系列軟件,通常是根據(jù)根據(jù)版本號成套下載使用,以通過sdkmanager命令行下載,也可以從官網(wǎng)單獨下載某些獨立軟件。這些構(gòu)建工具的功能和生效范圍如下:
aapt/aapt2
解析Android資源將其編譯(compile)為針對Android平臺優(yōu)化過的二進制格式(*.flat),然后通過鏈接(link)為其編制索引(R.java)和生成其他輔助文件(ProGuard規(guī)則文件等),最后將上述文件打包到單個APK中。此APK不包含 DEX字節(jié)碼且未簽名,因此無法將此APK部署到設(shè)備,可以使用其他命令行工具,如使用d8將Java字節(jié)碼編譯為DEX字節(jié)碼,以及使用apksigner為APK簽名。
apksigner
為APK簽名,并檢查簽名能否在給定APK支持的所有平臺版本上成功通過驗證。與apksigner對應(yīng)的還有jarsigner,用于對jar包進行簽名。
注意:如果在使用apksigner為APK簽名后又對APK做了更改,則APK的簽名將會失效。因此,要使用zipalign等工具,您必須在為APK簽名之前使用。
zipalign
一種 zip 歸檔文件對齊工具,確保所有未壓縮數(shù)據(jù)的開頭均相對于文件開頭部分執(zhí)行特定的對齊,這樣一來便可直接通過mmap(2)訪問這些文件,而無需在 RAM 中復(fù)制相關(guān)數(shù)據(jù)并減少了應(yīng)用的內(nèi)存用量。從而優(yōu)化 APK 文件。
d8
d8 是一種命令行工具,Android Studio(以下簡稱AS)和Android Gradle Plugin(以下簡稱AGP)使用該工具來將項目的Java字節(jié)碼(可以是*.class文件或JAR、APK、ZIP、DEX等容器文件的任意組合)編譯為在 Android 設(shè)備上運行的DEX字節(jié)碼,該工具支持您在應(yīng)用的代碼中使用Java 8語言功能。
aidl
根據(jù)*.aidl文件內(nèi)容生成AIDL模板代碼。
jetifier
可讀取使用support庫類的庫,然后輸出使用新版 AndroidX 類的替代庫。
這個工具不在上述路徑中,在開發(fā)過程中是以AGP形式存在,沒有獨立可執(zhí)行文件,但是谷歌提供了其獨立命令行工具jetifier-standalone,因為是在編譯期工作,所以我把它歸為構(gòu)建工具一類。
bundletool
bundletool是一種底層工具,可供AS、AGP和Google Play用于構(gòu)建Android App Bundle文件(*.aab)并將aab轉(zhuǎn)換為部署到設(shè)備的各種APK。
當bundletool從 app bundle 生成 APK 時,它會將這些 APK 納入到一個名為“APK set archive”的容器中,該容器以 .apks 作為文件擴展名,并使用bundletool install-apks命令安裝到設(shè)備。
bundle文件需要使用jarsigner進行簽名而不是apksigner。
命令行工具
位置:android_sdk/cmdline-tools/version/bin/
apkanalyzer
用于在構(gòu)建流程完成后深入分析您的APK組成。通過APK分析器的命令行版本,您可以在構(gòu)建流程完成后立即了解APK的組成、查看文件內(nèi)容、比較兩個APK之間的差異,還可以以smali格式輸出類或方法的字節(jié)碼。
雖然是命令行工具,但其可執(zhí)行文件位于android_sdk/tools/bin/apkanalyzer。
avdmanager
用于從命令行創(chuàng)建和管理 Android 虛擬設(shè)備 (AVD)。借助 AVD,您可以定義要在 Android 模擬器中模擬的 Android 手機、Wear OS 手表或 Android TV 設(shè)備的特性。
lint
一種代碼掃描工具,可幫助您識別和糾正代碼結(jié)構(gòu)質(zhì)量方面的問題。
sdkmanager
用于查看、安裝、更新和卸載Android SDK的軟件包。如要從命令行下載 Android SDK Build Tools,可使用 sdkmanager 并運行以下命令:
sdkmanager "build-tools;build-tools-version"平臺工具
位置:android_sdk/platform-tools/
adb
Android 調(diào)試橋 (adb) 是一種功能多樣的命令行工具,可讓您與設(shè)備進行通信。adb 命令可用于執(zhí)行各種設(shè)備操作(例如安裝和調(diào)試應(yīng)用),并提供對 Unix shell(可用來在設(shè)備上運行各種命令)的訪問權(quán)限。
etc1tool
一種命令行實用工具,您可以使用該工具將 PNG 圖片編碼為 ETC1 壓縮標準格式,并將 ETC1 壓縮圖片解碼回 PNG。
fastboot
將平臺或其他系統(tǒng)映像刷寫到設(shè)備上。如需了解刷寫說明,請參閱適用于 Nexus 和 Pixel 設(shè)備的出廠映像。
logcat
Logcat 是一個命令行工具,用于轉(zhuǎn)儲系統(tǒng)消息日志,包括設(shè)備拋出錯誤時的堆棧軌跡,以及從您的應(yīng)用使用 Log 類寫入的消息。此工具可通過 adb 調(diào)用,用于查看設(shè)備上的應(yīng)用和系統(tǒng)日志。
dmtracedump
一款用于從跟蹤日志文件生成圖形化調(diào)用堆棧圖的工具。此工具使用Graphviz Dot實用程序創(chuàng)建圖形化的輸出,因此您必須先安裝Graphviz,才能運行dmtracedump。
systrace
systrace命令是舊版的由python(2.7)腳本實現(xiàn)的用于系統(tǒng)跟蹤的CLI工具。可以借助該工具收集和檢查設(shè)備上在系統(tǒng)一級運行的所有進程的時間信息并生成HRML報告,用瀏覽器打開即可。
關(guān)于該工具的詳細用法可以參考:Android性能測試手段和工具
perfetto
perfetto命令是Android 10中引入的由python腳本實現(xiàn)的用于系統(tǒng)跟蹤的CLI工具,跟Logcat一樣,可以通過ADB在Android設(shè)備上收集性能信息,是適用于Android、Linux 和Chrome的更加通用和復(fù)雜的開源跟蹤項目。
Perfetto跟蹤記錄視圖,其中顯示了與某個應(yīng)用之間大約20秒的交互情況其他開發(fā)端工具
位置:android_sdk/tools/
emulator
基于 QEMU 的設(shè)備模擬工具,可用于在實際的 Android 運行時環(huán)境中調(diào)試和測試應(yīng)用。
mksdcard
可創(chuàng)建可與模擬器一起使用的磁盤映像,以模擬存在外部存儲卡(例如 SD 卡)的情形。
jobb
命令行工作,借助jobb可以構(gòu)建不透明二進制 Blob (OBB) 格式的已加密和未加密 APK擴展文件。您可以在搭載 Android 2.3(API 級別 9)或更高版本的設(shè)備上使用 StorageManager 在應(yīng)用中下載和裝載這些擴展文件。OBB 文件用于為 Android 應(yīng)用提供額外文件資源(例如圖形、音頻和視頻),這些文件資源與應(yīng)用的 APK 文件是分開的。
retrace
位于:android_sdk/tools/proguard/bin。對于由 R8 編譯的應(yīng)用,retrace 會解碼經(jīng)過混淆處理的堆棧軌跡,映射回您的原始源代碼。
終端工具
終端工具運行在終端設(shè)備中,通過shell終端命令進行使用。
dumpsys
dumpsys 是一種在 Android 設(shè)備上運行的工具,可提供有關(guān)系統(tǒng)服務(wù)的信息。可以使用 Android 調(diào)試橋 (ADB) 從命令行調(diào)用 dumpsys,獲取在連接的設(shè)備上運行的所有系統(tǒng)服務(wù)的診斷輸出,如檢查輸入、RAM、電池或網(wǎng)絡(luò)診斷信息。
bmgr
bmgr 是一款 shell 工具,可用于與搭載 Android 2.2(API 級別 8)或更高版本的設(shè)備上的備份管理器進行交互。該工具提供了用于啟動備份和恢復(fù)操作的命令,這樣就無需重復(fù)擦除數(shù)據(jù)或執(zhí)行類似的干擾性步驟來測試應(yīng)用的備份功能。bmgr 工具支持自動備份和鍵/值對備份。
總結(jié)
以上是生活随笔為你收集整理的Android SDK工具链清单的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html3D效果可以在手机打开吗,HTM
- 下一篇: 集体封盘,深度回撤,量化私募的高光时刻已