目全攻略)
簡(jiǎn)介本資源為 Android Studio 4.3代號(hào) Arctic Fox版本號(hào) 2020.3.1.22官方 Windows 64 位開發(fā)環(huán)境安裝包面向 Android 應(yīng)用開發(fā)者、移動(dòng)開發(fā)學(xué)習(xí)者及高校實(shí)訓(xùn)師生用于構(gòu)建、調(diào)試和發(fā)布現(xiàn)代 Android 應(yīng)用。壓縮包包含 2000 個(gè)文件主體為 676 個(gè) JAR核心運(yùn)行時(shí)與插件庫(kù)、509 個(gè) Python 腳本構(gòu)建與工具鏈支持、247 個(gè) JSON配置與元數(shù)據(jù)、233 個(gè) TTF 字體UI 資源、114 個(gè) DLL本地平臺(tái)依賴及 53 個(gè) EXE啟動(dòng)與安裝程序整體大小 922.93MB結(jié)構(gòu)完整、開箱即用。已有 946 人下載學(xué)習(xí)資源內(nèi)含完整的許可證聲明NOTICE、ADDITIONAL_LICENSE_INFO 等、安全證書cacerts、調(diào)試組件lldb-server、simpleperf、字體與圖標(biāo)資源TTF/OTF/ICO、模板與代碼片段snippets、templates以及 Kotlin/Groovy/Gradle 相關(guān)支持文件可直接部署于 Windows 開發(fā)環(huán)境滿足從入門到進(jìn)階的 Android 工程實(shí)踐需求。 去年年初一個(gè)完全沒(méi)寫過(guò)代碼的朋友帶著一臺(tái) Windows 筆記本跑來(lái)找我說(shuō)下載了 Android Studio 后新建項(xiàng)目從來(lái)沒(méi)成功跑起來(lái)過(guò)。我?guī)退藘商熳詈蟀l(fā)現(xiàn)既不是電腦太差也不是他操作不對(duì)問(wèn)題全出在 Windows 環(huán)境下的版本適配、編碼、虛擬化和構(gòu)建源上。這件事讓我特別想把 Android Studio Arctic Fox2020.3.1for Windows 的安裝、配置、跑通第一個(gè)項(xiàng)目的完整鏈路重新梳理一遍——因?yàn)檫@個(gè)版本在今天仍然有很多人在用但網(wǎng)上能找到的教程互相矛盾有的說(shuō)先裝 JDK 8有的說(shuō)裝 JDK 11有的讓去 SDK Manager 里找 HAXM 卻怎么都找不到。這個(gè)版本在 Android Studio 歷史上位置很特殊它是最早改用北極狐這類代號(hào)命名的版本之一內(nèi)部版本號(hào)是 2020.3.1默認(rèn)攜帶 JDK 11官方對(duì) Android 11 的成熟支持和對(duì) Android 12 的早期支持都在這個(gè)版本上交匯。也正是因?yàn)檫@種半新不舊的定位讓大量新手在 Windows 上配置它時(shí)容易迷失方向。這篇內(nèi)容我會(huì)按照實(shí)際排查經(jīng)驗(yàn)來(lái)寫盡量把每一步背后的原因講清楚讓你不僅會(huì)操作也知道為什么要這么做。1. Arctic Fox 版本的歷史定位與更新內(nèi)容1.1 新命名方案從版本號(hào)到代號(hào)的轉(zhuǎn)變Android Studio 從 Arctic Fox 開始改變了版本命名方式不再一路用 4.x、5.x 這種純數(shù)字編號(hào)而是每年用一個(gè)動(dòng)物或星座代號(hào)。Arctic Fox 是第一個(gè)吃螃蟹的它對(duì)應(yīng)的內(nèi)部版本號(hào)就是標(biāo)題里的 2020.3.1——這個(gè)數(shù)字其實(shí)是指基于 IntelliJ IDEA 2020.3 平臺(tái)后面的 .1 表示補(bǔ)丁級(jí)別并不是說(shuō)它比 4.x 低端。這個(gè)命名轉(zhuǎn)變帶來(lái)了一個(gè)很實(shí)際的困擾你搜索資料時(shí)會(huì)同時(shí)看到Android Studio 4.2Android Studio 2020.3.1Android Studio Arctic Fox這三種名字它們其實(shí)大致指向同一個(gè)時(shí)代。Arctic Fox 穩(wěn)定版大約在 2021 年 5 月發(fā)布后面陸續(xù)推送到 Patch 4。如果手里裝的是 2020.3.1 Patch 4那可以說(shuō)是這個(gè)分支里最成熟的版本。很多 Windows 用戶至今不愿升級(jí)是因?yàn)殡娔X配置有限、公司內(nèi)網(wǎng)環(huán)境限制或者項(xiàng)目的 Android Gradle PluginAGP版本被鎖死在 4.2 系列。這種情況下Arctic Fox 反而是最穩(wěn)妥的選擇因?yàn)樗?AGP 4.2 的組合經(jīng)過(guò)了大量生產(chǎn)環(huán)境驗(yàn)證。1.2 這個(gè)版本真正值得關(guān)注的升級(jí)點(diǎn)Arctic Fox 與之前版本相比有幾個(gè)對(duì) Windows 用戶影響尤其大的變化默認(rèn)內(nèi)置 JBR 11也就是 JetBrains Runtime基于 JDK 11。官網(wǎng)下載的安裝包自帶運(yùn)行時(shí)你不再需要單獨(dú)安裝 JDK。這一點(diǎn)讓很多看慣了必須先裝 JDK 8教程的人感到困惑。正式支持 Android 12 的早期開發(fā)和預(yù)覽版 SDK同時(shí)也能正常開發(fā) Android 11 及以下版本的應(yīng)用。模板創(chuàng)建時(shí)默認(rèn)推薦 Kotlin但依然保留 Java 模板。App Inspection 工具讓數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)調(diào)試變得更直觀。對(duì) Jetpack Compose 的工程支持開始走向可用不過(guò)那時(shí) Compose 1.0 尚未發(fā)布大多數(shù)項(xiàng)目還在用傳統(tǒng)的 XML 視圖系統(tǒng)。這些變化對(duì) Windows 用戶的實(shí)際含義是安裝配置的優(yōu)先級(jí)變了。你不需要費(fèi)勁折騰 JDK 環(huán)境變量真正需要花心思的是 SDK 組件、模擬器加速、編碼格式和 Gradle 下載源。可惜大多數(shù)教程還停留在舊思路導(dǎo)致新手把時(shí)間浪費(fèi)在根本不重要的環(huán)節(jié)上。2. Windows 安裝前置檢查先把環(huán)境底子打好2.1 是否需要單獨(dú)安裝 JDKJBR 的角色打開 Windows 版安裝包后Android Studio 會(huì)自己帶上 JBR 11所以安裝向?qū)Ю锿耆珱](méi)有配置 JDK這一步。如果你在系統(tǒng)里裝了多個(gè) JDK 版本Android Studio 也不會(huì)受太大影響因?yàn)樗J(rèn)使用自己捆綁的 JBR除非你在File - Project Structure - SDK Location里手動(dòng)指定了別的 Gradle JVM。不過(guò)有一種情況會(huì)踩坑命令行里跑gradlew構(gòu)建時(shí)系統(tǒng)會(huì)讀取JAVA_HOME環(huán)境變量。如果JAVA_HOME指向的是 JDK 8命令行構(gòu)建就會(huì)報(bào)錯(cuò)或提示版本過(guò)低而在 Android Studio 圖形界面里構(gòu)建卻一切正常。解決辦法是把系統(tǒng)變量JAVA_HOME指向任意一個(gè) JDK 11 或更高版本或者直接指向 Android Studio 自帶的jbr目錄例如C:\Program Files\Android\Android Studio\jbr還有一種更隱蔽的問(wèn)題啟動(dòng) Android Studio 時(shí)如果彈出找不到 JRE之類的對(duì)話框多半是你之前手動(dòng)修改過(guò)它的啟動(dòng)配置或者殺毒軟件把 jbr 目錄里的文件隔離了。Windows Defander 偶爾會(huì)對(duì) JBR 里的動(dòng)態(tài)鏈接庫(kù)誤報(bào)遇到這種情況去威脅歷史記錄里恢復(fù)并添加排除項(xiàng)即可。2.2 虛擬化技術(shù)與模擬器加速的檢查如果你打算用 Android Studio 自帶的模擬器先把 CPU 虛擬化確認(rèn)好。Windows 上最方便的檢查方法是打開任務(wù)管理器切到性能標(biāo)簽在 CPU 詳情里看虛擬化已啟用/已禁用。Intel CPU 需要在 BIOS 里開啟 VT-x 和 NX。AMD CPU 需要開啟 SVM。不同品牌主板進(jìn)入 BIOS 的按鍵不一樣通常是開機(jī)時(shí)按 F2、Del 或 F10界面因品牌而異但選項(xiàng)名稱基本都帶有 Virtualization、VT-x、SVM 或 AMD-V。這個(gè)環(huán)節(jié)沒(méi)做好的直接后果是模擬器啟動(dòng)極慢或者直接報(bào)錯(cuò) emulator: ERROR: x86 emulation currently requires hardware acceleration!。還需要留意 Windows 自身的 Hyper-V 功能。Arctic Fox 時(shí)代Intel HAXM 和 Hyper-V 不能同時(shí)工作。如果你在 Windows 功能里啟用了 Hyper-V 或者虛擬機(jī)監(jiān)控程序平臺(tái)WHPXHAXM 就會(huì)被禁用。這時(shí)除了代碼以外優(yōu)先確認(rèn)這兩件事的啟用狀態(tài)否則可能白折騰一晚上。熱詞里提到的Windows 不帶 Hyper-V 功能如何運(yùn)行 Android Studio也正是這個(gè)坑的高頻體現(xiàn)。2.3 SDK 和 Gradle 的目錄規(guī)劃我見過(guò)太多人把 Android Studio 和 SDK 全裝在 C 盤最后系統(tǒng)盤紅了才來(lái)求救。這里建議在安裝前一次性規(guī)劃好目錄Android Studio 程序本體建議裝到非系統(tǒng)盤比如D:\AndroidStudio。Android SDK安裝向?qū)Ю锟梢宰远x建議放到D:\Android\Sdk后續(xù)下載的 platform、build-tools、system-image 會(huì)占用幾十 GB。Gradle 用戶目錄默認(rèn)在C:\Users\你的用戶名\.gradle存放所有項(xiàng)目的依賴緩存時(shí)間長(zhǎng)了也是 10 GB 起步。把 Gradle 用戶目錄遷移到別的盤方法很簡(jiǎn)單新建一個(gè)系統(tǒng)環(huán)境變量GRADLE_USER_HOME值設(shè)為D:\gradle_cache然后重啟 Android Studio。這樣之后所有項(xiàng)目的依賴都會(huì)緩存到 D 盤重裝系統(tǒng)也不會(huì)把緩存頂?shù)簟?. 安裝向?qū)c首次啟動(dòng)每個(gè)選項(xiàng)背后的含義3.1 安裝項(xiàng)怎么勾選才合理Arctic Fox 的 Windows 安裝包啟動(dòng)后組件選擇框里有三項(xiàng)Android Studio、Android SDK、Android Virtual DeviceAVD。AVD 是一個(gè)預(yù)配置好的模擬器鏡像但選了它不代表之后不需要下載系統(tǒng)鏡像所以我建議新手全選寧可先體驗(yàn)一把模擬器再說(shuō)。到了 Setup Type 這一步很多人不知道 Standard 和 Custom 的區(qū)別Standard自動(dòng)安裝當(dāng)前最新的 SDK 平臺(tái)、Build-Tools 和命令行工具。如果你不太確定自己要什么選這個(gè)最省事。Custom適合想修改 SDK 安裝目錄或者機(jī)器上已經(jīng)有一份舊 SDK 想直接復(fù)用的情況。別小看這一步SDK 目錄選錯(cuò)位置后面遷移非常麻煩。Android Studio 會(huì)把這個(gè)路徑寫進(jìn)配置后續(xù)想改要通過(guò) SDK Manager 或手動(dòng)編輯local.properties里面有類似sdk.dirD\:\\Android\\Sdk的一行改錯(cuò)了項(xiàng)目直接起不來(lái)。3.2 首次啟動(dòng)要過(guò)的三道關(guān)SDK、Gradle、許可協(xié)議首次啟動(dòng)會(huì)進(jìn)入一個(gè)下載和配置 SDK 的向?qū)Ш芏嗳司褪窃谶@里連續(xù)失敗然后放棄。把這三個(gè)關(guān)卡過(guò)了后面基本一路順暢。第一關(guān)選擇要安裝的 SDK 組件。最基礎(chǔ)的三件套是Android SDK Platform開發(fā)目標(biāo)版本、Android SDK Build-Tools、Platform-Toolsadb 在這里面。如果準(zhǔn)備用模擬器再勾選對(duì)應(yīng) API 級(jí)別的 System Image。不需要把所有系統(tǒng)版本都裝上一般只裝一個(gè)你手機(jī)對(duì)應(yīng)的安卓版本和一個(gè) API 30/31 的模擬器鏡像就夠了。第二關(guān)網(wǎng)絡(luò)下載。SDK 的大文件和 Gradle 壓縮包在國(guó)內(nèi)經(jīng)常出現(xiàn)下載到一半失敗的情況。如果反復(fù)重試還不行可以換一個(gè)思路下載官網(wǎng)提供的含 SDK 的離線安裝包然后在向?qū)Ю镞x擇已有 SDK 目錄在線下載問(wèn)題就繞過(guò)去了。注意這個(gè)過(guò)程我不建議依賴任何需要額外配置的手段最可靠的就是選擇一個(gè)網(wǎng)絡(luò)狀況好的時(shí)段重試或者使用完整的離線包。第三關(guān)許可證。SDK 安裝向?qū)ё詈髸?huì)列出各個(gè)組件的 license 協(xié)議必須勾選 Accept。有些用戶在這步?jīng)]注意到協(xié)議列表很長(zhǎng)漏掉下面幾個(gè)沒(méi)勾結(jié)果項(xiàng)目構(gòu)建時(shí)提示 license not accepted。如果出現(xiàn)這種情況可以打開命令行進(jìn)入 SDK 的cmdline-tools目錄執(zhí)行sdkmanager --licenses然后一直輸入 y 回車把所有協(xié)議都接受一遍。這個(gè)操作能解決九成以上的許可證報(bào)錯(cuò)。3.3 JVM 內(nèi)存設(shè)置與構(gòu)建內(nèi)存的取舍Arctic Fox 默認(rèn)給 IDE 分配的堆內(nèi)存一般是 1280MB。現(xiàn)在 Windows 筆記本普遍 16GB 內(nèi)存起步不改這個(gè)值會(huì)覺(jué)得卡頓明顯。可以在 Help - Change Memory Settings 里把堆內(nèi)存調(diào)到 2048MB 或 3072MB如果電腦內(nèi)存只有 8GB建議最高 2048MB 就好調(diào)太大反而影響整機(jī)。另外在項(xiàng)目的gradle.properties里也有一個(gè)構(gòu)建內(nèi)存參數(shù)和 IDE 堆內(nèi)存是兩碼事org.gradle.jvmargs-Xmx2048m -XX:MaxMetaspaceSize512m -Dfile.encodingUTF-8這個(gè)參數(shù)管的是 Gradle 守護(hù)進(jìn)程能使用多少內(nèi)存。Windows 上如果構(gòu)建過(guò)程中出現(xiàn) Could not reserve enough space 之類的報(bào)錯(cuò)就是給 Gradle 留的內(nèi)存和 IDE 堆內(nèi)存相加超過(guò)了物理內(nèi)存。兩者要一起規(guī)劃不要讓它們打架。4. 中文漢化與控制臺(tái)亂碼新手最常見的兩件煩心事4.1 中文語(yǔ)言包裝還是不裝Arctic Fox 是基于 IntelliJ 平臺(tái)開發(fā)的所以可以用 JetBrains 提供的中文語(yǔ)言包插件。打開 File - Settings - Plugins在 Marketplace 搜 Chinese Language Pack安裝后重啟就是中文界面。我的建議是完全沒(méi)有編程經(jīng)驗(yàn)的人可以裝能減少初期面對(duì)滿屏英文的恐懼。但要注意就算界面是中文的代碼、報(bào)錯(cuò)、日志依然是英文漢化并不能讓你完全避開英文環(huán)境。我個(gè)人見過(guò)不少學(xué)了一兩個(gè)月的同學(xué)因?yàn)榱?xí)慣了漢化界面看英文資料時(shí)連菜單對(duì)應(yīng)不上。所以更合理的使用方式是把漢化當(dāng)作過(guò)渡工具等熟悉了 IDE 布局之后果斷停用回到英文界面。4.2 亂碼問(wèn)題的根因與修復(fù)Windows 下中文亂碼是高頻問(wèn)題但根因其實(shí)很集中。最常見的是文件編碼不一致導(dǎo)致源碼里的中文注釋變成亂碼。Windows 的中文區(qū)域默認(rèn)編碼是 GBKCP936而 Android Studio 默認(rèn)用 UTF-8項(xiàng)目文件如果用 UTF-8 保存但 IDE 按 GBK 讀取就會(huì)亂。修復(fù)方法是把 IDE 所有編碼統(tǒng)一成 UTF-8。打開 Settings - Editor - File Encodings把 Global Encoding、Project Encoding 和 Properties Files 的默認(rèn)編碼分別改成 UTF-8。如果項(xiàng)目里已經(jīng)有亂碼文件需要用專業(yè)的文件編碼轉(zhuǎn)換工具把文件重新轉(zhuǎn)回 UTF-8直接改 IDE 設(shè)置不會(huì)自動(dòng)恢復(fù)已經(jīng)損壞的中文。還有一種更隱蔽的情況是 Gradle 構(gòu)建控制臺(tái)輸出亂碼。Arctic Fox 在 Windows 上調(diào)用 Gradle 時(shí)Gradle 守護(hù)進(jìn)程會(huì)讀取系統(tǒng)默認(rèn)字符集如果項(xiàng)目里存在中文日志或中文編譯信息就會(huì)變成一堆方框或問(wèn)號(hào)。處理辦法是給 IDE 的虛擬機(jī)參數(shù)加上強(qiáng)制 UTF-8打開 Help - Edit Custom VM Options在文件末尾添加-Dfile.encodingUTF-8保存后重啟 Android Studio。這個(gè)參數(shù)同時(shí)會(huì)傳給 Gradle 守護(hù)進(jìn)程配合上一節(jié)gradle.properties里的-Dfile.encodingUTF-8兩處齊上亂碼基本能清干凈。極少數(shù)情況下Windows 系統(tǒng)本身的國(guó)家區(qū)域設(shè)置會(huì)把非 UTF-8 程序的語(yǔ)言搞亂。在控制面板 - 區(qū)域 - 更改系統(tǒng)區(qū)域設(shè)置里勾選Beta: 使用 Unicode UTF-8 提供全球語(yǔ)言支持能解決系統(tǒng)級(jí)亂碼但副作用是會(huì)改變很多老軟件的顯示不建議作為首選方案只適合處理整個(gè)系統(tǒng)大面積亂碼的場(chǎng)景。5. Gradle 構(gòu)建加速鏡像配置與手動(dòng)分發(fā)5.1 gradle-wrapper.properties 的配置邏輯Gradle 是 Android 構(gòu)建系統(tǒng)的核心。每個(gè)新建項(xiàng)目都有一個(gè)gradle/wrapper/gradle-wrapper.properties文件它決定了項(xiàng)目使用哪個(gè) Gradle 版本。Arctic Fox 時(shí)代常見搭配是 Gradle 7.0.2 和 AGP 4.2.2。文件關(guān)鍵內(nèi)容如下distributionBaseGRADLE_USER_HOME distributionPathwrapper/dists distributionUrlhttps\://services.gradle.org/distributions/gradle-7.0.2-bin.zip zipStoreBaseGRADLE_USER_HOME zipStorePathwrapper/dists這里的distributionUrl是 Gradle 發(fā)行版的下載地址。Windows 上第一次打開項(xiàng)目時(shí)Android Studio 會(huì)嘗試從services.gradle.org下載整個(gè)壓縮包速度受網(wǎng)絡(luò)影響極大經(jīng)常卡在 Gradle: Download... 半天不動(dòng)。最實(shí)用的做法是手動(dòng)下載好對(duì)應(yīng)版本的 Gradle 壓縮包然后修改distributionUrl指向本地文件distributionUrlfile\:/D:/soft/gradle/gradle-7.0.2-bin.zip注意file:/后面要跟絕對(duì)路徑冒號(hào)和正斜杠在 properties 文件里需要轉(zhuǎn)義。每次新建項(xiàng)目都要改一次這個(gè)文件比較麻煩但勝在穩(wěn)定。如果不希望每次都手動(dòng)改也可以在 Android Studio 的設(shè)置里把 Gradle 指定為本地安裝目錄 Settings - Build Tools - Gradle - Use Gradle from: specified location。這樣項(xiàng)目會(huì)直接使用你指定的 Gradle不再受distributionUrl影響。5.2 倉(cāng)庫(kù)鏡像替換和依賴緩存遷移Gradle 下載依賴時(shí)需要訪問(wèn) Google Maven、Maven Central 等倉(cāng)庫(kù)在中國(guó)大陸訪問(wèn)經(jīng)常出現(xiàn)連接超時(shí)或下載緩慢。這類問(wèn)題最直接的解決方式是修改項(xiàng)目級(jí)build.gradle里的倉(cāng)庫(kù)源統(tǒng)一指向國(guó)內(nèi)鏡像。以阿里云鏡像為例修改后大約長(zhǎng)這樣buildscript { repositories { maven { url https://maven.aliyun.com/repository/public } maven { url https://maven.aliyun.com/repository/google } maven { url https://maven.aliyun.com/repository/gradle-plugin } } } allprojects { repositories { maven { url https://maven.aliyun.com/repository/public } maven { url https://maven.aliyun.com/repository/google } maven { url https://maven.aliyun.com/repository/gradle-plugin } } }如果項(xiàng)目里還有jcenter()需要一并替換為maven { url https://maven.aliyun.com/repository/jcenter }或者直接移除因?yàn)?JCenter 官方已經(jīng)停止更新。替換完成后依賴下載速度會(huì)有肉眼可見的提升。這里還要提一個(gè)很多人忽略的環(huán)境變量GRADLE_USER_HOME。默認(rèn)情況下所有下載的依賴緩存在C:\Users\用戶名\.gradle\caches。我見過(guò)有人 C 盤塞滿了依賴緩存導(dǎo)致構(gòu)建失敗。提前把環(huán)境變量指向 D 盤不但能釋放系統(tǒng)盤壓力以后重裝系統(tǒng)還能保留緩存不用全部重新下載。5.3 常見 Gradle 報(bào)錯(cuò)的排查順序Windows 上 Gradle 報(bào)錯(cuò)五花八門但按照一個(gè)固定順序排查會(huì)快很多看 Build Output 面板最上方的錯(cuò)誤區(qū)分是下載問(wèn)題還是代碼問(wèn)題。如果提示 Could not resolve 或者 Could not find優(yōu)先檢查repositories和distributionUrl。如果提示 Minimum supported Gradle version is X說(shuō)明 Gradle 版本不夠把 wrapper 升級(jí)到提示要求的版本。如果提示 File was loaded in the wrong encoding優(yōu)先處理編碼問(wèn)題。如果上述都正常但反復(fù)失敗試試 File - Invalidate Caches / Restart 清理 IDE 緩存。這套順序我用了很多年基本沒(méi)有失手過(guò)。很多新手一看到構(gòu)建失敗就以為是自己代碼寫錯(cuò)了其實(shí)八成以上的問(wèn)題都出在環(huán)境層面。6. 模擬器與真機(jī)調(diào)試從零跑通第一個(gè)項(xiàng)目6.1 模擬器加速HAXM、WHPX 與 AEHD 的選用Arctic Fox 時(shí)代Windows 上模擬器的加速方案主要有三條路線選錯(cuò)了會(huì)非常折騰。第一條是 Intel CPU 配 HAXM。這是當(dāng)年最經(jīng)典也最穩(wěn)定的方案。打開 Settings - Appearance Behavior - System Settings - Android SDK - SDK Tools 標(biāo)簽頁(yè)勾選 Intel x86 Emulator Accelerator (HAXM installer) 然后下載安裝。如果安裝失敗通常是 Windows 的 Hyper-V 功能開著先關(guān)掉 Hyper-V 重啟電腦再裝 HAXM。也可以去 Intel 官網(wǎng)手動(dòng)下載 HAXM 安裝包運(yùn)行silent_install.bat能獲得更詳細(xì)的錯(cuò)誤輸出。第二條是 AMD CPU 配 Windows Hypervisor PlatformWHPX。AMD 處理器用不了 HAXM需要在 Windows 功能里啟用Windows 虛擬機(jī)監(jiān)控程序平臺(tái)和虛擬機(jī)平臺(tái)然后在 AVD 的模擬器設(shè)置里選擇 WHPX 作為后端。這個(gè)方案對(duì) Windows 10 版本有要求太舊的系統(tǒng)可能看不到這個(gè)選項(xiàng)。第三條是后來(lái)才出現(xiàn)的 AEHDAndroid Emulator Hypervisor Driver它主要用來(lái)替代已停止維護(hù)的 HAXM 和解決部分 Hyper-V 沖突但在 Arctic Fox 時(shí)代還不算成熟。如果你裝的是 2020.3.1 Patch 3 之前的老版本不建議主動(dòng)嘗試 AEHD。怎么判斷加速是否生效打開命令行進(jìn)入 SDK 的emulator目錄運(yùn)行emulator -accel-check如果輸出類似 HAXM version 7.6.5 is installed and usable說(shuō)明加速正常。如果輸出 CPU acceleration status: The emulator is not accelerated說(shuō)明硬件加速?zèng)]啟用。6.2 創(chuàng)建項(xiàng)目與首次構(gòu)建的完整流程新建項(xiàng)目時(shí)選 Empty Activity 模板語(yǔ)言選 Kotlin。Name 可以隨意Package name 建議用反向域名格式比如com.example.myfirstapp。首次構(gòu)建最耗時(shí)間的是兩件事Gradle 發(fā)行版下載和依賴下載。如果已經(jīng)按第 5 章配置了本地 Gradle 和阿里云鏡像這個(gè)過(guò)程應(yīng)該能控制在幾分鐘內(nèi)。如果卡住別傻等直接關(guān)掉 Android Studio 檢查網(wǎng)絡(luò)和配置再重新打開。構(gòu)建成功后點(diǎn)工具欄的綠色運(yùn)行箭頭會(huì)有兩個(gè)目標(biāo)選項(xiàng)模擬器和真機(jī)。模擬器第一次啟動(dòng)前要先創(chuàng)建 AVD。在 AVD Manager 里選擇設(shè)備型號(hào)然后選系統(tǒng)鏡像。這里有個(gè) Windows 用戶很容易犯的錯(cuò)誤下載了 ARM 版的系統(tǒng)鏡像。在 x86 架構(gòu)的 Windows 上ARM 鏡像要用軟件模擬速度慢到難以忍受。務(wù)必選擇x86或x86_64的鏡像API 級(jí)別選 30 或 31 都比較合適。真機(jī)調(diào)試流程要更簡(jiǎn)單一些手機(jī)打開設(shè)置 - 關(guān)于手機(jī)連續(xù)點(diǎn)擊版本號(hào) 7 次開啟開發(fā)者模式。在開發(fā)者選項(xiàng)里打開USB 調(diào)試。用數(shù)據(jù)線連接電腦在手機(jī)上授權(quán)調(diào)試。如果提示驅(qū)動(dòng)問(wèn)題去 SDK Manager 里安裝 Google USB Driver。命令行運(yùn)行adb devices看到device狀態(tài)就說(shuō)明連接成功。6.3 示例項(xiàng)目基礎(chǔ)以 RecyclerView 為例看項(xiàng)目結(jié)構(gòu)很多剛?cè)腴T的同學(xué)在熱詞里搜 android studio recyclerview 是什么就拿它當(dāng)?shù)谝粋€(gè)練手項(xiàng)目吧。RecyclerView 是官方提供的列表容器控件用來(lái)展示大量數(shù)據(jù)自帶視圖回收和復(fù)用機(jī)制。它不像老舊的 ListView 那樣需要手工管理緩存內(nèi)存表現(xiàn)好很多。在 Arctic Fox 創(chuàng)建的新項(xiàng)目里使用 RecyclerView 分三步第一步在app/build.gradle的 dependencies 中添加implementation androidx.recyclerview:recyclerview:1.2.0第二步在布局文件里放入 RecyclerViewandroidx.recyclerview.widget.RecyclerView android:idid/rvList android:layout_widthmatch_parent android:layout_heightmatch_parent /第三步創(chuàng)建 Adapter 和 ViewHolder然后在 MainActivity 里關(guān)聯(lián) LayoutManagerval recyclerView findViewByIdRecyclerView(R.id.rvList) recyclerView.layoutManager LinearLayoutManager(this) recyclerView.adapter MyAdapter(dataList)這個(gè)過(guò)程能讓你跑通從依賴聲明到界面展示的完整鏈路是很典型的 Android 工程實(shí)踐。如果這個(gè)項(xiàng)目能順利跑起來(lái)說(shuō)明你的 Windows 環(huán)境已經(jīng)完全沒(méi)有問(wèn)題可以開始正式學(xué) Android 開發(fā)了。7. 我最終留下的配置清單與后續(xù)版本遷移建議7.1 我最終留下的 Windows 配置方案經(jīng)過(guò)反復(fù)折騰我現(xiàn)在的 Arctic Fox 環(huán)境配置基本固定下來(lái)了你可以直接抄作業(yè)配置項(xiàng)我的選擇原因Android Studio 安裝位置D:\AndroidStudio避免系統(tǒng)盤占用Android SDK 位置D:\Android\Sdk體積大放非系統(tǒng)盤更穩(wěn)妥GRADLE_USER_HOMED:\gradle_cache緩存可遷移重裝系統(tǒng)不丟JDK使用自帶 JBR 11不需要額外裝 JDK文件編碼全部 UTF-8解決源碼和日志亂碼IDE 堆內(nèi)存-Xmx3072m16GB 內(nèi)存機(jī)型流暢運(yùn)行構(gòu)建內(nèi)存-Xmx2048m -XX:MaxMetaspaceSize512m與 IDE 內(nèi)存平衡模擬器加速Intel HAXM關(guān)閉 Hyper-VArctic Fox 時(shí)代最穩(wěn)Maven 鏡像阿里云 public/google/gradle-plugin依賴下載速度提升明顯Gradle 發(fā)行版本地手動(dòng)下載 7.0.2繞開 services.gradle.org如果按照這套方案還會(huì)出問(wèn)題我的排查順序是先看 Gradle Console 的最上方錯(cuò)誤再確認(rèn)distributionUrl和repositories然后檢查編碼設(shè)置最后清理 IDE 緩存。這個(gè)順序至少幫我解決了九成的環(huán)境類問(wèn)題。7.2 從 Arctic Fox 到后續(xù)版本的平滑遷移如果你以后想升級(jí)到新版本比如 Bumblebee、Chipmunk 或者更新的版本升級(jí)前務(wù)必先備份三個(gè)文件settings.gradle項(xiàng)目模塊配置。項(xiàng)目級(jí)build.gradle插件版本和倉(cāng)庫(kù)源。gradle/wrapper/gradle-wrapper.propertiesGradle 版本。升級(jí)后最常見的報(bào)錯(cuò)是 Minimum supported Gradle version is X這是新版 AGP 要求更高的 Gradle 版本需要同步修改distributionUrl。升級(jí)過(guò)程最忌諱直接拖進(jìn)新版 IDE 就點(diǎn)運(yùn)行AGP 和 Gradle 的版本組合是有嚴(yán)格對(duì)應(yīng)關(guān)系的亂搭會(huì)引發(fā)一堆莫名其妙的問(wèn)題。寫到這里我想說(shuō)一個(gè)自己的真實(shí)體會(huì)無(wú)論版本怎么更迭安裝卡住的根源長(zhǎng)時(shí)間以來(lái)都是那幾件事——虛擬化沒(méi)開、編碼不對(duì)、下載源不通、Gradle 版本不匹配。我在每次給新電腦配環(huán)境時(shí)都會(huì)先按第 7.1 節(jié)的表格把底子打好再談寫代碼。Arctic Fox 雖然已經(jīng)是多年前的版本但只要把環(huán)境底子打?qū)λ\(yùn)行起來(lái)依然很輕快。如果你在 Windows 上配置這個(gè)版本時(shí)遇到了什么上面沒(méi)提到的怪問(wèn)題歡迎把你的構(gòu)建日志發(fā)在評(píng)論區(qū)一起看看。本文還有配套的精品資源點(diǎn)擊獲取