
我們很高興發(fā)布了 Android Studio 4.1 穩(wěn)定版,為大家?guī)?lái)一系列針對(duì)常見(jiàn)的編輯、調(diào)試和優(yōu)化工作的功能。4.1 版本的重點(diǎn)訴求之一是幫助您在使用 Android Jetpack 庫(kù) (即 Android 的開(kāi)發(fā)庫(kù)套件) 時(shí)遵循最佳實(shí)踐和提升代碼編寫(xiě)效率。基于大家的反饋,我們直接在 IDE 中集成了諸多常用的 Android 庫(kù),從而改善了編寫(xiě)代碼的體驗(yàn)。
Android Studio 4.1 的一些亮點(diǎn)如下: 引入全新的 Database Inspector,用于查詢應(yīng)用的數(shù)據(jù)庫(kù);支持瀏覽使用 Dagger 或 Hilt 進(jìn)行依賴項(xiàng)注入的項(xiàng)目;支持在 Android 項(xiàng)目中使用 TensorFlow Lite 模型,進(jìn)一步增強(qiáng)了對(duì)設(shè)備端機(jī)器學(xué)習(xí)的支持。我們還對(duì) Apply Changes 進(jìn)行了更新,以加快部署速度。我們根據(jù)大家的反饋進(jìn)行了一些更改,引入了新的原生內(nèi)存性能分析器和獨(dú)立分析工具來(lái)為游戲開(kāi)發(fā)者提供助力。
產(chǎn)品質(zhì)量仍然是團(tuán)隊(duì)的主要關(guān)注點(diǎn),我們一直在努力解決錯(cuò)誤和性能問(wèn)題。從大家的反饋來(lái)看,許多開(kāi)發(fā)者十分認(rèn)同我們專注于提高性能和可靠性的舉措。很高興地告訴大家,在本次發(fā)布周期中,我們修復(fù)了 2,370 個(gè)錯(cuò)誤,解決了 275 個(gè)公共問(wèn)題。高品質(zhì)是我們一貫堅(jiān)持的目標(biāo),因?yàn)槲覀冎肋@是提高開(kāi)發(fā)者工作效率的關(guān)鍵。
許多用戶在預(yù)覽版中提供了早期反饋,在此對(duì)大家表示感謝。正是有了各位的反饋,Android Studio 4.1 中的功能才得以迭代和改進(jìn)。如果您已準(zhǔn)備好使用這個(gè)全新的穩(wěn)定版本,通過(guò)一系列全新的功能提升工作效率,可以在這里 下載 并開(kāi)始使用。
下面按關(guān)鍵開(kāi)發(fā)流程列出了 Android Studio 4.1 中的所有 新功能。
設(shè)計(jì)
Material Design 組件更新
現(xiàn)在,創(chuàng)建新項(xiàng)目 (New Project) 對(duì)話框中的 Android Studio 模板使用 Material Design 組件 (MDC),并且默認(rèn)支持最新版的主題和樣式設(shè)計(jì)指南。如此一來(lái),開(kāi)發(fā)者可以更輕松地使用推薦的 Material 樣式模式,以及支持現(xiàn)代界面功能 (如深色主題)。

更新包括:
-
MDC: 項(xiàng)目使用
build.gradle中的com.google.android.material:material?;A(chǔ)應(yīng)用主題使用Theme.MaterialComponents父級(jí),并覆蓋更新后的 MDC 顏色和 "on" 屬性。 -
顏色資源:
colors.xml中的顏色資源使用字面名稱 (例如,使用purple_500而不是colorPrimary)。 -
主題資源: 主題資源位于
themes.xml(而非styles.xml) 中并使用Theme.<ApplicationName>名稱。 -
深色主題: 基礎(chǔ)應(yīng)用主題使用
DayNight父級(jí),并分為res/values和 res/values-night。 -
主題屬性: 在布局和樣式中將顏色資源稱為主題屬性 (例如
?attr/colorPrimary),以避免硬編碼顏色。
開(kāi)發(fā)
Database Inspector
我們希望借助新的 Database Inspector 來(lái)簡(jiǎn)化應(yīng)用數(shù)據(jù)庫(kù)的檢查、查詢和修改操作。首先,將您的應(yīng)用部署到運(yùn)行 API 26 或更高級(jí)別的設(shè)備,然后從菜單中依次選擇 View > Tool Windows > Database Inspector。無(wú)論您的應(yīng)用是直接使用 Jetpack Room 開(kāi)發(fā)庫(kù)還是 Android 平臺(tái)版本的 SQLite,您現(xiàn)在都可以輕松檢查正在運(yùn)行的應(yīng)用中的數(shù)據(jù)庫(kù)和表,或運(yùn)行自定義查詢。
由于 Android Studio 在您檢查應(yīng)用時(shí)會(huì)保持實(shí)時(shí)連接,因此您也可以使用 Database Inspector 對(duì)數(shù)值進(jìn)行修改,并在運(yùn)行的應(yīng)用中查看結(jié)果。如果您使用 Room 持久庫(kù),Android Studio 還會(huì)在代碼編輯器的每個(gè)查詢旁邊插入運(yùn)行按鈕,以幫助您快速運(yùn)行在 @Query 注解中定義的查詢。您可以閱讀 官方文檔 了解詳情。

直接在 Android Studio 中運(yùn)行 Android 模擬器
現(xiàn)在,您可以直接在 Android Studio 中運(yùn)行 Android 模擬器。此功能有助于節(jié)省屏幕空間,您可以使用熱鍵在模擬器和編輯器窗口之間快速導(dǎo)航,并在一個(gè)應(yīng)用窗口中組織您的 IDE 和模擬器工作流。您可以在 Studio 中管理快照以及旋轉(zhuǎn)和截圖等常見(jiàn)的模擬器操作,但要使用全部功能選項(xiàng),仍然需要使用穩(wěn)定的模擬器。您可以按照這個(gè)菜單路徑啟用此功能: File → Settings → Tools → Emulator → Launch in Tool Window。

Dagger 導(dǎo)航支持
Dagger 是 Android 上常用的依賴項(xiàng)注入庫(kù)。Android Studio 提供了新的 gutter 操作并擴(kuò)展了 Find Usages 窗口中的支持,使得在 Dagger 相關(guān)代碼之間導(dǎo)航更加簡(jiǎn)單。例如,點(diǎn)擊使用給定類型的方法旁邊的



使用 TensorFlow Lite 模型
目前,Android 開(kāi)發(fā)者紛紛利用機(jī)器學(xué)習(xí)來(lái)打造新穎、實(shí)用的體驗(yàn)。TensorFlow Lite 是常見(jiàn)的用于編寫(xiě)移動(dòng)端機(jī)器學(xué)習(xí)模型的開(kāi)發(fā)庫(kù),我們希望簡(jiǎn)化將這些模型導(dǎo)入 Android 應(yīng)用的過(guò)程。與視圖綁定類似,Android Studio 會(huì)生成易于使用的類,幫助您精簡(jiǎn)運(yùn)行模型所需的代碼并提升類型安全性。ML Model Binding (ML 模型綁定) 當(dāng)前的實(shí)現(xiàn)支持圖像分類和風(fēng)格轉(zhuǎn)換模型,前提是它們通過(guò)元數(shù)據(jù)得到了增強(qiáng)。
要查看導(dǎo)入模型的詳細(xì)信息以及如何在應(yīng)用中使用,請(qǐng)雙擊項(xiàng)目中的 .tflite 模型文件以打開(kāi)模型查看器頁(yè)面。您可以閱讀 官方文檔 了解詳情。

構(gòu)建和測(cè)試
Android 模擬器 - 可折疊設(shè)備鉸鏈信息支持
Android Studio
除了最近新增的 5G 移動(dòng)網(wǎng)絡(luò)測(cè)試 功能,我們還在 Android 模擬器中增加了對(duì)可折疊設(shè)備的支持。在 Android 模擬器 30.0.26 及更高版本中,您可以使用多種折疊設(shè)計(jì)和配置對(duì)可折疊設(shè)備進(jìn)行設(shè)置。設(shè)置完畢后,模擬器將提供鉸鏈角度傳感器和姿態(tài)變化信息,方便您測(cè)試應(yīng)用在這些機(jī)型上的響應(yīng)情況。請(qǐng)參閱博文《使用 Android 模擬器在 Android 11 上進(jìn)行開(kāi)發(fā)》了解更多。

Apply Changes 更新
更快的構(gòu)建有助于開(kāi)發(fā)者更輕松、快速地更改應(yīng)用。為了幫助您提高應(yīng)用迭代效率,我們對(duì) Android 11 或更高版本設(shè)備的 Apply Changes 進(jìn)行了多項(xiàng)增強(qiáng)。
我們?cè)趦?yōu)化迭代速度上進(jìn)行了大力投入,開(kāi)發(fā)出一種無(wú)需安裝應(yīng)用即可在設(shè)備上部署和保存更改的方法?,F(xiàn)在,在完成初始部署后,通過(guò) Apply Code Changes 或 Apply Changes and Restart Activity 對(duì) Android 11 設(shè)備進(jìn)行后續(xù)部署的速度大幅提升。我們還在 Apply Changes 中 增加了對(duì)其他代碼更改的支持?,F(xiàn)在,在您添加一個(gè)方法后,可點(diǎn)擊 Apply Code Changes 或 Apply Changes and Restart Activity 按鈕將這些更改部署到正在運(yùn)行的應(yīng)用中。
從 AAR 中導(dǎo)出 C/C++ 依賴項(xiàng)
Android Gradle Plugin 4.0 增加了 在 AAR 依賴項(xiàng)中導(dǎo)入 Prefab 軟件包 的功能。我們希望擴(kuò)展此功能以共享原生庫(kù)。AGP 4.1 支持在 Android 庫(kù)項(xiàng)目的 AAR 中從外部原生構(gòu)建中導(dǎo)出庫(kù)。要導(dǎo)出原生庫(kù),請(qǐng)將以下內(nèi)容添加到庫(kù)項(xiàng)目 build.gradle 文件的 android 塊中:
buildFeatures {
prefabPublishing true
}
prefab {
mylibrary {
headers "src/main/cpp/mylibrary/include"
}
myotherlibrary {
headers "src/main/cpp/myotherlibrary/include"
}
}
原生代碼崩潰報(bào)告符號(hào)化解析
當(dāng)原生代碼發(fā)生崩潰或 ANR 時(shí),系統(tǒng)會(huì)生成堆棧軌跡,即程序崩潰前所調(diào)用的嵌套函數(shù)序列的快照。這些快照可以幫助您識(shí)別和修復(fù)源代碼中的問(wèn)題,但是必須首先將它們符號(hào)化,以將計(jì)算機(jī)地址轉(zhuǎn)換回人類可讀的函數(shù)名。
如果您的應(yīng)用或游戲是使用 C++ 之類的原生代碼開(kāi)發(fā)的,那么您現(xiàn)在可以將每個(gè)版本應(yīng)用的調(diào)試符號(hào)文件上傳到 Play 管理中心。Play 管理中心使用這些調(diào)試符號(hào)文件來(lái)符號(hào)化您應(yīng)用的堆棧軌跡,從而簡(jiǎn)化崩潰和 ANR 分析。如果要將調(diào)試符號(hào)包含在 App Bundle 中,請(qǐng)將下方內(nèi)容添加到項(xiàng)目的 build.gradle 文件中:
android.buildTypes.release.ndk.debugSymbolLevel = 'SYMBOL_TABLE'
優(yōu)化
System Trace 界面改進(jìn)
在 Android Studio 4.1 中,我們對(duì) System Trace 進(jìn)行了全面改進(jìn),該優(yōu)化工具可讓您實(shí)時(shí)了解應(yīng)用對(duì)系統(tǒng)資源的使用情況。通過(guò)框選模式還可以更輕松地選擇跟蹤記錄,此外,我們還添加了新的分析標(biāo)簽頁(yè),并添加了更多的幀渲染數(shù)據(jù),以幫助您調(diào)查應(yīng)用界面中的渲染問(wèn)題。您可以閱讀 官方文檔 了解詳情。
框選 : 在 Threads 部分中,您現(xiàn)在可以拖動(dòng)鼠標(biāo)來(lái)框選一個(gè)矩形區(qū)域,并點(diǎn)擊右上角的 Zoom to Selection 按鈕 (或使用鍵盤快捷鍵 M) 來(lái)放大該區(qū)域。當(dāng)您將相似的線程拖放到一起后,可以跨多個(gè)線程進(jìn)行框選以同時(shí)檢查所有線程。

Summary 選項(xiàng)卡: Analysis 面板中全新的 Summary 選項(xiàng)卡會(huì)顯示以下內(nèi)容:
- 特定事件的所有實(shí)例的匯總統(tǒng)計(jì)信息,例如實(shí)例計(jì)數(shù)和最小/最大持續(xù)時(shí)間。
- 選定實(shí)例的跟蹤事件統(tǒng)計(jì)信息。
- 有關(guān)線程狀態(tài)分布的數(shù)據(jù)。
- 所選跟蹤事件內(nèi)運(yùn)行時(shí)間最長(zhǎng)的實(shí)例。

△ 在 Summary 選項(xiàng)卡中查看匯總統(tǒng)計(jì)信息
顯示數(shù)據(jù): 在 Display 部分,SurfaceFlinger 和 VSYNC 的新時(shí)間軸可幫助您調(diào)查應(yīng)用界面中的渲染問(wèn)題。
獨(dú)立分析器
現(xiàn)在可以在獨(dú)立于 Android Studio 主窗口的單獨(dú)窗口中訪問(wèn) Android Studio 分析器。在優(yōu)化使用其他工具 (如 Unity 或 Visual Studio) 構(gòu)建的 Android 游戲時(shí),此功能十分有用。
要運(yùn)行獨(dú)立分析器,請(qǐng)執(zhí)行以下操作:
確保您的系統(tǒng)現(xiàn)在沒(méi)有運(yùn)行 Android Studio 中的分析器。
轉(zhuǎn)到安裝目錄并導(dǎo)航到 bin 目錄:
Windows/Linux:
<studio-installation-folder>\bin
macOS:
<studio-installation-folder>/Contents/bin
- 根據(jù)您的操作系統(tǒng),運(yùn)行
profiler.exe或profiler.sh
獨(dú)立分析器可連接到 Android Emulator 或其他已連接的設(shè)備上。

原生內(nèi)存性能分析器
跟蹤原生內(nèi)存的使用情況對(duì)于游戲開(kāi)發(fā)者和其他使用 C++ 的開(kāi)發(fā)者十分重要,他們可以據(jù)此優(yōu)化其應(yīng)用的內(nèi)存使用。Android Studio 內(nèi)存性能分析器 (Memory Profiler) 現(xiàn)在包含一個(gè)原生內(nèi)存性能分析器 (Native Memory Profiler),專門用于運(yùn)行在 Android 10 或更高版本的實(shí)體設(shè)備上的應(yīng)用。原生內(nèi)存性能分析器可以跟蹤特定時(shí)間段內(nèi)原生代碼中對(duì)象的分配 / 銷毀情況,并提供內(nèi)存總體分配和系統(tǒng)堆剩余大小的信息。
要啟動(dòng)記錄,請(qǐng)點(diǎn)擊 Memory Profiler 窗口頂部的 Record native allocations:

總結(jié)
簡(jiǎn)要回顧一下,Android Studio 4.1 包括以下新增及改進(jìn)功能:
設(shè)計(jì)
- Material Design 組件更新
開(kāi)發(fā)
- Database Inspector
- 直接在 Android Studio 中運(yùn)行 Android 模擬器
- Dagger 導(dǎo)航支持
- 使用 TensorFlow Lite 模型
構(gòu)建和測(cè)試
- Android 模擬器 - 可折疊設(shè)備鉸鏈信息支持
- Apply Changes 更新
- 從 AAR 中導(dǎo)出 C/C++ 依賴項(xiàng)
- 原生代碼崩潰報(bào)告符號(hào)化解析
優(yōu)化
- System Trace 界面改進(jìn)
- 獨(dú)立分析器
- 原生內(nèi)存性能分析器
本文作者 / Scott Swarthout, 產(chǎn)品經(jīng)理
文中資料并非由 Unity Technologies 或其附屬公司贊助或與其有關(guān)聯(lián)?!癠nity”是 Unity Technologies 或其附屬公司在美國(guó)和其他地區(qū)的商標(biāo)或注冊(cè)商標(biāo)。