> 本策略針對gradle 2.x版本
> 在Android Studio開發過程中,AS占用內存大,并且sync時間長都給開發者造成了巨大的影響,對此特對優化方式做一下記錄
# 根本原因
> 項目依賴過多,包含過多的重復依賴,每一次進行Sync時,對所有的依賴進行一次預編譯
# 嘗試方案
## 手動下載gradle-xx-all.zip文件
>
## 修改為阿里云鏡像(或其他國內鏡像)
>
## 關閉代理
> https://blog.csdn.net/aurummann/article/details/79453176
## 一些配置
```
org.gradle.jvmargs=-Xmx6144m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -Dorg.gradle.parallel.intra=true
org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.configureondemand=true
android.enableBuildCache=true
```
> https://www.open-open.com/lib/view/open1492482567509.html
## 給dependencies統一指定transitive為false
```
configurations.all {
transitive = false
}
```
>Transitive用于自動處理子依賴項。默認為true,gradle自動添加子依賴項,形成一個多層樹形結構;設置為false,則需要手動添加每個依賴項。
> http://www.paincker.com/gradle-dependencies
## 將gradle升級到3.x版本
> [](https://www.jianshu.com/p/f34c179bc9d0)**建議** 在Google IO 相關話題的中提到了一個建議,在gradle 3.x及以上版本,依賴首先應該設置為implement的,如果沒有錯,那就用implement,如果有錯,那么使用api(即2.x中的compile)指令,這樣會使編譯速度有所增快。
>
> **那為什么要這么做呢?** 答案是: 1\. 加快編譯速度。2\. 隱藏對外不必要的接口。
>
> **為什么能加快編譯速度呢?** 這對于大型項目含有多個Module模塊的, 以上圖為例,比如我們改動 LibraryC 接口的相關代碼,這時候編譯只需要單獨編譯LibraryA模塊就行, 如果使用的是api或者舊時代的compile,由于App Module 也可以訪問到 LibraryC,所以 App Module部分也需要重新編譯。當然這是在全編的情況下。
# 最終結論
- 推薦升級gradle 到3.0版本,默認使用implementation,對于部分用到了間接依賴的庫設置使用 api
- 設置全局transitive = false, 對于部分用到了間接依賴的庫設置transitive = true