Android Studio 3.4 新特性 2019-4-20

搬運->https://developer.android.com/

IntelliJ IDEA 2018.3.4

The core Android Studio IDE has been updated with improvements from IntelliJ IDEA through the 2018.3.4 release.

先來看Android Gradle plugin 3.4.0 更新

For information on what’s new in Android Gradle plugin 3.4.0, see its release notes.

3.4.0 (April 2019)

此版本的Android插件需要以下內(nèi)容:

  • 等級5.1.1或更高。要了解更多信息,請閱讀有關(guān)更新Gradle的部分。

  • SDK生成工具28.0.3或更高版本。

新特性

  • 新的lint-check依賴配置:lint checks的行為已經(jīng)改變,引入了一個新的依賴配置lintpublish,可以讓您更好地控制哪些lint檢查打包在Android庫中。

  • lint checks:這是一個現(xiàn)有的配置,應(yīng)該用于只在本地構(gòu)建項目時運行的lint檢查。如果以前使用lint checks依賴項配置在已發(fā)布的AAR中包含lint檢查,則需要將這些依賴項遷移到使用下面描述的新lintpublish配置。

  • lintpublish:在庫項目中使用這個新的配置來進行要包含在已發(fā)布的AAR中的lint檢查,如下所示。這意味著使用庫的項目也會應(yīng)用這些lint檢查。

以下代碼示例在本地Android庫項目中使用兩種依賴項配置。

dependencies {
// Executes lint checks from the ':lint' project at build time.
lintChecks project(':lint')
// Packages lint checks from the ':lintpublish' in the published AAR.
lintPublish project(':lintpublish')
}

  • 一般來說,打包和簽名任務(wù)應(yīng)該看到總體構(gòu)建速度的提高。如果您注意到與這些任務(wù)相關(guān)的性能回歸,請報告一個bug。

行為改變

  • Android Instant Apps功能插件拒絕警告:如果您仍在使用com.android.feature插件構(gòu)建即時應(yīng)用程序,android Gradle插件3.4.0將向您發(fā)出拒絕警告。為了確保您仍然可以在插件的未來版本上構(gòu)建即時應(yīng)用程序,請將即時應(yīng)用程序遷移到使用動態(tài)功能插件,該插件還允許您從單個Android應(yīng)用程序包發(fā)布已安裝和即時應(yīng)用程序體驗。

  • 默認(rèn)情況下啟用R8: R8集成了脫糖、收縮、混淆、優(yōu)化和去索引等所有功能,從而顯著提高了構(gòu)建性能。R8是在Android Gradle Plugin 3.3.0中引入的,現(xiàn)在使用Plugin 3.4.0和更高版本的應(yīng)用程序和Android庫項目都默認(rèn)啟用了R8。

下圖提供了R8引入之前編譯過程的高級概述。

image.png

現(xiàn)在,有了R8,脫糖(desugaring)、收縮、混淆、優(yōu)化和dexing(D8)都是一步完成的,如下圖所示。

image.png

請記住,R8是為配合您現(xiàn)有的Proguard規(guī)則而設(shè)計的,因此您可能不需要采取任何措施來從R8中獲益。但是,由于它與專為Android項目設(shè)計的Proguard是不同的技術(shù),因此縮小和優(yōu)化可能會導(dǎo)致刪除Proguard可能沒有的代碼。因此,在這種不太可能的情況下,您可能需要添加額外的規(guī)則來將代碼保存在構(gòu)建輸出中。

如果您在使用R8時遇到問題,請閱讀R8兼容性常見問題解答以檢查是否有解決方案。如果沒有記錄解決方案,請報告錯誤。通過向項目的gradle.properties文件中添加以下行之一,可以禁用r8:

Disables R8 for Android Library modules only.

android.enableR8.libraries = false

Disables R8 for all modules.

android.enableR8 = false

  • 不推薦使用ndkcompile:如果嘗試使用ndkbuild編譯本機庫,則會出現(xiàn)生成錯誤。您應(yīng)該使用CMake或NDK構(gòu)建來將C和C++代碼添加到項目中。

已知問題

當(dāng)前未強制正確使用唯一的包名稱,但對插件的后續(xù)版本將更加嚴(yán)格。在Android Gradle插件3.4.0版上,您可以選擇通過在gradle.properties文件中添加下面的行來檢查您的項目是否聲明了可接受的包名稱。
android.uniquePackageNames = true

再來看Android Studio IDE的新特性

配置窗口 Project Structure

快捷鍵呼出(Ctrl+Shift+Alt+S)

Project Structure.png

配置Variables

image.png
  • Quickly view and edit build variables that already exist in your project’s Gradle build scripts.

  • Add new build variables at a project- or module-level directly from the PSD.

配置Modules

配置應(yīng)用于現(xiàn)有模塊中所有生成變量的屬性,或從模塊部分向項目添加新模塊。例如,您可以在這里配置defaultconfig屬性或管理簽名配置。

配置Dependencies

通過以下步驟,檢查并可視化項目的依賴關(guān)系圖中的每個依賴關(guān)系(在項目同步期間由Gradle解決):

  1. 在PSD的左窗格中,選擇依賴項

  2. 模塊窗格中,選擇要檢查已解析依賴項的模塊。

  3. 在PSD的右側(cè),打開已解析依賴項窗格,如下所示。

image.png

您還可以通過首先從PSD的Dependencies部分選擇一個模塊,單擊Declared Dependencies部分中的(+)按鈕,然后選擇要添加的依賴項類型,來快速搜索并向項目添加依賴項。

根據(jù)您選擇的依賴項類型,您應(yīng)該看到一個與下面類似的對話框,幫助您將依賴項添加到模塊中。

image.png

配置 Variants

在PSD的這一部分中,為項目中的每個模塊創(chuàng)建和配置構(gòu)建變體和產(chǎn)品風(fēng)格。您可以添加清單占位符、添加Proguard文件和分配簽名密鑰等。

image.png
  • 快速查看和編輯項目的漸變構(gòu)建腳本中已經(jīng)存在的構(gòu)建變量。

  • 直接從PSD在項目或模塊級別添加新的構(gòu)建變量。

Modules

配置應(yīng)用于現(xiàn)有模塊中所有生成變量的屬性,或從模塊部分向項目添加新模塊。例如,您可以在這里配置defaultconfig屬性或管理簽名配置。

Dependencies

通過以下步驟,檢查并可視化項目的依賴關(guān)系圖中的每個依賴關(guān)系(在項目同步期間由Gradle解決):

  1. 在PSD的左窗格中,選擇Dependencies。

  2. 在模塊窗格中,選擇要檢查已解析依賴項的模塊。

  3. 在PSD的右側(cè),打開“已解析的依賴項”窗格,如下所示。

image.png

您還可以通過首先從PSD的Dependencies部分選擇一個模塊,單擊Declared Dependencies部分中的(+)按鈕,然后選擇要添加的依賴項類型,來快速搜索并向項目添加依賴項。

根據(jù)您選擇的依賴項類型,您應(yīng)該看到一個與下面類似的對話框,幫助您將依賴項添加到模塊中。

image.png

Variants

在PSD的這一部分中,為項目中的每個模塊創(chuàng)建和配置構(gòu)建變體和產(chǎn)品風(fēng)格。您可以添加清單占位符、添加Proguard文件和分配簽名密鑰等。

image.png

Suggestions

請參見建議部分中的項目依賴項和構(gòu)建變量的建議更新,如下所示。

image.png

新的資源管理器New Resource Manager

資源管理器是一個新的工具窗口,用于導(dǎo)入、創(chuàng)建、管理和使用應(yīng)用程序中的資源。通過從菜單欄中選擇“視圖>工具窗口>資源管理器”,可以打開工具窗口。資源管理器允許您執(zhí)行以下操作:

image.png
  • 可視化資源:您可以預(yù)覽繪圖、顏色和布局,以快速找到所需的資源。

  • 批量導(dǎo)入:通過將多個可提取資產(chǎn)拖放到“資源管理器”工具窗口或使用導(dǎo)入可提取資產(chǎn)向?qū)?,可以一次?dǎo)入多個可提取資產(chǎn)。要訪問向?qū)?,請選擇工具窗口左上角的(+)按鈕,然后從下拉菜單中選擇“導(dǎo)入繪圖”。

  • 將SVG轉(zhuǎn)換為VectorDrawable對象:可以使用導(dǎo)入Drawables向?qū)VG圖像轉(zhuǎn)換為VectorDrawable對象。

  • 拖放資源:從“資源管理器”工具窗口中,可以將可繪圖文件拖放到布局編輯器的設(shè)計視圖和XML視圖上。

  • 查看替代版本:現(xiàn)在可以通過雙擊工具窗口中的資源來查看資源的替代版本。此視圖顯示您創(chuàng)建的不同版本以及包含的限定符。

  • 平鋪和列表視圖:您可以更改工具窗口中的視圖,以不同的方式可視化資源。

To learn more, read the guide about how to Manage app resources.

分析和調(diào)試APK時檢查生成ID

當(dāng)您為APK內(nèi)的.so共享庫提供調(diào)試符號文件時,Android Studio將驗證所提供符號文件的生成ID是否與APK內(nèi)的.so庫的生成ID匹配。

如果使用構(gòu)建ID在APK中構(gòu)建本機庫,android studio將檢查符號文件中的構(gòu)建ID是否與本機庫中的構(gòu)建ID匹配,如果不匹配,則拒絕符號文件。如果沒有使用生成ID生成,則提供不正確的符號文件可能會導(dǎo)致調(diào)試問題。

R8 enabled by default

R8集成了脫糖(desugaring)、收縮、混淆、優(yōu)化和dexing,一步到位,顯著提高了構(gòu)建性能。R8是在Android Gradle Plugin 3.3.0中引入的,現(xiàn)在使用Plugin 3.4.0和更高版本的應(yīng)用程序和Android庫項目都默認(rèn)啟用了R8。

下圖提供了R8引入之前編譯過程的高級概述。

image.png

現(xiàn)在,有了R8,脫糖(desugaring)、收縮、混淆、優(yōu)化和dexing(D8)都是一步完成的,如下圖所示。

image.png

請記住,R8是為配合您現(xiàn)有的Proguard規(guī)則而設(shè)計的,因此您可能不需要采取任何措施來從R8中獲益。但是,由于它與專為Android項目設(shè)計的Proguard是不同的技術(shù),因此縮小和優(yōu)化可能會導(dǎo)致刪除Proguard可能沒有的代碼。因此,在這種不太可能的情況下,您可能需要添加額外的規(guī)則來將代碼保存在構(gòu)建輸出中。

如果您在使用R8時遇到問題,請閱讀R8兼容性常見問題解答以檢查是否有解決方案。如果沒有記錄解決方案,請報告錯誤。通過向項目的gradle.properties文件中添加以下行之一,可以禁用r8:

Disables R8 for Android Library modules only.

android.enableR8.libraries = false

Disables R8 for all modules.

android.enableR8 = false

導(dǎo)航編輯器現(xiàn)在支持所有參數(shù)類型

導(dǎo)航組件支持的所有參數(shù)類型現(xiàn)在都支持在導(dǎo)航編輯器中。有關(guān)受支持類型的詳細(xì)信息,請參閱在目標(biāo)之間傳遞數(shù)據(jù)。

布局編輯器改進

布局編輯器中的“屬性”窗格已簡化為一個頁面,其中包含可展開以顯示可配置屬性的部分?!皩傩浴贝案襁€包括以下更新:

  • 新的已聲明屬性部分列出布局文件指定的屬性,并允許您快速添加新屬性。

  • 當(dāng)屬性的值是資源引用時,“屬性”窗格現(xiàn)在還具有每個屬性旁邊的指示器,否則為空。

  • 出現(xiàn)錯誤或警告的屬性現(xiàn)在突出顯示。紅色突出顯示表示錯誤(例如,使用無效布局值時),橙色突出顯示表示警告(例如,使用硬編碼值時)。

快速導(dǎo)入依賴關(guān)系的新intention操作

如果您開始在代碼中使用某些jetpack和firebase類,一個新的意圖操作建議將所需的Gradle庫依賴項添加到您的項目中,如果您還沒有這樣做的話。例如,如果您引用WorkManager類而不首先導(dǎo)入所需的android.arch.work:Work運行時依賴項,那么一個意圖操作可以讓您在一次單擊中輕松做到這一點,如下所示。

特別是,因為jetpack將支持庫重新打包為更易于管理和更新的離散包,所以這個意圖操作可以幫助您快速地只添加您想要使用的jetpack組件所需的依賴項。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容