由于种种原因在内地使用jcenter、mavenCentral及google等远程仓库时(毕竟都是国外的服务器),Gradle Sync会很慢,google仓库甚至需要科学上网才能访问,这是造成Gradle 编译的速度缓慢的重要原因之一,当然如果CPU 不给力,编译的项目依赖库关系复杂也是原因之一。
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置。 默认情况Windows 下 .gradle 和 .m2 目录的路径存放在C:Usersxxxx下,其中**.gradle 作为Gradle的Home 目录存放着所有使用Gradle下载的库文件和jar包**,而**.m2 目录则是存放着本地Maven仓库中下载的库文件** 这个properties文件里配置了Gradle : Android Studio 编译时会自动解析xxxgradlewrappergradle-wrapper.properties文件,并从distributionUrl 节点中拿到Gradle 插件的Uri,如果配置的是http(s),则自动到对应的Uri中下载并缓存到本地的对应的 .gradle目录下,路径Uri里常见的形式有: 首次使用新版本的Gradle时,无论是本地解压还是网络下载成功之后,都会缓存到.gradlewrapperdists下,再次使用相同版本时就会直接先从.gradlewrapperdists去加载 注意:Gradle 自身的版本和Android Gradle Tools 插件的版本配对关系。 默认的根Project目录下的build.gradle,有两个作用:下载Google 开发的Android Gradle插件和指定Module加载第三库时查找的maven仓库。 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对应目录下: 引入第三库成功之后就会被缓存到xxx.gradlecachesmodules-2files-2.1对应目录下: .m2 目录则是本地Maven仓库的目录,更多请参见开发 Gradle 插件系列文章。 此处的措施不包含通过优化Android Studio 的配置参数进行优化。 首先到 Gradle 官网下载对应版本的完整压缩包文件 , 下载压缩包之后不需要解压直接存放到本地计算机的路径就好,比如存放到计算机下的D:AndroidGradlegradle-5.1.1-all.zip(Windows上的路径)配置时需要进行格式转换 在最新版的Android Studio 3.6.x 时,在Gradle 栏目下有个Gradle 开关,切换为offline模式时,意味着所有库均使用本地缓存模式,若没有缓存会直接报错,而不是所谓的单纯设置Gradle的离线模式,第一次依赖时需要切换为在线模式,否则本地缓存没有,也不能去对应的地址下载,编译时找不到依赖库就会报错。 Android Studio 3.6 的Gradle 开关或许以上理解不够准确,但应该也不会差得太远,仅供参考。 可以利用Nexus或者Artifactory 搭建自己的maven仓库,替代原始仓库jcenter()、mavenCentral()及google()等 Artifactory 的详细使用见下文。 优先使用本地maven仓库,再使用 阿里云仓库服务 的代理镜像库作为下载源。 如果你的本地maven仓库里面保存的库资源不够充分,也可以混合maven仓库镜像库使用。文章大纲
一、.gradle 、.gradlecaches及 .m2 目录
1 .gradle和.gradlecaches目录
1.1、解析xxxgradlewrappergradle-wrapper.properties文件下载Gradle
#Sun Apr 26 22:25:12 CST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https://services.gradle.org/distributions/gradle-5.1.1-all.zip
1.2、解析根Project和Module目录下build.gradle脚本加载第三方库
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.4.0' } } //配置给该Project下其他所有Module 引入依赖库时所用的源仓库 allprojects { repositories { google() jcenter() } }
当你在**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' }
另外引入成功之后也会在Android Studio 的项目下External Libraries显示。2、 .m2
二、Android Studio 使用Gradle 编译提升攻略
1、使用本地离线Gradle压缩包
... distributionUrl=file:///D://Android//Gradle//gradle-5.1.1-all.zip
2、利用本地搭建的maven 仓库
buildscript { repositories { maven{ url 'https://localhost:8081/artifactory/list/android-basic-group/' } //如果你本地maven仓库 已经拥有了足够的库,那就不需要额外配置了,因为加载的顺序是从上到下的 google() jcenter() } } allprojects { repositories { maven{ url 'https://localhost:8081/artifactory/list/android-basic-group/' } google() jcenter() } }
3、利用国内maven仓库镜像地址替代原始仓库
buildscript { repositories { maven{ // 替代 google() url 'https://maven.aliyun.com/repository/google' } maven{ //替代 jcenter() url 'https://maven.aliyun.com/repository/jcenter' } //替代public 库————jcenter和mavenCentral的聚合仓库 maven {url 'https://maven.aliyun.com/nexus/content/groups/public/'} } } allprojects { repositories { maven{ url 'https://maven.aliyun.com/repository/google' } maven{ url 'https://maven.aliyun.com/repository/jcenter' } maven {url 'https://maven.aliyun.com/nexus/content/groups/public/'} } }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算