赞
踩
在运行gradlew assemble
的时候,出现了gradle
的官网:Gradle User Manual
下面就简单来学习一下。简介:
Gradle
是一个开源自动构建工具,关注于灵活性和性能,通常使用Groovy
或者Kotlin
编写;Gradle
支持很多IDE
,包括:Android Studio, Eclipse, IntelliJ IDEA, Visual Studio 2019, and XCode。甚至可以直接使用命令行模式来执行。因为这里所需要的是Android Studio
中的相关运用,所以这里可以参考文档:Building Android Apps Sample。
为了方便之后的使用,这里本地在环境变量中配置一个Gradle
,版本为7.2
:
下载地址:Gradle | Releases
解压到任意目录:
然后配置环境变量即可,添加目录:D:\softwares\Android\gradle-7.2-bin\gradle-7.2\bin
到用户Path
即可。
在应用的build.gradle
文件中默认配置为:
allprojects {
repositories {
google()
jcenter()
}
}
而,google
和jcenter
均位于国外,且jcenter
仓库自去年起就不再提供服务了。在我的博客:# 上传Android library到JitPack一文中也提到了我们可以将自己的工具发布到第三方库,然后方便自己的使用。但总体来说比较麻烦,而且有些库因为还没有开发稳定,也不想发布到公开平台。所以处于如下原因我们可能需要自己构建一个仓库:
google
位于国外,即使使用了阿里的镜像,但是还是每次需要下载,就略慢;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()
}
}
构建本地仓库可选:nexus
或者Artifactory
。这里使用Artifactory
来完成。下载地址:Downloads
解压下载好的安装包,打开解压后文件夹下的bin
文件夹,运行artifactory.bat
,然后等待安装完成。
访问地址:http://localhost:8082/ui/login/
登录:
然后,就可以设置一下远程仓库地址,这里我使用阿里云提供的镜像地址:仓库服务 (aliyun.com)。常见对应关系:
仓库名称 | 阿里云仓库地址 | 阿里云仓库地址(老版) | 源地址 |
---|---|---|---|
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仓的聚合仓 |
https://maven.aliyun.com/repository/google | https://maven.aliyun.com/nexus/content/repositories/google | https://maven.google.com/ |
然后在后天添加远程仓库:
也就是添加上面的四个即可,当然在选择的时候选择Maven
。然后就可以创建一个本地仓库,供我们项目中直接使用。还是在Repositories
选项卡,选择local
,创建一个android_local
的仓库:
提交后,就可以看见刚刚创建的android_local
仓库:
然后创建一个虚拟仓库,还是选择Maven
,然后指定名字为android_group
,并将所有可用的仓库移动到selected repositories
中,如下图:
然后我们就可以在我们的应用中只使用这个虚拟仓库,在控制台可以找到其映射地址:
也就是:
http://localhost:8082/artifactory/android_group/
但是很不幸,通过浏览器访问发现需要用户名和密码:
当然,我们通过浏览器可以输入前面的用户名和密码来访问,但是一般在作为仓库使用的时候,我们都需要配置匿名才行。故而这里还需要继续进行配置。也就是允许匿名访问:
正如上图所示,默认是不支持的,这里需要勾选,然后保存即可。
然后在gradle-wrapper.properties
文件中配置gradle
文件,因为在前面已经下载过gradle-7.2
,所以这里本地仓库中直接使用这个,在控制台进行上传:
选择带上传图标的Deploy
进行上传。当然,首先设置一下上传文件大小,因为在General->settings
中:
所默认的上传大小为100MB
这里修改为1024MB
,即:
然后再次回到android_local
仓库,进行上传文件:
点击刚上传的这个文件,就可以看到文件的URL地址:
也就是:
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
对应的:
注意到上图中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/'
}
然后进行前后两次同步,可以看见构建时间从第一次的2m
多到几秒钟。使用本地仓库,明显提升了构建速度。
最终的应用程序build.gradle
文件为:
buildscript { ext.kotlin_version = "1.4.32" repositories { maven { allowInsecureProtocol true url 'http://localhost:8082/artifactory/android_group/' } } dependencies { classpath 'com.android.tools.build:gradle:7.1.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30" } } allprojects { repositories { maven { allowInsecureProtocol true url 'http://localhost:8082/artifactory/android_group/' } } } task clean(type: Delete) { delete rootProject.buildDir }
settings.gradle
文件:
rootProject.name = "My Application"
include ':app'
app
模块的build.gradle
文件:
plugins { id 'com.android.application' id 'kotlin-android' } android { compileSdk 31 defaultConfig { applicationId "com.weizu.myapplication" minSdk 25 targetSdk 31 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } } dependencies { implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.3.0' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。