Android Studio 2022.1.1创建项目的Gradle配置问题
作者:0xfather 发布时间:2022-05-05 21:45:36
今天使用Android Studio建了一个新项目,遇到了不少问题,网上也找了不少解决方案都无效(可能Studio版本、项目版本等都不一样,解决办法也不一样吧),最后问题解决,总结梳理以下几点:
1.版本确认
Android Studio版本:2022.1.1
Gradle版本:7.5
Android Gradle Plugin Version:7.4.2
JDK版本:Java 11
SDK版本:33(Android 13.0)
2.遇到的问题
could not resolve plugin artifact 'com.android.application:com.android.application.gradle.plugin:7.4.2'
该问题出现,直接导致项目无法完成编译,看似是gradle插件版本过高问题,导致adnroid核心包无法下载下来,实际上归根结底还是“网络的问题”。
3.解决办法
1)检查各版本配置是否正确
Gradle插件和Gradle工具的版本对应是有要求的,详见下图:
另外可在Adroid官网查看对应关系:Android Gradle 插件版本说明 | Android 开发者 | Android Developers
根据上图可以看出,本次使用的Android Gradle Plugin Version版本是7.4.x,因此对应的Gradle版本是7.5版本(别搞错了,版本不对应一样可能无法完成更新下载)。
另外JDK版本也不宜太高,最初我使用的JDK17,结果发现Android Studio2022.1.1最高支持JDK为Java 11,所以需要降级到Java 11。
该配置可在File —> Project Structure —> Modules中查看确认。
2)网络配置
使用代理或梯子是完成不了更新的,所以强烈建议将仓库地支更换为国内源,比如阿里源。
完整的setting.gradle配置:
pluginManagement {
repositories {
maven { url "https://jitpack.io" }
maven { url 'https://maven.aliyun.com/repository/releases' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/public' }
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
maven { url "https://jitpack.io" }
maven { url 'https://maven.aliyun.com/repository/releases' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/public' }
google()
mavenCentral()
}
}
rootProject.name = "XXX"
include ':app'
注:Gradle7.5的Maven仓库配置已经从build.gradle文件转移到setting.gradle文件里了,因此该配置要写在setting.gradle文件里
3)关闭Android Studio代理
这一步很关键,我就是忘记关闭,折腾了半天才发现问题。
打开File —> Setting —> 搜索proxy —> 选择Http Proxy,选择No proxy并确认
4)配置本地Gradle
Android Studio内置了Gradle,但是他在项目编译时才下载Gradle工具,but 不要抱有期望了,下不下来的,还是自己手动下载Gradle工具吧(注意下载对应版本,我这里的对应版本是7.5,若不清楚对应版本,可以看看前面的内容,查看自己需要的版本)。
Gradle版本下载:Gradle Distributions
下载完成后需要配置几个地方:
打开File —> Setting —> Build,Execution…… —> Build Tools —> Gradle。
a.设置Gradle user home为你安装的gradle目录;
b.设置下方User Gradle from为Specified location,并选择你的gradle目录;
c.选择Gradle JDK版本为Java 11
这样就完全使用本地gradle进行编译了。若使用默认的Gradle user home,则需要修改C:\Users\用户名\.gradle\目录下的gradle.properties文件,注释掉以下代理内容(使用内置Gradle不禁用这里代理仍然会被使用,从而可能导致下载失败):
## For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
#
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx1024m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
#Fri Apr 07 16:23:59 CST 2023
# systemProp.http.proxyHost=mirrors.neusoft.edu.cn
# systemProp.https.proxyHost=mirrors.neusoft.edu.cn
# systemProp.https.proxyPort=80
# systemProp.http.proxyPort=80
经过以上步骤,项目重新编译应该就可以正常下载更新了。
题外话:若不使用本地Gradle工具,还可能会产生Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"问题哟。
4.其他配置
1)修改Android Studio运行环境内存
打开File —> Setting —> Appearance & Behavior —> System Settings —> Memory Settings,更改内存为4096MB(根据自己实际情况更改)
2) 修改字符集编码
打开File —> Setting —> 搜索coding —> Editor —> File Encodings,设置Global Encoding、Project Encoding和Default encoding for properties files为UTF-8,在上方“+”选择项目根路径,表示整个项目使用UTF-8编码。
来源:https://blog.csdn.net/Asgard_Hu/article/details/130060484


猜你喜欢
- 之前自己从来没有做过发送邮箱的功能,前段时间项目需要,在找了很多帖子之后,终于实现了。之后有整理了一下,写了一个类。直接给类传递信息,就可以
- 本文实例为大家分享了java生成字母验证码的具体代码,供大家参考,具体内容如下import java.awt.BasicStroke;imp
- 本文实例为大家分享了javafx tableview鼠标触发更新属性,供大家参考,具体内容如下public class HoverCell
- 本文实例讲述了C#实现基于IE内核的简单浏览器。分享给大家供大家参考。具体如下:Form1.cs如下:using System;using
- 首先对于一个SpringBoot工程来说,最明显的标志的就是 @SpringBootApplication它标记了这是一个SpringBoo
- 参数设置java程序启动参数 -D是用来做什么的呢? 官方解释如下:Set a system property value. If valu
- 一、JDBC概述1、数据的持久化持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用
- 前言有小伙伴提出需要实现雷达图。 由于在WPF中没有现成的雷达图控件,所以我们自己实现一个。PS:有更好的方式欢迎推荐
- 本文为大家分享了JSplitPane的使用方法,供大家参考,具体内容如下1、swing分割窗口控件JSplitPane,用来将窗口分割成两个
- 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。常见的对称加密方法DES :
- 什么是 Intent ?Intent是Android开发中一个非常重要且常用的类,Intent是一个消息传递对象,可以用来从其他应用组件请求
- 你可能在上篇文章中《深入多线程之:双向信号与竞赛的用法分析》注意到了这个模式:两个Waiting 循环都要下面的构造:lock(_locke
- 最近看到一道有点意思的逻辑算法题,便着手实现一下。题目是要求打印 出N*N顺时针螺旋数组,规律如下:// 1 2 &
- InputStreamReader 类1、概述转换流 java.io.InputStreamReader ,是Reader的子类,是从字节流
- 本文实例讲述了Android自定义个性化的Dialog。分享给大家供大家参考,具体如下:Dialog:mDialog = new Dialo
- 本文实例讲述了C#控件闪烁的解决方法。分享给大家供大家参考。具体分析如下:如果你在Form中绘图的话,不论是不是采用的双缓存,都会看到图片在
- 示例1项目结构代码controller中 UserController.javapackage com.example.demo1110.c
- 前言在讲这两种方式之前,我们先来说明一下什么是java中的jar文件jar (Java Archive File),翻译过来就是java的档
- 开发中经常需要将某个文件向另一个应用程序传递,如图片上传到另一个应用程序、文件在不同存储路径之间的复制粘贴等都需要共享文件,可以这样理解接收
- Glide开源框架是Google推荐的图片加载和缓框架,其在Github上的开源地址是:https://github.com/bumptec