Gradle下载失败
Gradle下载失败通常是新手的第一步,因为不论是跑从网上找的项目,还是自己新建新的项目,通常第一步都是检查是否有Gradle,如果没有便会进入下载。因为安卓项目的构建是依赖于Gradle的。而Gradle的官网在国外,导致as默认的下载地址经常会失败或者超时。
build提示通常为Download xxxx/gradle-x.x.x.zip失败,或者read time out之类的,反正要注意是否有Gradle字眼,和蓝色地址。
解决方案(两种)
方法一(推荐)
换腾讯软件镜像地址,在项目中找到以下文件gradle-wrapper.properties。这个文件就是Gradle的配置文件。
它的内容格式通常如下,蓝色部分就是我们要替换的部分,后面是版本,先尽量不动。将其替换成腾讯的mirrors.cloud.tencent.com/gradle。(ps:完整地址为腾讯Gradle镜像地址)
替换后,as会出现黄色提示条,表示配置文件被改动,需要更新,点击更新,Gradle就会从新的腾讯地址下载,嘎嘎快。
方法二
比起改地址来说,这个方法更繁琐,而且可能也需要访问腾讯镜像。
我们从浏览器进入Gradle Distributions或者腾讯Gradle镜像地址,找到当前项目需要的压缩包。如:
或者直接访问需要下载的地址将配置文件里的地址稍作修改,如:
services.gradle.org/distributio… ,mirrors.cloud.tencent.com/gradle/grad… ,直接触发浏览器的下载。
下载完成后,手动将下好的压缩包放入.gradle目录下的对应文件里的乱码文件夹里(ps:下图中的文件夹中,通常还有个乱码文件夹,将zip放入乱码文件夹其中重新build或者打开项目即可。注意:.gradle文件夹的位置并不固定,默认是在C盘当前用户下的文件夹里,如果通过as的setting修改,可能就不在了。)
依赖下载失败
通常报错字眼为Could not get resource 'url'或者dependency xxxx或者read time out加上一个或者多个蓝色url地址。
问题原因是,仓库的源都在国外,下载很容易访问不到,或者超时。
解决方案
所以更换阿里云仓库服务 (aliyun.com)。
(ps:需要注意的是,不同版本的Gradle,仓库源配置的位置是不同的。但都在项目级的build.gradle和settings.gradle这两个文件中,在安卓项目中找到这个两个文件)。仓库源的长相如下:(ps:新版可能已经没有jcenter()换成Central()了)
使用java版还是kts版,取决于你的build.gradle文件后缀是否带kts。高版本as新建项目可能会选择出kts版的gradle。
java版gradle修改格式
maven {url 'https://maven.aliyun.com/repository/google'}
maven {url 'https://maven.aliyun.com/repository/jcenter'}
maven {url 'https://maven.aliyun.com/repository/central'}
kts版gradle修改格式
maven(url = uri("https://maven.aliyun.com/repository/google"))
maven(url = uri("https://maven.aliyun.com/repository/jcenter"))
maven(url = uri("https://maven.aliyun.com/repository/central"))
Unsupported Java
这个问题也很经典,由于as自带jdk,随着as的版本越新,带的jdk版本越高。而gradle对jdk的需求是不支持向上兼容的。
| Gradle版本 | 最低JDK版本 |
|---|---|
| 8.0+ | 17 |
| 7.0+ | 11 |
| 7.0以下 | 8 |
注意这时候,新手尽量不要点击蓝色链接进行gradle升级。gradle在安卓项目中的地位至关重要,对第三方库,配置写法,jdk版本,as版本,gradler tool版本都有要求。
如果确认原项目配置是能正常运行的,优先尝试给予项目应有的环境,而不是贸然升级。
解决方案
旧版本通常在Project Structure
首先我们在as左上角找到Project Structure...
打开之后找到JDK相关得字眼
选择合适得版本,如果没有,用download jdk下载也行。你自己到网上下载然后添加一下也可以。
新版本可能在Setting中
复制代码爆红
如下图,有新手可能想根据某些项目源码写出属于自己的项目,或者有些博客并没有提供源码而是代码片段。所以复制粘贴是常见的操作,但是经常复制到自己项目就是醒目的红色充斥着屏幕。
这是因为没有导入/引入相应的包(ps:应该来说这属于java或者说编程基础问题,据大部分语言,在使用库方法/函数时,都需要在当前位置导入/引入相应的包。)
或者这样意义不明的提示。
解决方案
找import
将鼠标放到爆红代码,如左下角出现import字样,可直接点击,选择合适的包。(ps:选完不合适可以撤销,本class导入的包会在当前代码顶部统一展示,随时可以删除调整。)
如果左下角并非import的时候,比如一些静态变量的引用,或者资源文件。
对着报红的代码使用combo:
alt+enter然后寻找import 字样的快捷工具,如下图
Switch case报错 R.id.xxx报错
鼠标悬停错误提示为:Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in switch case statements(在 Android Gradle Plugin 版本 8.0 中,资源 ID 默认为非最终标识,请避免在 switch case 语句中使用它们。)
其实提示也挺清晰的,就是switch在 Android Gradle Plugin 版本 8.0 中不能这样用了
解决方案
注解解决
在使用switch的方法上一行加上注解 @SuppressLint("NonConstantResourceId")
switch换if
可以自己手写,也可以对着switch使用快捷键 alt+Enter触发快捷方法Replace 'switch' with 'if'
以上配置解决,基本上简单项目就能够正常跑通了。之后遇到什么疑难杂症,将会继续更新,敬请期待。
中文路径问题
Caused by: org.gradle.api.tasks.StopExecutionException: Your project path contains non-ASCII characters. This will most likely cause the build to fail on Windows. Please move your project to a different directory. See http://b.android.com/95744 for details. This warning can be disabled by adding the line 'android.overridePathCheck=true' to gradle.properties file in the project directory.
解释
项目路径中包含了非ASCII字符,这会导致Windows系统下的构建工具Gradle无法正确处理文件路径,从而引起构建失败。
解决
简单来说,是因为我们的项目放到中文目录下了,改一下文件名重新打开,或者剪切到英文路径目录下。
编译较新kotlin项目时,在以下卡住
Starting Gradle Daemon...
Gradle Daemon started in 2 s 368 ms
> Task :prepareKotlinBuildScriptModel UP-TO-DATE
解决
首先,根据文章之前的切换腾讯云源,确保gradle能正常下载。如果确认下载成功,依旧卡住,检查gradle是否为-bin版本,将其改为-all版本,重试。 Android Studio卡prepareKotlinBuildScriptModel解决方法 - 知乎 Gradle 源的 URL 被硬编码到 SourceDistributionResolver ·问题 #18249 ·gradle/gradle --- URL for Gradle sources is hard-coded into SourceDistributionResolver · Issue #18249 · gradle/gradle