【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题

记录了使用AndroidStudio2022.3 Giraffe版本在搭建环境时遇到的问题,包括连接超时,gradle无法读取等。
如果只看如何正确的配置,直接跳转第3节 配置汇总

1 连接超时

项目一开始会自动下载gardle文件来加载项目
【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第1张图片

1.1 Connect timed out

基本上很快就会连接超时
【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第2张图片
于是试了给项目的settings.gradle加上下载源,但是未生效【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第3张图片
再次尝试修改模块的properties配置文件来指定下载源

源地址:https://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip

【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第4张图片
顺利成功
【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第5张图片
但是下载gradle编译太过于依赖网络,于是尝试下载gradle到本地,再使用本地gradle

2 使用本地gradle遇到的问题

尝试使用本地下载的gradle遇到的问题

下载gradle地址

2.1 Could not load wrapper properties from…

gradle默认下载目录在C:/Users/用户名/.gradle/wrapper/dists/,我尝试了将gradle文件自行下载到该目录下,然后修改gradle-wrapper.properties文件中关于下载的配置,重新Sync项目,但是报错Could not load wrapper properties from
【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第6张图片
这里为什么没有成功识别properties指定的本地目录的原因没找到,猜测可能是

  1. 下载的本地文件格式与需要的不一致,无法识别
  2. 其他配置文件优先级大于properties配置优先级
  3. 文件夹权限问题致使无法读取

2.2 Could not resolve com.android.tools.build:gradle:8.1.2

  • 排除文件夹读取权限问题
    我在E盘下新建了如图的gradles文件夹作为下载位置,下载的gradle文件还要进一步放在/wrapper/dists文件夹下
    【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第7张图片
  • 排除配置文件优先级问题
    在File > Settings > Build > BuildTools > Gradle下面修改Use Gradle From为自己下载的gradle,注意需要解压,另外把Gradle JDK改为了本地jdk8版本。
    【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第8张图片
    【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第9张图片
    gradle成功开始编译了
    【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第10张图片
    然后报错信息如下

A problem occurred configuring root project ‘My Application3’.
Could not resolve all files for configuration ‘:classpath’.
Could not resolve com.android.tools.build:gradle:8.1.2.
Required by:
project : > com.android.application:com.android.application.gradle.plugin:8.1.2
No matching variant of com.android.tools.build:gradle:8.1.2 was found. The consumer was configured to find a library for use during runtime, compatible with Java 8, packaged as a jar, and its dependencies declared externally, as well as attribute ‘org.gradle.plugin.api-version’ with value ‘8.0’ but:
- Variant ‘apiElements’ capability com.android.tools.build:gradle:8.1.2 declares a library, packaged as a jar, and its dependencies declared externally:
- Incompatible because this component declares a component for use during compile-time, compatible with Java 11 and the consumer needed a component for use during runtime, compatible with Java 8
- Other compatible attribute:
- Doesn’t say anything about org.gradle.plugin.api-version (required ‘8.0’)
- Variant ‘javadocElements’ capability com.android.tools.build:gradle:8.1.2 declares a component for use during runtime, and its dependencies declared externally:
【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第11张图片

  • 错误尝试
    一开始我以为是gradle plugins版本的问题,gradle pluginsgradle是两个东西,类似于maven插件maven仓库
    在File > Project Structure > Project 设置中可以看到AGP与GV版本,根据描述AGP不能被直接修改,需要使用工具,但是可以点击这里自行输入一个版本
    【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第12张图片
    我一开始使用的是gradle 7.0.2版本,把AGP修改为了7.4.2版本,但是保存后仍未编译成功,另外这里AGP8.1.2版本对应gradle8.0是没问题的,所以不需改动
  • 正确尝试
    再次观察报错信息中有这一句

Incompatible because this component declares a component for use during compile-time, compatible with Java 11 and the consumer needed a component for use during runtime, compatible with Java 8

意思大概是gradle8.0版本应对应最低java11,而我设置使用本地java8
更改setting中JDK版本为AndroidStudio自行下载的jdk17
【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第13张图片
再次编译!成功
【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第14张图片

3 配置汇总

首先是连接超时关于下载镜像的更换

3.1 下载镜像源更换

源地址:https://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip

【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第15张图片
不想下载镜像源,想使用本地gradle

3.2 本地gradle下载

下载gradle地址
在E盘下新建了如图的gradles文件夹作为下载位置,下载的gradle文件还要进一步放在/wrapper/dists文件夹下,
【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第16张图片
【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第17张图片
另外,AGP插件使用本地gradle如果需要下载一些东西又可能连接超时,所以在本地gradle文件中创建一个配置文件,指定下载源
【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题_第18张图片
init.gradle文件内容:

allprojects {
    repositories { 
        mavenLocal() 
        maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" } 
        maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" } 
        mavenCentral()
    }
    buildscript {
        repositories { 
            maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' } 
            maven { name "Bstek" ; url 'https://nexus.bsdn.org/content/groups/public/' } 
            maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
        }
    }
}

3.3其他问题

  • 使用本地gradle时,要注意gradle plugins版本,可以自行查询两者版本对应关系
  • gradle版本和jdk版本有一定对应要求,例如gradle8.0必须使用jdk11以上(也有一说AndroidStudio Giraffe必须使用jdk17以上)

你可能感兴趣的:(androidstudio,笔记,android,studio,android,jetpack,intellij,idea)