Android Studio 编译速度慢,一般来说,原因有下面几个。
Gradle下载慢 依赖库下载慢 依赖库使用"+"(使用最新的),每次都需要去查找新的(尽量不适用这种方式)这里,大部分的库,我们可以通过阿里云代理仓库。
但是,如果有我们自己的私有库或者插件的话。肯定不希望放到阿里云上了。
这个时候,我们就需要建立,我们自己的本地仓库,让私有仓库,依赖阿里云的私有仓库。
依赖关系,如下图
这样,既保证了我们私有库的安全性,又让我们的依赖库也享受到了阿里云代理仓库的便利。
通过Artifactory搭建本地仓库可以参考:架构师教程Artifactory破解步骤。这里就不说明了。
下面,我们主要说明的是本地仓库的配置及在项目中的引用。
一,本地仓库的创建
这里又分为2个部分:
依赖本地的库
比如,Gradle的版本,或者自己写的Gradle插件等等
依赖远程的库
比如,OKHttp,Retrofit等等第三方库
创建虚拟组
这样的话,方便我们的引入。不用每个库都引入进来。
1,创建依赖本地的库
点击左侧的Admin→local,进入Local Repositories。
点击右上角的按钮(New)
选择Maven,然后,填写Repository key,我们就起一个android_local(自己定义就好)。
然后,点击Save & Finish,到这里就创建了一个本地的Maven仓库。
然后,我们在Local Repositories下面就看到了,我们创建的本地库。
下面,我们就要把我们下载好的Gradle,放到这个本地仓库。
点击左侧栏第2个按钮,Artifact Repository Browser
选择,我们的android_local的maven库,点击右侧Deploy,把我们的Gradle的zip上传上去就可以了
如下图
上传完成后,我们在左侧的android_local下面,就看到了这个Gradle的zip包
这里,有个东西需要配置一下。仓库默认上传文件大小是100M,我们需要改大一些,不然,上传会失败。
点击左侧的Amin→General Configuration
。
修改File Upload Max Size (MB)
,这个选项,我们改成400M,点击Save。
如下图,修改完后,再上传我们的Gradle的zip就没有问题了。
到这里,我们建立的本地的仓库就配置完成了
2,依赖远程的库
我们项目除了Gradle以外,开发时会用到很多的第三方库,这个时候,我们还需要配置一个依赖远程的仓库。
根据上面的流程,我们的远程仓库,需要依赖阿里云的代理仓库。这里先创建一个jcenter仓库。
首先,点击左侧的Admin–→Remote
然后,跟本地仓库一样,点击右侧的New按钮
我们填写一个repository key叫aliyun_maven。并填写地址。
填写完成后,点击右下角的Save & Finish。
就创建好了,我们的jcenter仓库。
我们还要创建google的本地仓库,最好再创建一个public的仓库(防止,其他的地方找不到)
创建完成后,我们看下,我们的远程仓库列表
可以看到,我们的3个远程仓库都创建好了。
3,创建虚拟组
上面,我们把Gradle的文件仓库和依赖库依赖的google(),jcenter()仓库,都创建好了。
如果,我们每个都依赖到项目的话,很不方便。首先,需要写很多;其次,就是如果再添加其他仓库的话,我们也需要都次都改动,这个地方。
这里,我们就创建一个虚拟组。这样,我们的项目,只需要依赖一个虚拟组,让虚拟组把上面的仓库都添加进去就可以了。
首先,点击左侧的Admin–→Virtual。
其次,还是点击右上角的New按钮。填写Repository key,把上面的aliyun_jcenter,android_local等等仓库添加进去。
最后,点击Save & Finish
这样,我们的组就创建好了。
最后,看下我们所有创建的仓库。
二,使用本地仓库
上面的本地仓库创建好以后,我们就不用直接依赖google()等仓库了。
修改我们的项目配置。
1, gradle–→wrapper–gradle-wrapper.properties 下的gradle下载地址
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip distributionUrl=http\://localhost:8081/artifactory/android_local/gradle-4.10.1-all.zip
这里,我们直接依赖我们的本地仓库的地址。
2, 修改项目下的build.gradle
buildscript { repositories { // google() // jcenter() maven{ url 'http://localhost:8081/artifactory/android_depend/' } } dependencies { classpath 'com.android.tools.build:gradle:3.3.1' } } allprojects { repositories { // google() // jcenter() maven{ url 'http://localhost:8081/artifactory/android_depend/' } } }
这里,我们看到我们不在直接依赖jcenter(),google()仓库了。而是依赖,我们自己的本地仓库的那个虚拟组。
这样,以后我们有自己的私有库或者插件的话,就保证了安全性。我们本地仓库依赖了阿里云的代理仓库。也不用担心下载不下来的问题了。