戰(zhàn)指南)
簡介在 Android 日常開發(fā)與設(shè)備維護(hù)中官方命令行工具不可或缺。platform-tools-latest-windows.zip 打包了一套完整的 platform-tools涵蓋 adb、fastboot 等核心程序能夠處理設(shè)備連接、應(yīng)用安裝、日志抓取、系統(tǒng)分區(qū)刷寫等常見開發(fā)與調(diào)試任務(wù)特別適合需要維護(hù)多臺設(shè)備、頻繁切換系統(tǒng)版本的工程師或測試人員。壓縮包共 14 個文件體積僅 6.81MB其中 8 個 exe 可執(zhí)行文件構(gòu)成工具主體配合 3 個 dll 動態(tài)庫保障 Windows 環(huán)境下的穩(wěn)定運(yùn)行txt、conf、properties 文件則分別提供許可說明、運(yùn)行參數(shù)和版本信息方便核對與調(diào)整。除 adb、fastboot 外包內(nèi)還整合了 hprof-conv、sqlite3、etc1tool、mke2fs 等輔助工具分別用于堆轉(zhuǎn)儲分析、數(shù)據(jù)庫操作、紋理壓縮和文件系統(tǒng)創(chuàng)建覆蓋性能排查與系統(tǒng)維護(hù)場景。已有 668 人學(xué)習(xí)/下載解壓后即可獲得與較新 Android 系統(tǒng)兼容的完整調(diào)試環(huán)境無需再逐一下載或擔(dān)心版本不匹配可顯著提升開發(fā)與測試效率。 如果你經(jīng)常刷機(jī)、調(diào)試安卓設(shè)備那一定見過platform-tools-latest-windows.zip這個名字。這是 Android SDK Platform-Tools 的官方 Windows 版本里面裝的就是 adb、fastboot、e2fsdroid 這些工具安卓調(diào)試、刷機(jī)、連接模擬器全靠它們。我前陣子剛在幾臺 Windows 機(jī)器上重新配了一遍這套環(huán)境趁著這次裝完的余溫把這套流程和踩過的坑完整寫出來。這篇文章適合所有需要在 Windows 上做安卓調(diào)試、真機(jī) Root、模擬器聯(lián)調(diào)的人參考不管你是剛?cè)腴T的新手還是被環(huán)境問題折磨過的老手都能從這里找到可以直接抄的解決方案。1. platform-tools-latest-windows.zip 到底是什么1.1 一個壓縮包解決所有設(shè)備通信問題很多人第一次接觸這個包是在某個刷機(jī)教程里看到“先下載 platform-tools”這句話。點(diǎn)進(jìn)去一看一個 zip 壓縮包解壓出來就幾個 exe 和 dll看起來毫不起眼。但如果你把安卓設(shè)備手機(jī)、平板、電視盒子、車機(jī)想象成一臺只開了調(diào)試口的嵌入式設(shè)備那么 platform-tools 就是 PC 和這個設(shè)備之間唯一的通信橋梁。里面最重要的兩個工具一個是adb全稱 Android Debug Bridge負(fù)責(zé)在設(shè)備開機(jī)狀態(tài)下進(jìn)行應(yīng)用安裝、日志抓取、文件拷貝、shell 操作等日常調(diào)試工作另一個是fastboot負(fù)責(zé)在設(shè)備進(jìn)入 bootloader 模式時進(jìn)行底層分區(qū)讀寫比如解鎖 bootloader、刷入 boot.img、刷入 recovery、刷入系統(tǒng)鏡像等。除此之外還有e2fsdroid制作 ext4 用戶鏡像、mke2fs創(chuàng)建 ext4 文件系統(tǒng)、sqlite3直接在設(shè)備上操作數(shù)據(jù)庫等輔助工具但日常用到最多的一定是前兩個。所以無論是用 Android Studio 跑模擬器、用命令行安裝 APK、還是給 Pixel 刷第三方固件最終都會落到這個 zip 包上。你甚至可以理解為它是安卓世界所有“PC 對設(shè)備操作”的入口。1.2 為什么優(yōu)先選擇官方最新的 r29 版本我見過不少人有這樣一個習(xí)慣下載工具時喜歡到各種“軟件站”找“綠色版”、“精簡版”、“一鍵集成版”但在 platform-tools 這件事上我強(qiáng)烈建議直接認(rèn)準(zhǔn)官方下載鏈接。原因很簡單這包跟任何其他開發(fā)工具一樣舊版本會在系統(tǒng)底層的通信協(xié)議上逐步失去兼容性。就以platform-tools r29為例。這一版針對 Windows 做了幾項(xiàng)關(guān)鍵改進(jìn)包括對 Windows 11 和更嚴(yán)格的 USB 安全策略的適配、對可移動設(shè)備 USB 識別機(jī)制的修復(fù)、以及 adb 服務(wù)端在異常斷開時的重連穩(wěn)定性優(yōu)化。早年我在用 r23、r24 的時候經(jīng)常遇到設(shè)備插上后adb devices列表空白需要反復(fù)插拔、重啟 adb server升級到 r29 之后這類問題的概率明顯下降。另外新版本還同步適配了 Android 14、Android 15 的 USB 調(diào)試授權(quán)邏輯。如果拿著舊版本工具去調(diào)試新系統(tǒng)設(shè)備輕則一直提示 id 不匹配重則直接無法彈授權(quán)框。所以說只要不是特殊歷史項(xiàng)目強(qiáng)制要求固定版本一律選最新官方版就對了。2. 下載與安裝從解壓到環(huán)境變量2.1 下載渠道與完整性校驗(yàn)官方下載地址在 Android 開發(fā)者網(wǎng)站的 Platform Tools 發(fā)布頁通常名稱就是platform-tools-latest-windows.zip。這個包一般幾十 MB不會太大。下載之后先別急著解壓建議順手校驗(yàn)一下 SHA-256 哈希值確保包在傳輸過程中沒損壞也從源頭避開某些“內(nèi)置綠色版”的坑。官方頁面每一版都會列出對應(yīng)哈希PowerShell 下直接執(zhí)行Get-FileHash .\platform-tools-latest-windows.zip -Algorithm SHA256對比結(jié)果和官網(wǎng)公布的值一致再解壓。別嫌這一步繁瑣我在幫朋友排查問題時見過電腦上各種來路不明的“adb.exe”和“fastboot.exe”有些還帶著惡意軟件驅(qū)動用哈希校驗(yàn)?zāi)苤苯右?guī)避掉這種風(fēng)險。然后把 zip 解壓到一個“不會亂動”的目錄比如C:\platform-tools。注意我建議不要解壓到中文路徑下也別放到桌面。因?yàn)楹罄m(xù)很多命令、批處理腳本、開發(fā)工具會引用這個路徑如果路徑帶空格或中文有些第三方工具解析起來會出問題保不齊在關(guān)鍵時刻給你來個“找不到路徑”。2.2 環(huán)境變量配置的完整流程解壓完還不能直接完事如果不配置環(huán)境變量你只能在platform-tools目錄里執(zhí)行 adb換個目錄就提示“不是內(nèi)部或外部命令”。這里我把配置步驟完整寫一遍每一步都對應(yīng)你以后可能遇到的報錯。在 Windows 搜索框輸入“環(huán)境變量”選擇“編輯系統(tǒng)環(huán)境變量”打開“系統(tǒng)屬性”對話框。點(diǎn)擊右下角“環(huán)境變量”在“系統(tǒng)變量”區(qū)域找到Path雙擊編輯。點(diǎn)擊“新建”填入你解壓的目錄比如C:\platform-tools然后一路點(diǎn)確定。重新打開一個 CMD 或 PowerShell 窗口這一步很關(guān)鍵舊窗口不會刷新環(huán)境變量輸入adb version看到類似Android Debug Bridge version 1.0.41和Version 29.0.0的輸出就成功了。這里解釋一下為什么“系統(tǒng)變量”和“用戶變量”要選擇前者。如果你只配置用戶變量那只有當(dāng)前用戶能用如果這臺機(jī)器有多賬戶或者你需要在管理員權(quán)限的 CMD、計(jì)劃任務(wù)里使用 adb可能會踩到“明明配置了 PATH 卻找不到命令”的奇怪問題。所以我個人習(xí)慣直接配到系統(tǒng)變量一勞永逸。2.3 在 WSL、Docker 等 Windows 特殊環(huán)境下的使用配置好環(huán)境變量后很多人以為就到此為止了但實(shí)際開發(fā)場景往往沒這么簡單。現(xiàn)在不少人的工作流是 Windows 宿主機(jī) WSL 跑 Linux 工具鏈或者用 Docker Desktop for Windows 起安卓構(gòu)建環(huán)境。這時候platform-tools-latest-windows.zip照樣有用但要注意路徑互通的問題。WSL 里訪問 Windows 端 adb 的最簡單方式就是把platform-tools所在目錄加進(jìn) WSL 的 PATH。舉個例子Windows 端的 platform-tools 在C:\platform-tools那么在 WSL 2 的~/.bashrc或~/.zshrc里加一行export PATH$PATH:/mnt/c/platform-tools注意 WSL 2 里運(yùn)行的是從/mnt/c掛載過來的 Windows 版本 adb.exe所以你要在 WSL 里輸入的是adb.exe而不是adb否則它會去找 Linux 版的 adb找不到就會報 command not found。也可以簡單做個別名alias adbadb.exe alias fastbootfastboot.exe至于 Docker Desktop for Windows如果你需要在某個容器里訪問宿主機(jī)上的 adb要么把 platform-tools 目錄掛載成 volume 進(jìn)容器要么在容器里單獨(dú)裝 Android SDK tools然后用容器的 ip 端口連到宿主機(jī)上的 adb server。后者的核心思路是用adb -H 宿主IP -P 5037來指定 host 和端口前提是宿主機(jī)上的 adb server 已啟動且監(jiān)聽在非 localhost 上。這一塊容易讓人困惑大多數(shù)人的誤區(qū)是把“容器里的 adb”和“宿主機(jī)的 adb”二分對立了其實(shí)它們完全可以通過網(wǎng)絡(luò)端口協(xié)同工作。3. 核心命令實(shí)操adb 與 fastboot 的應(yīng)用場景3.1 設(shè)備連接與授權(quán)USB 調(diào)試裝好工具之后第一步當(dāng)然是讓電腦能認(rèn)出設(shè)備。在安卓手機(jī)上進(jìn)入“設(shè)置 → 關(guān)于手機(jī)”連續(xù)點(diǎn)擊“版本號”7 次開啟開發(fā)者選項(xiàng)然后在“開發(fā)者選項(xiàng)”里打開“USB 調(diào)試”。用數(shù)據(jù)線連接電腦后手機(jī)端會彈出一個“允許 USB 調(diào)試嗎”的授權(quán)框勾選“始終允許”點(diǎn)確定。此時在 Windows 命令行輸入adb devices如果輸出里有一行xxxxxx device說明已經(jīng)連接成功。如果顯示unauthorized說明授權(quán)沒通過需要在手機(jī)上重新確認(rèn)如果顯示offline常見原因是 adb 服務(wù)端卡住了執(zhí)行adb kill-server后再adb start-server重試。我自己遇到過的另一個高頻坑是用了前面板的 USB 口尤其臺式機(jī)的前置面板經(jīng)常因?yàn)楣╇姴蛔慊蚪佑|不良導(dǎo)致設(shè)備反復(fù)斷開。最穩(wěn)妥的方案永遠(yuǎn)是優(yōu)先用主板后置 USB 口而且要選 USB 2.0 的口。別不信USB 3.0 口在某些主板上存在和 adb 協(xié)議不兼容的情況穩(wěn)定度反而不如 2.0。3.2 常用調(diào)試命令安裝、日志、文件傳輸日常調(diào)試中adb install應(yīng)該是出鏡率最高的命令。標(biāo)準(zhǔn)用法是adb install app-debug.apk如果想覆蓋安裝并保留數(shù)據(jù)加-r參數(shù)如果想允許降級安裝加-d參數(shù)測試機(jī)上如果希望安裝完直接啟動應(yīng)用可以再補(bǔ)一個-g授權(quán)所有運(yùn)行時權(quán)限。組合起來就是adb install -r -d -g app-debug.apk文件傳輸方面adb push和adb pull對應(yīng)電腦與設(shè)備間的雙向拷貝。很多人不知道的是adb push也支持直接把文件拖進(jìn) CMD 窗口讓系統(tǒng)自動填充完整路徑省去手敲路徑的麻煩。不過 Windows 下拖放有時會因?yàn)槁窂嚼锏目崭癖徊鸪啥鄠€參數(shù)所以安全做法是拖進(jìn)來后用雙引號包住整個路徑。日志抓取這塊最基礎(chǔ)的命令是adb logcat它會源源不斷刷日志適合連接狀態(tài)下的實(shí)時觀察。如果只想抓取某個進(jìn)程的崩潰堆??梢韵扔胊db shell ps -A | findstr 包名拿到 PID再執(zhí)行adb logcat --pid1234過濾。在 Windows 的 CMD 里grep不可用需要用findstr這個小差異經(jīng)常讓剛從 Linux 轉(zhuǎn)過來的人一臉問號。3.3 fastboot 與底層分區(qū)操作如果只是做應(yīng)用調(diào)試adb就夠用了。但一旦涉及刷機(jī)、解鎖 bootloader、替換 recovery、刷入 Magisk 修改 boot 鏡像就必須用到fastboot。操作流程大概是先讓設(shè)備進(jìn)入 bootloader 模式通常是在關(guān)機(jī)狀態(tài)下按住音量下電源鍵或者通過adb reboot bootloader。然后在電腦上輸入fastboot devices看到設(shè)備 id 后就可以執(zhí)行fastboot flash boot boot.img、fastboot flash recovery recovery.img這類命令。這里有一個很多人忽略的關(guān)鍵點(diǎn)fastboot和adb在同一臺機(jī)器上使用的是完全不同的驅(qū)動層。Windows 上經(jīng)常出現(xiàn)adb devices能看到設(shè)備但fastboot devices沒有任何輸出的情況這通常是 fastboot 驅(qū)動沒裝好設(shè)備管理器里會顯示一個帶黃色感嘆號的未知設(shè)備需要手動指定驅(qū)動路徑到platform-tools\drivers目錄里更新驅(qū)動。刷機(jī)操作的風(fēng)險等級比 adb 高得多操作前一定要確認(rèn)鏡像文件對應(yīng)你的機(jī)型且從官方或可靠渠道獲得。底層分區(qū)一刷如果文件不匹配輕則系統(tǒng)不斷重啟重則成磚。我現(xiàn)在的習(xí)慣是拿到一臺新測試機(jī)第一件事就是備份原始 boot、recovery 分區(qū)到本地再做任何實(shí)驗(yàn)性操作至少保留一條還原退路。4. 常見問題與排查技巧實(shí)錄4.1 adb 不是內(nèi)部或外部命令這一個問題我?guī)缀趺康揭粋€新環(huán)境都能遇到。最直接的原因是 PATH 沒有配置或者配置完沒有打開新終端窗口。檢查方法很容易輸入where adb如果輸出提示找不到說明 PATH 里沒有platform-tools目錄回到第二節(jié)重新配置即可。還有一個特殊場景安裝了 Android Studio 的機(jī)器上可能會有多個 adb 存在于不同 SDK 目錄下比如用戶目錄下的AppData\Local\Android\Sdk\platform-tools以及你手動解壓的C:\platform-tools。系統(tǒng)會優(yōu)先執(zhí)行 PATH 中靠前的那個。如果你在 Android Studio 里能用 adb但 CMD 里不能用多半是 Studio 內(nèi)置了 SDK 路徑而系統(tǒng) PATH 沒配如果你 CMD 里能用的 adb 版本和 Studio 里用的不是同一個版本不一致也會導(dǎo)致模擬器連接報錯這時候建議統(tǒng)一指向同一個目錄。4.2 設(shè)備未授權(quán)與驅(qū)動識別失敗adb devices顯示unauthorized是很多人第一次插真機(jī)時最崩潰的瞬間。原因是設(shè)備的 RSA 指紋授權(quán)沒生效。最簡單的處理辦法拔掉 USB 線在手機(jī)開發(fā)者選項(xiàng)里打開“撤銷 USB 調(diào)試授權(quán)”重新插線再次授權(quán)通常就能解決。如果連adb devices列表都看不到設(shè)備那么問題就出在驅(qū)動層。Windows 10/11 一般會自動安裝手機(jī)廠商的 MTP 驅(qū)動但純 adb 接口驅(qū)動經(jīng)常被系統(tǒng)忽略所以要去設(shè)備管理器手動檢查。具體路徑是右鍵開始菜單 → 設(shè)備管理器 → 找到“便攜設(shè)備”或“通用串行總線設(shè)備”里的對應(yīng)設(shè)備如果看到感嘆號右鍵更新驅(qū)動選擇“瀏覽我的電腦以查找驅(qū)動程序”指向platform-tools\drivers文件夾勾選“包括子文件夾”點(diǎn)安裝即可。這里有個小技巧裝驅(qū)動時優(yōu)先選“Android Composite ADB Interface”或“Android ADB Interface”不要選成 MTP 設(shè)備驅(qū)動不然 exe 還是識別不了。4.3 Windows 環(huán)境下的各種坑點(diǎn)速查表除了上面兩個重災(zāi)區(qū)Windows 平臺還有一些零碎問題我把實(shí)戰(zhàn)中遇到過的整理成一個速查表方便你以后用 CtrlF 直接定位現(xiàn)象原因解決方案安裝 APK 時提示 INSTALL_FAILED_UPDATE_INCOMPATIBLE已安裝的舊版本簽名不同先卸載舊應(yīng)用或加-r覆蓋安裝拖放 APK 到 CMD 窗口后帶引號導(dǎo)致命令解析錯誤Windows 拖放路徑自動加引號先拖進(jìn)窗口再手動調(diào)整引號位置adb shell下無法執(zhí)行g(shù)repAndroid shell 用的是 toybox不是 GNU grep用grep本身沒問題但管道多個命令時優(yōu)先用toybox grep指定抓 logcat 時中文亂碼CMD 默認(rèn)代碼頁不匹配執(zhí)行chcp 65001切換 UTF-8或者直接在 PowerShell 里操作WSL 里輸入adb找不到WSL 的 PATH 沒包含/mnt/c/platform-tools在~/.bashrc添加導(dǎo)出語句Docker 容器內(nèi)無法連接真機(jī)宿主機(jī) adb server 監(jiān)聽端口未對外開放宿主機(jī)執(zhí)行adb -a -P 5037 nodaemon server容器內(nèi)用-H連接fastboot devices無輸出fastboot 驅(qū)動未正確安裝手動更新驅(qū)動指向platform-tools\driversadb 服務(wù)卡死adb devices無響應(yīng)上一次進(jìn)程異常退出任務(wù)管理器結(jié)束所有 adb.exe再adb start-serverWindows 安全軟件攔截 adb.exe某些殺毒軟件誤報添加白名單或從官方渠道重新下載校驗(yàn)shell 命令一閃而過沒有在前臺運(yùn)行 CMD用cmd /k adb devices保留窗口查看輸出設(shè)備授權(quán)信息過期反復(fù)彈授權(quán)框RSA 指紋和舊授權(quán)沖突撤銷 USB 調(diào)試授權(quán)后重連這里額外說一個安全軟件攔截的問題現(xiàn)在很多 Windows 安全軟件對 adb.exe 這類既能管理設(shè)備又能執(zhí)行 shell 命令的工具很敏感偶爾會直接給你攔掉或者在彈窗詢問時用戶手滑點(diǎn)了“阻止”。這種情況下adb 會表現(xiàn)為“能運(yùn)行但連接不到設(shè)備”極其迷惑。我當(dāng)時排查了半小時才發(fā)現(xiàn)是安全策略的問題給 adb 和 fastboot 都加了信任白名單后才恢復(fù)正常。4.4 腳本閃退與靜默運(yùn)行的坑很多人在 Windows 上喜歡寫批處理包一層 adb 命令比如批量安裝 APK、批量截圖、批量抓日志。如果你直接用build.bat雙擊執(zhí)行可能出現(xiàn)“窗口一閃而過”的問題這多半是腳本本身有語法錯誤或者命令執(zhí)行完沒有pause保留窗口。相比之下我更推薦用 PowerShell 寫這類腳本因?yàn)?PowerShell 對輸出對象、變量、錯誤流的處理比 CMD 強(qiáng)太多了而且配合cmd /c可以很容易做到靜默運(yùn)行這在熱詞里提到的“Windows 實(shí)現(xiàn) cmd 靜默運(yùn)行”場景里非常實(shí)用。舉個例子如果你想循環(huán)連接 5 臺設(shè)備并逐個安裝應(yīng)用$devices adb devices | Select-String device$ | ForEach-Object { ($_ -split t)[0] } foreach ($d in $devices) { adb -s $d install app-debug.apk }用-s參數(shù)指定序列號是同時連接多臺設(shè)備時最核心的操作方式。如果不加-sadb 會因?yàn)樵诙嘣O(shè)備環(huán)境下無法確定目標(biāo)而直接報錯退出只有一臺設(shè)備時才不需要指定。5. 一些可以提高效率的擴(kuò)展用法前面講的都是最基礎(chǔ)、覆蓋 80% 場景的操作。如果你已經(jīng)能熟練使用上面的命令還想進(jìn)一步提升效率我給你幾個我自己平時在用的擴(kuò)展技巧。第一個是給 adb 設(shè)置常用別名。在 PowerShell 的$PROFILE里加幾個函數(shù)比如function adbi { adb install -r -d -g $args[0] }以后安裝 APK 只需要敲adbi xxx.apk少打一堆參數(shù)。第二個是使用adb reverse和adb forward做端口映射這在開發(fā)調(diào)試本地 WebView、連接設(shè)備上的本地服務(wù)時特別有用。比如手機(jī)上想訪問電腦的 8080 端口服務(wù)adb reverse tcp:8080 tcp:8080一條命令手機(jī)直接訪問localhost:8080就能打到電腦上省去了讓手機(jī)和電腦連同一 WiFi 的麻煩。第三個是我自己常干的一件事寫一個一鍵收集日志的批處理。先adb logcat -c清一次日志然后自動抓取 crash、anr、system error 三類的 tag打包成 zip 丟到桌面。遇到測試反饋的偶現(xiàn)崩潰這一套下來能省很多溝通成本。5.1 多版本 platform-tools 的并存管理最后一個建議也是我這次重裝完 Windows 環(huán)境后順手做的事做一個多版本并存管理。因?yàn)橛行├显O(shè)備或特定廠商的刷機(jī)工具綁定了特定版本的 adb用最新版反而連不上。我在機(jī)器上保留了三個目錄C:\platform-tools-latest日常用、C:\platform-tools-r29兼容舊項(xiàng)目、C:\platform-tools-legacy壓箱底的老版本系統(tǒng) PATH 只指向latest其他版本通過腳本里的臨時 PATH 切換調(diào)用。這樣平時開發(fā)不受影響遇到特殊項(xiàng)目需要特定版本時也不用滿世界重新找安裝包。切換方式很簡單在調(diào)用前臨時修改環(huán)境變量即可比如在批處理里set PATHC:\platform-tools-r29;%PATH% adb version這種“系統(tǒng)默認(rèn)最新 項(xiàng)目臨時指定版本”的組合是我經(jīng)歷過多次“老設(shè)備連不上新工具”的教訓(xùn)后總結(jié)出來的最佳實(shí)踐。畢竟工具的最終價值是幫你解決問題而不是讓你成為工具的奴隸。寫在最后算下來我斷斷續(xù)續(xù)用了 platform-tools 六七年中間換過很多機(jī)器出過各種稀奇古怪的問題但最后都繞回同一個結(jié)論官方工具、官方渠道、保持更新、理解原理這四個準(zhǔn)則永遠(yuǎn)不會過時。這篇分享里寫的每一步、每一個坑都是我自己動手踩出來的不敢說覆蓋了所有 Windows 場景但對大多數(shù)做安卓開發(fā)、刷機(jī)、設(shè)備調(diào)試的朋友來說應(yīng)該能省下不少折騰時間。如果你在配置過程中還有其他奇怪的現(xiàn)象歡迎帶著具體現(xiàn)象來交流。本文還有配套的精品資源點(diǎn)擊獲取