vs怎么更改编译的堆空间_再见吧 buildSrc, 拥抱 Composing builds 提升 Android 编译速度...
前言
長(zhǎng)期以來(lái)困擾我們的一個(gè)問(wèn)題就是構(gòu)建速度,AndroidStudio 的構(gòu)建速度嚴(yán)重影響 Android 開(kāi)發(fā)者的工作效率,尤其是更新一個(gè)版本號(hào),導(dǎo)致整個(gè)項(xiàng)目重新構(gòu)建,在網(wǎng)絡(luò)慢的情況下,這是無(wú)法忍受的。
buildSrc 這種方式,在最近幾年是非常流行的,因?yàn)樗幸韵聝?yōu)點(diǎn):
- 共享 buildSrc 庫(kù)工件的引用,全局只有一個(gè)地方可以修改它
- 支持 AndroidStudio 自動(dòng)補(bǔ)全
- 支持 AndroidStudio 單擊跳轉(zhuǎn)
有優(yōu)點(diǎn)的同時(shí)也有缺點(diǎn),來(lái)看一下Gradle 文檔
A change in buildSrc causes the whole project to become out-of-date. Thus, when making small incremental changes, the --no-rebuild command-line option is often helpful to get faster feedback. Remember to run a full build regularly or at least when you’re done, though.buildSrc的更改會(huì)導(dǎo)致整個(gè)項(xiàng)目過(guò)時(shí),因此,在進(jìn)行小的增量更改時(shí),-- --no-rebuild命令行選項(xiàng)通常有助于獲得更快的反饋。不過(guò),請(qǐng)記住要定期或至少在完成后運(yùn)行完整版本。
匯總一句話就是說(shuō),buildSrc 依賴更新將重新構(gòu)建整個(gè)項(xiàng)目,那么有沒(méi)有一種方法支持自動(dòng)補(bǔ)全和單擊跳轉(zhuǎn),有不用重新構(gòu)建整個(gè)項(xiàng)目,Composing builds 就可以實(shí)現(xiàn),接下來(lái)我們來(lái)演示一下 buildSrc 和 Composing builds 它們的 build 的時(shí)間
通過(guò)這篇文章你將學(xué)習(xí)到以下內(nèi)容,將在文末總結(jié)部分會(huì)給出相應(yīng)的答案
- 什么是 buildSrc?
- 什么是 Composing builds?
- 如何使用 Composing builds 和 buildSrc
- buildSrc 和 Composing builds 優(yōu)勢(shì)劣勢(shì)對(duì)比?
- Composing builds 編譯速度怎么樣?
- buildSrc 如何遷移到 Composing builds?
- 管理 Gradle 依賴都有那幾種方式?以及效率怎么樣?
這篇文章涉及很多重要的知識(shí)點(diǎn),請(qǐng)耐心讀下去,我相信應(yīng)該會(huì)給大家?guī)?lái)很多不一樣的東西。
Composing builds 和 buildSrc 對(duì)比
接下來(lái)我們來(lái)演示一下 buildSrc 和 Composing builds 它們的優(yōu)勢(shì)劣勢(shì)對(duì)比,在分析之前,先來(lái)了解一下基本概念
什么是 buildSrc
摘自 Gradle 文檔:當(dāng)運(yùn)行 Gradle 時(shí)會(huì)檢查項(xiàng)目中是否存在一個(gè)名為 buildSrc 的目錄。然后 Gradle 會(huì)自動(dòng)編譯并測(cè)試這段代碼,并將其放入構(gòu)建腳本的類路徑中, 對(duì)于多項(xiàng)目構(gòu)建,只能有一個(gè) buildSrc 目錄,該目錄必須位于根項(xiàng)目目錄中, buildSrc 是 Gradle 項(xiàng)目根目錄下的一個(gè)目錄,它可以包含我們的構(gòu)建邏輯,與腳本插件相比,buildSrc 應(yīng)該是首選,因?yàn)樗子诰S護(hù)、重構(gòu)和測(cè)試代碼
什么是 Composing builds
摘自 Gradle 文檔:復(fù)合構(gòu)建只是包含其他構(gòu)建的構(gòu)建. 在許多方面,復(fù)合構(gòu)建類似于 Gradle 多項(xiàng)目構(gòu)建,不同之處在于,它包括完整的 builds ,而不是包含單個(gè) projects
- 組合通常獨(dú)立開(kāi)發(fā)的構(gòu)建,例如,在應(yīng)用程序使用的庫(kù)中嘗試錯(cuò)誤修復(fù)時(shí)
- 將大型的多項(xiàng)目構(gòu)建分解為更小,更孤立的塊,可以根據(jù)需要獨(dú)立或一起工作
buildSrc vs Composing builds
為了正確對(duì)比這兩種方式,新建了兩個(gè)空的項(xiàng)目分別是 Project-buildSrc 和 Project-ComposingBuild,這兩個(gè)項(xiàng)目引用的依賴都是一樣的,Project-buildSrc 包含 buildSrc,Project-ComposingBuild 包含 Composing builds。
Project-buildSrc 和 Project-ComposingBuild 它們的結(jié)構(gòu)都差不多,接下來(lái)我們來(lái)看一下,編譯速度 和 使用上有什么不同。
編譯速度
Project-buildSrc 和 Project-ComposingBuild 這兩個(gè)項(xiàng)目,它們的 androidx.appcompat:appcompat 的版本是 1.0.2,現(xiàn)在我們從 1.0.2 升級(jí)到 1.1.0 來(lái)看一下它們 Build 的時(shí)間。
- Project-buildSrc:修改了版本號(hào) 1.0.2 -> 1.1.0 重新 Build 用時(shí) 37s
- Project-ComposingBuild:修改了版本號(hào) 1.0.2 -> 1.1.0 重新 Build 用時(shí) 8s
當(dāng)修改了版本號(hào),Project-buildSrc 項(xiàng)目 Build 的時(shí)間幾乎是 Project-ComposingBuild 項(xiàng)目的 4.6 倍( PS: 每個(gè)人的環(huán)境不同,時(shí)間上會(huì)有差異,但是 Project-buildSrc 的時(shí)間總是大于 Project-ComposingBuild )
在更大的項(xiàng)目中,網(wǎng)絡(luò)慢的情況下,這種差異會(huì)更加明顯,幾分鐘的構(gòu)建都是常事,在 buildSrc 中做微小的更改,可能需要花很長(zhǎng)時(shí)間構(gòu)建,等待團(tuán)隊(duì)其他成員在他們提取更改之后,都將導(dǎo)致項(xiàng)目重新構(gòu)建,這個(gè)代價(jià)是非常昂貴的。
它們?cè)谑褂蒙嫌惺裁床煌?/h2>
Project-buildSrc
- 在項(xiàng)目根目錄下新建一個(gè)名為 buildSrc 的文件夾( 名字必須是 buildSrc,因?yàn)檫\(yùn)行 Gradle 時(shí)會(huì)檢查項(xiàng)目中是否存在一個(gè)名為 buildSrc 的目錄 )
- 在 buildSrc 文件夾里創(chuàng)建名為 build.gradle.kts 的文件,添加以下內(nèi)容
- 在 buildSrc/src/main/java/包名/ 目錄下新建 Deps.kt 文件,添加以下內(nèi)容
- 重啟你的 Android Studio,項(xiàng)目里就會(huì)多出一個(gè)名為 buildSrc 的 module,實(shí)現(xiàn)上面演示的效果
Project-ComposingBuild
- 新建的 module 名稱 versionPlugin
- 在 versionPlugin 文件夾下的 build.gradle 文件內(nèi),添加以下內(nèi)容
- 在 versionPlugin/src/main/java/包名/ 目錄下新建 Deps.kt 文件,添加以下內(nèi)容
- 在 settings.gradle 文件內(nèi)添加 includeBuild 'versionPlugin' 重啟你的 Android Studio
- 在 app 模塊 build.gradle 文件內(nèi)添加以下內(nèi)容,就可以實(shí)現(xiàn)上面演示的效果
Project-ComposingBuild 比 Project-buildSrc 多了兩步操作需要在 settings.gradle 和 build.gradle 引入插件,兩者在使用都是差不多的
如何快速使用 buildSrc
- 訪問(wèn) ComposingBuilds-vs-buildSrc 拷貝 buildSrc 文件夾到你的項(xiàng)目的根目錄
- 重啟你的 Android Studio,項(xiàng)目里就會(huì)多出一個(gè)名為 buildSrc 的 module
如何快速使用 Composing builds
- 訪問(wèn) ComposingBuilds-vs-buildSrc 拷貝 versionPlugin 文件夾到你的項(xiàng)目的根目錄
- 按照上面的配置方式,分配在 settings.gradle 和 app 模塊的 build.gradle 引用插件即可
總結(jié)
總共從以下幾個(gè)方面對(duì)比了 Composing builds 和 buildSrc
- 目錄結(jié)構(gòu):它們的基本目錄結(jié)構(gòu)是相同的,可以根據(jù)自己的項(xiàng)目進(jìn)行不同的擴(kuò)展
- 編譯速度:當(dāng)修改了版本號(hào),Project-buildSrc 項(xiàng)目 Build 的時(shí)間幾乎是 Project-ComposingBuild 項(xiàng)目的 4.6 倍( PS: 每個(gè)人的環(huán)境不同,時(shí)間上會(huì)有差異,但是 Project-buildSrc 的時(shí)間總是大于 Project-ComposingBuild )
- 使用上的區(qū)別:Composing builds 比 buildSrc 多了兩步操作需要在 settings.gradle 和 build.gradle 引入插件
Project-buildSrc 和 Project-ComposingBuild 相關(guān)代碼已經(jīng)上傳到 GitHub 了:ComposingBuilds-vs-buildSrc
到目前為止大概管理 Gradle 依賴提供了 4 種不同方法:
- 手動(dòng)管理 :在每個(gè) module 中定義插件依賴庫(kù),每次升級(jí)依賴庫(kù)時(shí)都需要手動(dòng)更改(不建議使用)
- 使用 ext 的方式管理插件依賴庫(kù) :這是 Google 推薦管理依賴的方法 Android官方文檔
- Kotlin + buildSrc:自動(dòng)補(bǔ)全和單擊跳轉(zhuǎn),依賴更新時(shí) 將重新 構(gòu)建整個(gè)項(xiàng)目
- Composing builds:自動(dòng)補(bǔ)全和單擊跳轉(zhuǎn),依賴更新時(shí) 不會(huì)重新 構(gòu)建整個(gè)項(xiàng)目
buildSrc 如何遷移到 Composing builds?
如果當(dāng)前項(xiàng)目使用的是 buildSrc 方式,遷移到 Composing builds 很簡(jiǎn)單,需要將 buildSrc 內(nèi)容拷貝的 Composing builds 中,然后刪掉 buildSrc 文件夾就可以即可
作者:HiDhl 來(lái)源:掘金鏈接:https://juejin.im/post/5ed3ef906fb9a047bf7070b6
總結(jié)
以上是生活随笔為你收集整理的vs怎么更改编译的堆空间_再见吧 buildSrc, 拥抱 Composing builds 提升 Android 编译速度...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: eve可以在linux运行吗,ubunt
- 下一篇: php取key的value值,获取数组中