[譯]讓咱們加快你的Gradle構建

alt

翻譯說明:

原標題: Let’s Speed Up your Gradle Build -

原文地址: medium.com/mindorks

原文做者: Gaurav Bansal

若是你是 Android 開發人員,那麼你將花費大量時間查看屏幕並等待 gradle 構建完成。在新的 Android Studio 中,它比之前的版本要快得多,但仍然有不少空間能夠解決它因此讓咱們快速經過在 Android Studio 中作一些快速修復。在 Google I/O 2017 Google 團隊專一於此,這篇文章是從那裏提取的。android

  1. 老是使用最新的 ** Android Gradle Plugin** -Android 工做室逐步提升新 gradle 版本的性能,所以建議使用最新版本。目前最新的 gradle 插件是 3.1.2;在這個版本中,studio 已將其編譯器 DEX 更改成 D8。默認狀況下,Android Studio 如今使用名爲 D8 的新 DEX 編譯器。默認狀況下,Android Studio 如今使用 D8(你也能夠禁用它)。DEX 編譯是將 .class 字節碼轉換 .dex 爲 Android Runtime(或 Dalvik,適用於舊版 Android)的字節碼 的過程 。與以前的編譯器(稱爲 DX)相比,D8 編譯速度更快,輸出更小的 DEX 文件,同時具備相同或更好的應用程序運行時性能。這個較新的插件版本將致使高達25%的構建時間縮短。緩存

  2. 若是您使用命令行進行構建,請避免遺留 Multidex - 若是咱們的應用程序超過64k方法參考限制,咱們必須使用 Multidex。當在 gradle 文件中咱們有 minSdkVersion <21 時,咱們使用 Legacy Multidex 構建速度要慢不少。若是您正在使用 Android studio > 2.3 版本並使用運行按鈕進行構建,那麼若是鏈接的設備版本大於21,它將自動使用本機 multidex,若是版本是 <21,則將自動使用遺留。若是您使用命令行進行構建而後在開發風格內設置 minSdkVersion 21.這將致使最多減小10%的構建時間。bash

  3. Disable Multiple apk for development- 咱們可使用拆分塊爲特定設備配置建立多個 apk,它能夠減小發布版本中的應用程序大小,但在開發中不須要。經過禁用它咱們能夠進一步減小10%的構建時間。讓咱們看看如何作到這一點。app

alt

android {
    if(project.hasProperty('devBuild')){
        // 開發中禁用 Split apk
        splits.abi.enable = false
        splits.density.enable =false
    }
}
複製代碼
  1. 包括最小資源 -若是應用程序有多種語言支持和多屏幕支持,那麼在開發風味中添加最少的資源
productFlavors {
    development {
        minSdkVersion 21
        resConfigs ("en","xxhdpi")
    }
}
複製代碼
  1. 禁用 PNG Crunching - 默認狀況下,Android 構建工具執行 PNG 大小優化,這對於發佈構建頗有用,可是對於開發它會增長構建時間。要麼使用 WEBP 而不是 PNG,要麼在開發風格中禁用它。
android {
    if(project.hasProperty('devBuild')){
        // 開發中禁用 Split apk
        splits.abi.enable = false
        splits.density.enable =false
        // 禁用 PNG 運算
        aaptOptions.cruncherEnabled = false
    }
}
複製代碼
  1. 即時運行 - 即時運行會產生不少問題,直到 Android Studio 3.0,如今它穩定而且在設備上工做 sdkVersion≥21。它也會應用更改,直接反映更改直接進入實時進程,而不是從新啓動應用程序。jvm

  2. 正確使用 Crashlytics -默認狀況下,crashlytics 始終在每一個構建時生成惟一的構建 ID。您能夠爲調試環境禁用 crashlytics,也能夠爲開發構建禁用此構建 ID。ide

apply plugin: 'io.fabric'
android {
    buildTypes {
        debug {
            // 禁用 Crashlytics 構建 ID
            ext.alwaysUpdateBuildId = false
        }
    }
}
複製代碼
  1. 不要使用動態依賴版本 - 每次都會致使 check studio 是否有新的庫版本。這將增長構建時間,避免這種狀況
    alt
  2. 在 gradle.properties 文件中,根據應用程序要求更改成 JVM 分配的內存。更改 org.gradle.jvmargs = -Xmx1536m(默認值)。 在 gradle 文件中經過更改 maxheap 大小咱們能夠增長 dex 內存可是在 gradle 插件2.1 dex 正在進行中。所以,更改此參數如今不起做用。還要更改如下內容以減小構建時間
#配置後,Gradle將以孵化並行模式運行。
#此選項僅應與分離的項目一塊兒使用。
org.gradle.parallel = true
#設置爲true時,Gradle守護程序用於運行構建。對於本地開發者構建,這是咱們最喜歡的屬性 
#開發人員環境針對速度和反饋進行了優化,所以咱們幾乎老是使用守護程序運行Gradle做業。
org.gradle.daemon = true
複製代碼
  1. 啓用 gradle 緩存 - Caching gradle 將緩存來自任何位置的任何先前構建的任務輸出。在 gradle.properties 文件中設置 org.gradle.caching = true 以啓用緩存。模塊化

  2. 多模塊項目 - 模塊化還經過並行構建模塊來增長 gradle 構建時間。工具

經過使用全部這些技術,您能夠在此處改進gradle構建時間post

alt

愉快的寫代碼!!! 另外,檢查Android P中的最新Android運行時改進以及Android Studio中的編譯器改進。性能

歡迎關注 Kotlin 中文社區!

中文官網:www.kotlincn.net/

中文官方博客:www.kotliner.cn/

公衆號:Kotlin

知乎專欄:Kotlin

CSDN:Kotlin中文社區

掘金:Kotlin中文社區

簡書:Kotlin中文社區

相關文章
相關標籤/搜索