Android 进阶——最大程度提升你的Android Studio 中Gradle编译速度完全攻略

Android 进阶——最大程度提升你的Android Studio 中Gradle编译速度完全攻略,第1张

概述文章大纲一、.gradle、.gradle\caches及.m2目录1.gradle和.gradle\caches目录1.1、解析xxx\gradle\wrapper\gradle-wrapper.properties文件下载Gradle1.2、解析根Project和Module目录下build.gradle脚本加载第三方库2、.m2二、AndroidStudio使用Gradle编译提升攻略1

文章大纲一、.gradle 、.gradle\caches及 .m2 目录1 .gradle和.gradle\caches目录1.1、解析xxx\gradle\wrapper\gradle-wrapper.properties文件下载Gradle1.2、解析根Project和Module目录下build.gradle脚本加载第三方库2、 .m2二、Android Studio 使用Gradle 编译提升攻略1、使用本地离线Gradle压缩包2、利用本地搭建的maven 仓库3、利用国内maven仓库镜像地址替代原始仓库
由于种种原因在内地使用jcenter、mavenCentral及Google等远程仓库时(毕竟都是国外的服务器),Gradle Sync会很慢,Google仓库甚至需要科学上网才能访问,这是造成Gradle 编译的速度缓慢的重要原因之一,当然如果cpu 不给力,编译的项目依赖库关系复杂也是原因之一。

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置。

一、.gradle 、.gradle\caches及 .m2 目录

默认情况windows 下 .gradle 和 .m2 目录的路径存放在C:\Users\xxxx下,其中**.gradle 作为Gradle的Home 目录存放着所有使用Gradle下载的库文件和jar包**,而**.m2 目录则是存放着本地Maven仓库中下载的库文件**

1 .gradle和.gradle\caches目录1.1、解析xxx\gradle\wrapper\gradle-wrapper.propertIEs文件下载Gradle

这个propertIEs文件里配置了Gradle :

distributionBase——Gradle 的HOME目录distributionPathzipStoreBase——Gradle的缓存HOME目录zipStorePath ——Gradle 的缓存路径distributionUrl——指定AndroID Studio 加载Gradle 的源地址。
#Sun Apr 26 22:25:12 CST 2020distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distszipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/distsdistributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

AndroID Studio 编译时会自动解析xxx\gradle\wrapper\gradle-wrapper.propertIEs文件,并从distributionUrl 节点中拿到Gradle 插件的Uri,如果配置的是http(s),则自动到对应的Uri中下载并缓存到本地的对应的 .gradle目录下,路径Uri里常见的形式有:

https://services.gradle.org/distributions/gradle-5.1.1-all.zip 首次从网络链接去下载Gradlehttp://services.gradle.org/distributions/gradle-5.1.1-all.zip 首次从网络链接去下载Gradlefile:/// D://AndroID//Gradle//gradle-5.1.1-all.zip 从本地对应路径下去获取Gradle

首次使用新版本的Gradle时,无论是本地解压还是网络下载成功之后,都会缓存到.gradle\wrapper\dists下,再次使用相同版本时就会直接先从.gradle\wrapper\dists去加载

注意:Gradle 自身的版本和AndroID Gradle Tools 插件的版本配对关系。

1.2、解析根Project和Module目录下build.gradle脚本加载第三方库

默认的根Project目录下的build.gradle,有两个作用:下载Google 开发的AndroID Gradle插件和指定Module加载第三库时查找的maven仓库。

buildscript {    repositorIEs {        Google()        jcenter()    }    dependencIEs {        classpath 'com.androID.tools.build:gradle:3.4.0'    }}//配置给该Project下其他所有Module 引入依赖库时所用的源仓库allprojects {    repositorIEs {        Google()        jcenter()    }}

AndroID Studio 编译时自动解析build.gradle 构建脚本,首先解析Project 根目录下的build.gradle文件,首先是解析buildscript 节点,到repositorIEs 配置的maven 仓库中对应的的路径(由dependencIEs 节点下的classpath属性)去下载对应的AndroID gradle插件和第三方的库,以上文件的含义是首先去Google这个maven库下去加载“com.androID.tools.build:gradle” 版本为3.4.0 的AndroID Gradle插件,如果Google 仓库找不到则继续查找jcenter 仓库,找到则缓存到本地目录下;另外一个allprojects 节点则是对应Moudle目录下需要引入第三方库时候查找的maven库,加载完毕之后也会缓存到.gradle/caches对应目录下:


当你在**Module下的build.gradle脚本里

dependencIEs {    implementation filetree(dir: 'libs', include: ['*.jar'])    implementation 'androIDx.appcompat:appcompat:'+rootProject.ext.androIDxAppcompat    implementation 'com.alibaba:fastJson:1.1.54.androID'}

引入第三库成功之后就会被缓存到xxx.gradle\caches\modules-2\files-2.1对应目录下:


另外引入成功之后也会在AndroID Studio 的项目下External librarIEs显示。

2、 .m2

.m2 目录则是本地Maven仓库的目录,更多请参见开发 Gradle 插件系列文章。

二、AndroID Studio 使用Gradle 编译提升攻略

此处的措施不包含通过优化AndroID Studio 的配置参数进行优化。

1、使用本地离线Gradle压缩包

首先到 Gradle 官网下载对应版本的完整压缩包文件 ,

下载压缩包之后不需要解压直接存放到本地计算机的路径就好,比如存放到计算机下的D:\AndroID\Gradle\gradle-5.1.1-all.zip(windows上的路径)配置时需要进行格式转换

...distributionUrl=file:///D://AndroID//Gradle//gradle-5.1.1-all.zip

在最新版的AndroID Studio 3.6.x 时,在Gradle 栏目下有个Gradle 开关,切换为offline模式时,意味着所有库均使用本地缓存模式,若没有缓存会直接报错,而不是所谓的单纯设置Gradle的离线模式,第一次依赖时需要切换为在线模式,否则本地缓存没有,也不能去对应的地址下载,编译时找不到依赖库就会报错。

AndroID Studio 3.6 的Gradle 开关或许以上理解不够准确,但应该也不会差得太远,仅供参考。

2、利用本地搭建的maven 仓库

可以利用Nexus或者Artifactory 搭建自己的maven仓库,替代原始仓库jcenter()、mavenCentral()及Google()等

Artifactory 的详细使用见下文。

buildscript {    repositorIEs {         maven{            url 'http://localhost:8081/artifactory/List/androID-basic-group/'         }        //如果你本地maven仓库 已经拥有了足够的库,那就不需要额外配置了,因为加载的顺序是从上到下的        Google()        jcenter()    }}    allprojects {    repositorIEs {         maven{            url 'http://localhost:8081/artifactory/List/androID-basic-group/'        }        Google()        jcenter()    }}
3、利用国内maven仓库镜像地址替代原始仓库

优先使用本地maven仓库,再使用 阿里云仓库服务 的代理镜像库作为下载源。

buildscript {    repositorIEs {        maven{        	// 替代 Google()            url 'http://maven.aliyun.com/repository/Google'        }        maven{        	//替代 jcenter()            url 'http://maven.aliyun.com/repository/jcenter'        }        //替代public 库————jcenter和mavenCentral的聚合仓库        maven {url 'http://maven.aliyun.com/nexus/content/groups/public/'}    }}allprojects {    repositorIEs {        maven{            url 'http://maven.aliyun.com/repository/Google'        }        maven{            url 'http://maven.aliyun.com/repository/jcenter'        }        maven {url 'http://maven.aliyun.com/nexus/content/groups/public/'}    }}

如果你的本地maven仓库里面保存的库资源不够充分,也可以混合maven仓库镜像库使用。

总结

以上是内存溢出为你收集整理的Android 进阶——最大程度提升你的Android Studio 中Gradle编译速度完全攻略全部内容,希望文章能够帮你解决Android 进阶——最大程度提升你的Android Studio 中Gradle编译速度完全攻略所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1060879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存