多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 1. 说明 在运行`gradlew assemble`的时候,出现了`gradle`的官网:[Gradle User Manual](https://docs.gradle.org/current/userguide/userguide.html) 下面就简单来学习一下。简介: * `Gradle`是一个开源自动构建工具,关注于灵活性和性能,通常使用`Groovy`或者`Kotlin`编写; * 特点有:高定制性,更快,更有效。 `Gradle`支持很多`IDE`,包括:**Android Studio, Eclipse, IntelliJ IDEA, Visual Studio 2019, and XCode**。甚至可以直接使用命令行模式来执行。因为这里所需要的是`Android Studio`中的相关运用,所以这里可以参考文档:[Building Android Apps Sample](https://docs.gradle.org/current/samples/sample_building_android_apps.html)。 ## 1.1 本地安装Gradle 为了方便之后的使用,这里本地在环境变量中配置一个`Gradle`,版本为`7.2`: ![](https://img.kancloud.cn/f7/d1/f7d1971394fadfa9d4e60d968230904b_605x233.png) 下载地址:[Gradle | Releases](https://gradle.org/releases/) 解压到任意目录: ![](https://img.kancloud.cn/5d/f4/5df45a28c4dd4702bdf416c4d726896a_713x115.png) 然后配置环境变量即可,添加目录:`D:\softwares\Android\gradle-7.2-bin\gradle-7.2\bin`到用户`Path`即可。 ## 1.2 构建本地仓库 在应用的`build.gradle`文件中默认配置为: ~~~ allprojects { repositories { google() jcenter() } } ~~~ 而,`google`和`jcenter`均位于国外,且`jcenter`仓库自去年起就不再提供服务了。在我的博客:[# 上传Android library到JitPack](https://blog.csdn.net/qq_26460841/article/details/121478497)一文中也提到了我们可以将自己的工具发布到第三方库,然后方便自己的使用。但总体来说比较麻烦,而且有些库因为还没有开发稳定,也不想发布到公开平台。所以处于如下原因我们可能需要自己构建一个仓库: * 速度!因为`google`位于国外,即使使用了阿里的镜像,但是还是每次需要下载,就略慢; * 方便!方便本地自己引入一个自己所需要的库,而不需要增大项目的额外成本; ### 1.2.1 常见镜像地址 ``` allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://repo.huaweicloud.com/repository/maven' } maven { url 'https://jitpack.io' } mavenCentral() google() jcenter() } } ``` ### 1.2.2 使用Artifactory构建本地仓库 构建本地仓库可选:`nexus`或者`Artifactory`。这里使用`Artifactory`来完成。下载地址:[Downloads](https://releases.jfrog.io/artifactory/bintray-artifactory/org/artifactory/oss/jfrog-artifactory-oss/) 解压下载好的安装包,打开解压后文件夹下的`bin`文件夹,运行`artifactory.bat`,然后等待安装完成。 ![](https://img.kancloud.cn/4a/82/4a82d52983aff7507f16b5f041a1cd18_893x148.png) 访问地址:[http://localhost:8082/ui/login/](http://localhost:8082/ui/login/) 登录: ![](https://img.kancloud.cn/a8/bd/a8bd4538bbe1c356e3c20f8352b583fe_363x254.png) 然后,就可以设置一下远程仓库地址,这里我使用阿里云提供的镜像地址:[仓库服务 (aliyun.com)](https://developer.aliyun.com/mvn/guide)。常见对应关系: | 仓库名称 | 阿里云仓库地址 | 阿里云仓库地址(老版) | 源地址 | | --- | --- | --- | --- | | centra | https://maven.aliyun.com/repository/centra | https://maven.aliyun.com/nexus/content/repositories/centra | https://repo1.maven.org/maven2/ | |jcenter|https://maven.aliyun.com/repository/public | https://maven.aliyun.com/nexus/content/repositories/jcenter | http://jcenter.bintray.com/| |public|https://maven.aliyun.com/repository/public|https://maven.aliyun.com/nexus/content/groups/public|central仓和jcenter仓的聚合仓| |google| https://maven.aliyun.com/repository/google | https://maven.aliyun.com/nexus/content/repositories/google | https://maven.google.com/| 然后在后天添加远程仓库: ![](https://img.kancloud.cn/12/21/1221b98369bb89237dda5686dbae9c20_1884x416.png) 也就是添加上面的四个即可,当然在选择的时候选择`Maven`。然后就可以创建一个本地仓库,供我们项目中直接使用。还是在`Repositories`选项卡,选择`local`,创建一个`android_local`的仓库: ![](https://img.kancloud.cn/45/33/45335e51e77178debb04976d65899b22_925x444.png) 提交后,就可以看见刚刚创建的`android_local`仓库: ![](https://img.kancloud.cn/a2/8d/a28d2b33c0444c634c8cc0b29d55735d_1882x418.png) 然后创建一个虚拟仓库,还是选择`Maven`,然后指定名字为`android_group`,并将所有可用的仓库移动到`selected repositories`中,如下图: ![](https://img.kancloud.cn/af/d3/afd30eee0d052bb1ee8908348c3d1ae3_1889x932.png) 然后我们就可以在我们的应用中只使用这个虚拟仓库,在控制台可以找到其映射地址: ![](https://img.kancloud.cn/2e/ad/2ead3296712d60cbdbbdaeb49defafc6_1473x441.png) 也就是: ``` http://localhost:8082/artifactory/android_group/ ``` 但是很不幸,通过浏览器访问发现需要用户名和密码: ![](https://img.kancloud.cn/b1/67/b1676efb1ff35bc5e6410623ae63e982_789x330.png) 当然,我们通过浏览器可以输入前面的用户名和密码来访问,但是一般在作为仓库使用的时候,我们都需要配置匿名才行。故而这里还需要继续进行配置。也就是允许匿名访问: ![](https://img.kancloud.cn/e8/ac/e8ac987ca986c5c4e29a5e848e586010_1145x464.png) 正如上图所示,默认是不支持的,这里需要勾选,然后保存即可。 然后在`gradle-wrapper.properties`文件中配置`gradle`文件,因为在前面已经下载过`gradle-7.2`,所以这里本地仓库中直接使用这个,在控制台进行上传: ![](https://img.kancloud.cn/d8/bd/d8bd21cea63d46ecd46ba538f61afe27_1915x638.png) 选择带上传图标的`Deploy`进行上传。当然,首先设置一下上传文件大小,因为在`General->settings`中: ![](https://img.kancloud.cn/e8/54/e85433f6266148b42694ec696dc05ab8_863x791.png) 所默认的上传大小为100MB这里修改为1024MB,即: ![](https://img.kancloud.cn/14/b6/14b64c2649105e32e4f147b5ca36ee46_694x568.png) 然后再次回到`android_local`仓库,进行上传文件: ![](https://img.kancloud.cn/ec/d6/ecd6eed0e3ff1f399b17e1831310a7c7_560x628.png) 点击刚上传的这个文件,就可以看到文件的URL地址: ![](https://img.kancloud.cn/87/5b/875bccd561d743c49164bffc27eaa63e_1281x259.png) 也就是: ``` http://localhost:8082/artifactory/android_local/gradle-7.2-bin.zip ``` 所以,我们在`gradle-wrapper.properties`文件中配置的为: ~~~ distributionUrl=http\://localhost:8082/artifactory/android_local/gradle-7.2-bin.zip ~~~ 对应的: ![](https://img.kancloud.cn/bf/25/bf25776a845e97764f295dcd11927614_910x219.png) 注意到上图中`http`有黄色警告,也就是最好使用`https`的链接,这里我们忽略。对应的配置`repositories`地址,如下。找到项目的`build.gradle`文件,原配置文件为: ~~~ buildscript { ext.kotlin_version = "1.4.32" repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:7.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30" } } allprojects { repositories { google() jcenter() } } ~~~ 修改后: ~~~ buildscript { ext.kotlin_version = "1.4.32" repositories { maven { url 'http://localhost:8082/artifactory/android_group/' } // google() // jcenter() } dependencies { classpath 'com.android.tools.build:gradle:7.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30" } } allprojects { repositories { maven { url 'http://localhost:8082/artifactory/android_group/' } } } ~~~ 但是很不幸这里构建失败。也就是其实不支持`Http`协议的,这里可以配置一个允许命令即: ~~~ maven { allowInsecureProtocol true url 'http://localhost:8082/artifactory/android_group/' } ~~~ 然后进行同步,可以看见: ![](https://img.kancloud.cn/f6/db/f6db260b89b80fdd16d3eb00b4a28f72_411x72.png) 然后第二次同步的时候,明显看到时间上的提升: ![](https://img.kancloud.cn/63/5f/635f4eddbd6140cc23857bdd161f077e_332x87.png)