🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
> 本策略针对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