戰(zhàn)踩坑)
簡介本資源為 Android 官方命令行工具 Windows 版commandlinetools-win-11076708-latest.zip面向無需完整 Android Studio 的開發(fā)者、CI/CD 工程師及輕量級(jí)安卓構(gòu)建場景用戶解決 SDK 管理、AVD 創(chuàng)建、APK 分析與混淆調(diào)試等核心命令行需求。壓縮包共 104 個(gè)文件含 93 個(gè) Java 工具類 jar 包支撐 sdkmanager、avdmanager、apkanalyzer、lint 等核心功能、8 個(gè) Windows 批處理腳本如 sdkmanager.bat、avdmanager.bat、1 個(gè)說明文檔及配置文件整體體積 146.47MB結(jié)構(gòu)精簡、開箱即用。目前已有 561 人學(xué)習(xí)下載適合熟悉 Android 構(gòu)建流程的中高級(jí)開發(fā)者快速部署離線 SDK 環(huán)境。讀者可直接執(zhí)行命令行工具完成 SDK 平臺(tái)安裝、模擬器管理、資源縮減、堆棧還原retrace及 Kotlin 編譯支持等全鏈路操作無需依賴 IDE特別適用于自動(dòng)化構(gòu)建、容器化開發(fā)與教學(xué)環(huán)境復(fù)現(xiàn)。 很多人在搭建Android開發(fā)環(huán)境時(shí)第一步就卡在SDK的獲取上。以前裝Android Studio順手就把SDK裝了但當(dāng)你只需要命令行編譯、做CI自動(dòng)化打包或者要給一臺(tái)沒有圖形界面的服務(wù)器配環(huán)境時(shí)那個(gè)幾百M(fèi)B的commandlinetools-win-11076708-latest.zip就成了繞不開的起點(diǎn)。這篇文章就把這東西從頭到尾講透從它是什么、怎么裝、怎么用到實(shí)戰(zhàn)中會(huì)踩到的各種坑一次說清。1. 認(rèn)識(shí)commandlinetoolsAndroid SDK的“最小啟動(dòng)器”1.1 為什么現(xiàn)在的SDK要從命令行工具開始裝早期Android SDK是一個(gè)體積龐大的離線包下載下來解壓即用。后來Google改變了分發(fā)策略不再提供完整SDK的獨(dú)立壓縮包而是只給一個(gè)很小的“安裝器”——也就是commandlinetools。它本身不包含任何平臺(tái)版本、構(gòu)建工具只包含sdkmanager、avdmanager等幾個(gè)核心命令真正的SDK組件全靠這些命令去下載。這個(gè)設(shè)計(jì)很像Linux系統(tǒng)的包管理器先裝apt再用apt裝別的。commandlinetools就是Android世界的“包管理器外殼”而platform-tools、platforms;android-34、build-tools;34.0.0這些才是實(shí)際干活的東西。所以你在命令行環(huán)境里安裝SDK第一步永遠(yuǎn)是拿這個(gè)zip第二步永遠(yuǎn)是跑sdkmanager。1.2 zip包內(nèi)部有什么每個(gè)目錄都是干什么的拿到手先別急著解壓看一下目錄結(jié)構(gòu)會(huì)更清楚。解壓后你會(huì)得到一個(gè)cmdline-tools文件夾里面主要是bin和lib兩個(gè)目錄。bin目錄里放著三個(gè)關(guān)鍵腳本sdkmanager.bat用于管理SDK組件的安裝和卸載avdmanager.bat用于創(chuàng)建和管理虛擬設(shè)備apkanalyzer.bat用于分析APK文件。Windows下是.bat批處理Linux/macOS下是對應(yīng)的無擴(kuò)展名shell腳本功能完全一樣。lib目錄里是一堆jar包包括sdkmanager.jar、avdmanager.jar等。這些腳本本質(zhì)上是“殼”真正邏輯都在jar里外層用Java啟動(dòng)它們。所以你會(huì)發(fā)現(xiàn)一個(gè)硬性前提系統(tǒng)必須先裝好JDK否則.bat雙擊后一閃而過窗口都來不及看清。這一點(diǎn)后文會(huì)詳細(xì)講。1.3 版本號(hào)11076708到底代表什么commandlinetools-win-11076708-latest.zip這串名字里win表示W(wǎng)indows平臺(tái)對應(yīng)還有l(wèi)inux和darwin版本11076708是構(gòu)建版本號(hào)latest表示這是當(dāng)前最新穩(wěn)定渠道的包。版本號(hào)本身沒有直接的“API level”含義它對應(yīng)的是工具自身的迭代。比如這個(gè)版本對應(yīng)JDK 17是沒問題的也支持后續(xù)下載最新的platforms;android-34、build-tools;34.0.0。實(shí)際使用時(shí)沒必要糾結(jié)具體版本號(hào)認(rèn)準(zhǔn)“從官方渠道拿最新”就行。因?yàn)镾DK工具版本太舊時(shí)可能不支持新發(fā)布的Android平臺(tái)這時(shí)sdkmanager --list能看到新組件但安裝時(shí)提示版本不匹配只要換最新款commandlinetools即可解決。2. 從零開始下載、解壓與目錄規(guī)劃2.1 下載前先想清楚的事下載地址是Android開發(fā)者官網(wǎng)的“命令行工具”頁面。頁面會(huì)列出Windows、Linux、macOS三套包千萬別下錯(cuò)平臺(tái)。Windows下選commandlinetools-win-...Linux服務(wù)器選commandlinetools-linux-...macOS選commandlinetools-mac-...mac還有Apple Silicon的變體darwin-aarch64根據(jù)芯片選。下載時(shí)另一個(gè)容易忽略的點(diǎn)是版本一致性。如果你后面要跑的是老項(xiàng)目compileSdkVersion可能只有30或31那沒必要追最新下載一個(gè)對應(yīng)年代的commandlinetools版本反而更穩(wěn)。但正常情況下直接拿最新就好因?yàn)橛?-sdk_root參數(shù)可以隔離不同SDK版本多版本共存也不沖突。另外下載完建議先校驗(yàn)一下文件完整性。Windows下可以用certutil -hashfile commandlinetools-win-11076708-latest.zip SHA256Linux下用sha256sum拿算出來的哈希值和官網(wǎng)給的對一下。這個(gè)問題我踩過一次由于網(wǎng)絡(luò)中斷下載的zip不完整解壓時(shí)一直提示文件損壞或CRC校驗(yàn)失敗當(dāng)時(shí)一度以為是電腦問題最后才發(fā)現(xiàn)是被“好心”的下載工具改壞了文件格式。2.2 解壓到哪、目錄怎么命名最常見的低級(jí)錯(cuò)誤解壓這一步看著簡單實(shí)際很多人在這里翻車。Google在文檔里明確說了cmdline-tools目錄下面必須再套一層latest。也就是說最終的目錄結(jié)構(gòu)應(yīng)該是你的SDK目錄/ └─ cmdline-tools/ └─ latest/ ├─ bin/ ├─ lib/ ├─ NOTICE.txt └─ source.properties如果你直接解壓成cmdline-tools/bin這樣的結(jié)構(gòu)運(yùn)行sdkmanager時(shí)會(huì)報(bào)錯(cuò)因?yàn)樗也坏阶约旱膌ib目錄和版本信息。網(wǎng)上很多人問“為什么sdkmanager雙擊閃退”“為什么提示找不到SDK”八成就是目錄結(jié)構(gòu)錯(cuò)了。推薦的安裝路徑是放在一個(gè)獨(dú)立的目錄比如D:\Android\Sdk或~/Android/Sdk。為什么不建議放在C盤默認(rèn)位置呢因?yàn)镾DK組件全裝完有好幾個(gè)GBC盤空間緊張的同學(xué)很快會(huì)后悔。把commandlinetools解壓到SDK目錄下的cmdline-tools/latest后后續(xù)通過sdkmanager下載的所有組件都會(huì)默認(rèn)裝到同一根目錄下方便統(tǒng)一管理。如果非要用不叫l(wèi)atest的文件夾名理論上也能通過--sdk_root參數(shù)指定但那就把自己繞進(jìn)復(fù)雜度里了老老實(shí)實(shí)用latest是最省心的做法。2.3 配置環(huán)境變量讓命令隨手可用解壓完成后需要把cmdline-tools\latest\bin加入PATH這樣在任何目錄下敲sdkmanager都能識(shí)別。Windows下的方法是設(shè)置里搜索“編輯系統(tǒng)環(huán)境變量” → 環(huán)境變量 → 在Path中新建一行填入你的cmdline-tools\latest\bin路徑。Linux下則寫入~/.bashrc或~/.zshrcexport ANDROID_HOME$HOME/Android/Sdk export PATH$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools建議順手把ANDROID_HOME也配了。雖然sdkmanager本身不強(qiáng)制讀這個(gè)變量但后面的Gradle、Flutter、React Native等工具都會(huì)讀它。特別是做Flutter開發(fā)時(shí)flutter doctor會(huì)檢查ANDROID_HOME是否存在沒配好它就只能報(bào)錯(cuò)提示找不到Android SDK。配置完成后別急著高興先敲一句sdkmanager --version驗(yàn)證一下。如果提示“不是內(nèi)部或外部命令”說明PATH沒配上或當(dāng)前終端沒重新加載Linux下記得先source ~/.bashrc。如果提示找不到Java那就是JDK這一步還沒解決看后面的排查部分。3. 核心實(shí)操sdkmanager的安裝與常用命令3.1 先確認(rèn)JDK這個(gè)工具的全部前提sdkmanager是用Java寫的所以第一步是確認(rèn)系統(tǒng)里有可用的JDK。這個(gè)工具對JDK版本有硬性要求——較新版本如11076708這個(gè)時(shí)期要求JDK 17及以上。裝個(gè)OpenJDK 17或Oracle JDK 17都很常見從Eclipse Adoptium或各發(fā)行版軟件源都能拿到安裝后配好JAVA_HOME環(huán)境變量就行。驗(yàn)證JDK是否就緒打開終端敲java -version能看到版本號(hào)比如openjdk version 17.0.8就是正常的。注意Windows下如果裝了多個(gè)Java版本最好在環(huán)境變量里把JAVA_HOME指清楚否則java命令可能被其他軟件帶的JRE搶占導(dǎo)致sdkmanager啟動(dòng)時(shí)出現(xiàn)奇妙的問題。有個(gè)常見誤導(dǎo)是“運(yùn)行sdkmanager一定要把JAVA_HOME配好”實(shí)際只要java命令在PATH中可用就能跑。但很多工具鏈比如Gradle、Android Studio都在讀JAVA_HOME所以還是建議一步到位把JAVA_HOME配好省得以后再來補(bǔ)。3.2 列出可安裝組件選對platform和build-tools安裝任何東西之前建議先看看有哪些組件可以裝。運(yùn)行sdkmanager --list輸出內(nèi)容很多會(huì)分兩個(gè)區(qū)域Installed packages和Available Packages。Available Packages里比較重要的幾類platforms;android-XX對應(yīng)Android API Level的開發(fā)平臺(tái)。比如platforms;android-34就是Android 14的SDK平臺(tái)。build-tools;XX.X.X編譯、打包APK所需的工具鏈。比如build-tools;34.0.0。platform-tools包含adb、fastboot這些連接真機(jī)和平板的關(guān)鍵工具。ndk;XX.X.X做C/C原生開發(fā)時(shí)的Native Development Kit。cmake;X.X.XNDK開發(fā)中用于構(gòu)建原生代碼的構(gòu)建系統(tǒng)。system-images;android-XX;...創(chuàng)建模擬器時(shí)需要的系統(tǒng)鏡像。對于常規(guī)Android開發(fā)最基礎(chǔ)的是sdkmanager platform-tools platforms;android-34其中platforms;android-34可以換成項(xiàng)目里compileSdkVersion對應(yīng)的值。如果你的項(xiàng)目compileSdkVersion是33裝platforms;android-33就夠過度裝高版本也不會(huì)帶來額外收益。3.3 實(shí)際安裝命令的細(xì)節(jié)與提示安裝是一件“看似簡單坑卻不少”的事。直接運(yùn)行sdkmanager platform-tools platforms;android-34 build-tools;34.0.0它會(huì)先顯示一些許可協(xié)議要求你輸入y確認(rèn)。這里有個(gè)升級(jí)版的需求——如果你在腳本或CI里自動(dòng)安裝不可能每次都人工去輸y所以官方提供了這樣的寫法yes | sdkmanager --licenses這個(gè)命令會(huì)一次性接受所有許可協(xié)議。建議在任何新機(jī)器上裝完SDK后先執(zhí)行一次這條命令能省掉后面無數(shù)次的“y/N”交互。安裝過程中你會(huì)發(fā)現(xiàn)它并不顯示下載進(jìn)度條只有一些類似[]的簡單進(jìn)度信息不要以為卡住了。國內(nèi)網(wǎng)絡(luò)環(huán)境下某些組件下載速度可能會(huì)很慢甚至超時(shí)這時(shí)候可以考慮設(shè)置鏡像源后文會(huì)單獨(dú)說。裝完之后再執(zhí)行sdkmanager --list_installed看到剛才安裝的包出現(xiàn)在列表里就說明成功了。此時(shí)platform-tools目錄下應(yīng)該有adb.exeWindows或adbLinux/macOS。adb version能跑出版本號(hào)證明整個(gè)環(huán)境已經(jīng)可用。3.4 接受許可協(xié)議一條命令解決所有y/N交互可能有人會(huì)問“為什么Google要搞這么多次許可協(xié)議確認(rèn)”因?yàn)锳ndroid SDK的各個(gè)組件分別受不同開源協(xié)議約束比如NDK有LGPL系統(tǒng)鏡像有Google的Terms and Conditions所以首次安裝必須逐一確認(rèn)。在交互終端里一個(gè)一個(gè)y還能接受但在無人值守的安裝腳本里就成了災(zāi)難。yes | sdkmanager --licenses這個(gè)組合是社區(qū)的標(biāo)準(zhǔn)做法yes命令會(huì)不斷輸出y并管道傳給sdkmanager相當(dāng)于自動(dòng)把所有的“Do you accept the license?”都回答了。實(shí)測下來這一步執(zhí)行完后面任何常規(guī)安裝都不再出現(xiàn)許可確認(rèn)體驗(yàn)順暢得多。有一個(gè)細(xì)節(jié)值得注意yes會(huì)持續(xù)輸出直到目標(biāo)進(jìn)程退出。如果sdkmanager已經(jīng)接受完所有許可管道的另一端結(jié)束了yes自然會(huì)被中斷不會(huì)無限刷屏。這個(gè)命令在Windows的CMD下也能用只是如果你用的是PowerShellyes命令不被原生支持需要裝GNU工具或改用cmd /c echo y | sdkmanager --licenses。4. 進(jìn)階用法命令行SDK的實(shí)戰(zhàn)場景4.1 搭建“無Android Studio”的編譯環(huán)境有了sdkmanager就算電腦上完全沒裝Android Studio也能構(gòu)建出一個(gè)能編譯APK的開發(fā)環(huán)境。這在很多場景很有用CI服務(wù)器、Docker鏡像、內(nèi)存有限的云開發(fā)機(jī)等?;静襟E是以Android目錄為根用sdkmanager裝齊platform-tools、platforms;android-XX、build-tools;XX.X.X再用Gradle拉取項(xiàng)目依賴并執(zhí)行g(shù)radlew assembleDebugGradle會(huì)通過ANDROID_HOME自動(dòng)定位SDK并完成編譯。整個(gè)過程不需要打開任何IDE。但需要注意Gradle本身需要下載第一次構(gòu)建時(shí)它還要下載對應(yīng)版本的全部分發(fā)包所以這類環(huán)境務(wù)必保證網(wǎng)絡(luò)穩(wěn)定。如果你在CI上構(gòu)建建議把Gradle和Android依賴的緩存目錄設(shè)為持久化卷否則每次構(gòu)建都全量下載慢到你懷疑人生。4.2 avdmanager創(chuàng)建模擬器命令行也能開虛擬機(jī)sdkmanager裝好以后旁邊還坐著一個(gè)avdmanager它是創(chuàng)建Android虛擬設(shè)備AVD的命令行工具。平時(shí)大家都用Android Studio的可視化界面創(chuàng)建模擬器但其實(shí)命令行也能搞定而且更適合腳本化配置。先裝一個(gè)系統(tǒng)鏡像sdkmanager system-images;android-33;google_apis;x86_64然后創(chuàng)建AVDavdmanager create avd -n test_device -k system-images;android-33;google_apis;x86_64 -d pixel_5-n是給設(shè)備起名-k指定系統(tǒng)鏡像包-d指定設(shè)備定義可以在avdmanager list device里查看所有可選設(shè)備。創(chuàng)建完成后可以直接用emulator -avd test_device啟動(dòng)模擬器。這條路徑特別適合對模擬器做批量測試的團(tuán)隊(duì)把AVD創(chuàng)建、SDK安裝全部寫進(jìn)腳本新入職同事一條命令就能拉起完整的本地Android環(huán)境。省去打開Android Studio、點(diǎn)半天圖形界面的功夫。4.3 用命令行工具直接做APK分析apkanalyzer是commandlinetools包里的另一個(gè)實(shí)用工具。它能在不安裝IDE的情況下對APK做深度分析。查看APK的基本信息apkanalyzer manifest print app.apk這條命令會(huì)輸出APK的AndroidManifest.xml可讀內(nèi)容如包名、版本、權(quán)限、組件聲明等。要查看APK的下載大小和APK的原始文件大小對比apkanalyzer apk download-size app.apk apkanalyzer apk file-size app.apk以前要分析APK都得去下載Android Studio或者用第三方工具?,F(xiàn)在命令行直接搞定寫個(gè)腳本批量分析應(yīng)用市場的APK也不在話下。安全檢查場景下可以用它看APK申請了哪些敏感權(quán)限不需要反編譯工具。4.4 把sdkmanager接入自動(dòng)化腳本如果你維護(hù)著多臺(tái)開發(fā)機(jī)或CI節(jié)點(diǎn)建議把所有安裝步驟寫成腳本而不是每臺(tái)機(jī)器都手動(dòng)操作一遍。Windows下可以寫個(gè)批處理echo off set ANDROID_HOMED:\Android\Sdk mkdir %ANDROID_HOME%\cmdline-tools tar -xf commandlinetools-win-11076708-latest.zip -C %ANDROID_HOME%\cmdline-tools move %ANDROID_HOME%\cmdline-tools\cmdline-tools %ANDROID_HOME%\cmdline-tools\latest yes | sdkmanager --licenses sdkmanager platform-tools platforms;android-34 build-tools;34.0.0Linux下同理可以用一行行的bash命令組合。核心思路就三步解壓到正確目錄 → 接受許可 → 安裝組件。多臺(tái)機(jī)器全部Copy-Paste運(yùn)行環(huán)境保證一致不會(huì)出現(xiàn)“我本地好好的你那怎么不行”的尷尬。一個(gè)小提示如果團(tuán)隊(duì)有統(tǒng)一的Gradle項(xiàng)目還可以借助Gradle的android-sdk-manager插件自動(dòng)安裝SDK但那是另一個(gè)話題。純命令行腳本的方式最透明、最好排查問題。5. 常見問題與排查技巧實(shí)錄5.1 “找不到Java”或“UnsupportedClassVersionError”這是新手最容易撞的墻。癥狀是運(yùn)行sdkmanager時(shí)提示java: command not found或者更高級(jí)一點(diǎn)Error: A JNI error has occurred, please check your installation and try again。原因基本是JDK沒裝或裝了但沒進(jìn)PATH或版本太舊。新版commandlinetools要求JDK 17如果系統(tǒng)里是JDK 8或11啟動(dòng)時(shí)就會(huì)拋出UnsupportedClassVersionError。解決辦法安裝JDK 17及以上確保JAVA_HOME和PATH配置正確然后注銷重登或刷新終端再試。Windows下還有一個(gè)隱性問題如果安裝過Oracle自帶JRE它可能把java.exe放到C:\Windows\System32里導(dǎo)致PATH優(yōu)先級(jí)被干擾。排查方法是在命令行里敲where java看它實(shí)際解析到哪個(gè)目錄就能定位到底是哪個(gè)Java在被調(diào)用。5.2 目錄結(jié)構(gòu)不對導(dǎo)致的“SDK not found”類報(bào)錯(cuò)就像前文說的cmdline-tools目錄下必須有l(wèi)atest子目錄。如果解壓時(shí)少了這一層運(yùn)行sdkmanager --list_installed可能不會(huì)立刻報(bào)錯(cuò)但后續(xù)Gradle、本地的flutter doctor可能會(huì)提示找不到SDK。因?yàn)镚radle查找SDK時(shí)會(huì)找$ANDROID_HOME/platforms、$ANDROID_HOME/build-tools這些目錄。如果ANDROID_HOME指到了D:\Android\Sdk但SDK組件實(shí)際被安裝到了其他層級(jí)目錄錯(cuò)亂就會(huì)導(dǎo)致Gradle的SDK定位失敗。我的建議是把目錄結(jié)構(gòu)嚴(yán)格做成D:\Android\Sdk ├─ cmdline-tools │ └─ latest ├─ platform-tools ├─ platforms ├─ build-tools └─ ndk這樣所有工具默認(rèn)自動(dòng)歸位Gradle、Flutter、React Native都能正確識(shí)別。不要去自定義“個(gè)人風(fēng)格”的目錄命名代價(jià)是各種工具找不到路徑。5.3 網(wǎng)絡(luò)下載慢或超時(shí)換鏡像源的方案國內(nèi)連接官方源下載SDK組件經(jīng)常出現(xiàn)幾十KB/s的龜速甚至直接超時(shí)。這里不建議用什么第三方商業(yè)加速工具也不建議折騰額外網(wǎng)絡(luò)設(shè)備最穩(wěn)妥的方案是使用國內(nèi)開源鏡像站。比如阿里云鏡像、騰訊云鏡像都提供Android SDK的鏡像地址。用sdkmanager時(shí)可以通過--channel和倉庫地址調(diào)整嗎其實(shí)sdkmanager一直沒有提供直接改源的官方參數(shù)但可以通過設(shè)置REPO_OS_OVERRIDE或修改repositories.cfg來影響。更簡單的方法是在Gradle的init.gradle或項(xiàng)目的build.gradle里配置阿里云鏡像倉庫來拉取依賴SDK組件本身可以通過下載鏡像站打包好的SDK文件來實(shí)現(xiàn)。更實(shí)際的操作是從鏡像站直接下載完整SDK壓縮包比如平臺(tái)、build-tools解壓到對應(yīng)目錄然后用sdkmanager補(bǔ)裝缺失的組件。這樣既繞過了最慢的部分又保留了sdkmanager后續(xù)自動(dòng)安裝能力。另外分享一個(gè)經(jīng)驗(yàn)避免在高峰時(shí)段執(zhí)行大批量安裝。清晨或午夜的下載成功率明顯高很多這也是不少CI團(tuán)隊(duì)把環(huán)境預(yù)置放在深夜定時(shí)任務(wù)的原因。如果實(shí)在是公司網(wǎng)絡(luò)限制可以下載用離線包放入本地緩存Gradle或sdkmanager會(huì)自動(dòng)發(fā)現(xiàn)緩存不再重復(fù)下載。5.4 提示“Warning: File ... could not be copied”或權(quán)限問題Windows下如果SDK目錄安裝在C:\Program Files這類系統(tǒng)保護(hù)目錄普通用戶執(zhí)行sdkmanager安裝組件時(shí)經(jīng)常出現(xiàn)權(quán)限不足導(dǎo)致文件無法寫入。典型的報(bào)錯(cuò)長這樣Warning: File C:\Program Files\Android\... could not be copied.解決辦法有兩個(gè)方向一是用管理員權(quán)限運(yùn)行終端再執(zhí)行sdkmanager二是把SDK目錄改到用戶目錄下比如C:\Users\你的用戶名\Android\Sdk或D:\Android\Sdk。我更推薦后者因?yàn)橐怨芾韱T身份運(yùn)行容易把目錄里的文件權(quán)限搞亂后續(xù)非管理員工具的讀寫會(huì)受影響。Linux下類似別把SDK放到/usr或/opt下然后糾結(jié)權(quán)限直接放~/Android/Sdk設(shè)置ANDROID_HOME后完全無障礙。既然是開發(fā)工具使用者就該有完整的讀寫控制權(quán)這是最舒服的狀態(tài)。5.5 和Android Studio的SDK目錄沖突問題很多人的電腦上既有Android Studio又在折騰命令行SDK。這時(shí)要確認(rèn)你希望ANDROID_HOME指向哪邊。如果Android Studio已經(jīng)自動(dòng)裝了一套SDK理論上可以共用同一套沒必要再裝第二份。Android Studio的SDK Manager里顯示的“Android SDK Location”就是ANDROID_HOME應(yīng)該指的位置。如果你決定用命令行管理新SDK可以不改動(dòng)Android Studio自身配置只把ANDROID_HOME環(huán)境變量指向新SDK目錄。這樣的話Android Studio里通過圖形界面安裝的組件和新命令行裝的狀態(tài)是隔離的。但如果你某個(gè)項(xiàng)目打開時(shí)用的是Android Studio內(nèi)置SDK另一些腳本用命令行SDK很容易出現(xiàn)“版本不一致”的怪問題。我的習(xí)慣是統(tǒng)一非特殊需求ANDROID_HOME只指一個(gè)SDK根目錄cmdline-tools和Android Studio共用。這樣兩邊裝的東西都落在同一目錄樹基本不會(huì)出幺蛾子。6. 實(shí)用總結(jié)與我的個(gè)人經(jīng)驗(yàn)把commandlinetools-win-11076708-latest.zip從“一個(gè)看不懂的壓縮包”變成“順手好用的SDK管理工具”其實(shí)本質(zhì)就三步解壓到cmdline-tools/latest配置好JDK和PATH用sdkmanager裝組件。整個(gè)過程不復(fù)雜但每一步都有細(xì)節(jié)目錄結(jié)構(gòu)、許可協(xié)議、網(wǎng)絡(luò)源都是最常見的絆腳石。我個(gè)人的體會(huì)是不要嫌命令行麻煩。就算你平時(shí)都用Android Studio學(xué)會(huì)sdkmanager也會(huì)讓你在排查環(huán)境問題、寫自動(dòng)化任務(wù)時(shí)快人一步。比如同事報(bào)“SDK缺了build-tools 30.0.3”你一行sdkmanager build-tools;30.0.3就解決了不用讓他打開IDE點(diǎn)點(diǎn)點(diǎn)。最后分享一個(gè)我一直在用的小技巧新機(jī)器完成SDK安裝后立刻執(zhí)行一次yes | sdkmanager --licenses然后全量安裝你項(xiàng)目常用到的所有platform和build-tools版本。因?yàn)榈饶阏娴囊媚硞€(gè)舊版本時(shí)再臨時(shí)裝一方面慢另一方面容易因?yàn)榫W(wǎng)絡(luò)問題卡在一半。提前把許可交了、常用組件裝了后續(xù)所有構(gòu)建都能直接從本地讀取那種順手的感覺試一次就知道。本文還有配套的精品資源點(diǎn)擊獲取