1.gradle在Android构建过程的作用
gradle是Android里最方便也是最好的用来管理第三方库和打包用的工具。
自动下载多种类型依赖库:本地、库依赖、远程依赖。
最方便的地方是支持自定义打包脚本,为多渠道打包提供了便捷的基础。
Android Studio自带的Maven源地址是国外的,该Maven源在国内的访问速度很慢或无法访问,可以通过替换下载源为阿里云的方式解决(替换后可能报如下错误)
2.Android Studio gradle编译过程报如下错误的解决方法
Error:Could not resolve all dependencies for configuration ':app:debugCompileClasspath'
Could not load module metadata from C:\Users\LENOVO\.gradle\caches\modules-2\metadata-2.71\...
Unexpected metadata type found
C:\Users\LENOVO\.gradle\caches\modules-2\metadata-2.71\
1.其中根据报错提示,先关闭Android studio,然后删除以上目录中的metadata-2.71文件夹
2.保持联网状态,打开Android studio,此时Android studio同步时会下载许多依赖插件,等待完成即可
3.工程同步成功、编译应该也可以成功
按以上解决方法操作后,再次编译,可能会报如下错误(其中如果升级了Android studio版本后,编译之前的项目也可能失败,而报如下的类似错误)
Could not read entry ':app:processDebugManifest' from...
3.完美解决方法
(1).卸载Android studio
(2).删掉C:\Users\LENOVO\.gradle目录(删掉.gradle)
(3).安装最新的Android Studio
(4).首次启动Android Studio时,先注释build.gradle里"阿里云"源的配置
如图所示:
(5).Android Studio自带的下载源替换为阿里云的下载源
buildscript {
repositories {
//ADD START
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
//ADD END
google()
jcenter()
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.3'
}
}
allprojects {
repositories {
//ADD START
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
//ADD END
google()
jcenter()
maven {
url "https://jitpack.io"
}
maven {
url 'https://maven.google.com/'
name 'Google'
}
......
}
}
(6).在C:\Users\LENOVO\.gradle\目录创建init.gradle配置文件
allprojects{
repositories {
def MY_ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
def MY_ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $MY_ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $MY_ALIYUN_JCENTER_URL."
remove repo
}
}
}
maven {
url MY_ALIYUN_REPOSITORY_URL
url MY_ALIYUN_JCENTER_URL
}
}
}
(7).Android Studio App项目工程同步成功、App项目编译成功
原文链接
Android Studio gradle无法编译App的完美解决方法
Android11系统源码的下载与编译方法(解决内存、磁盘不足问题)