Bootstrap

Android踩坑实录:Could not find method android() for arguments报错

1. 背景介绍

最近Java切Kotlin学习,刚好把AS、JDK、Gradle更新到较新版本,打算整体来一次换新。感觉换的太快容易崩些问题出来,果不其然就踩坑了,分享一下我的踩坑记录。

2. 过程记录

a. 项目新建

 新建项目的流程还是AS正常流程,New Project -> Empty Activity,简单命名一下,直接创建


刚新建完,不出意外,直接就报Runtimeout了,去阿里云仓库映射一下

仓库地址:仓库服务

注意:gradle 8.x以后的版本 maven引用的写法变了

maven { url = uri("https://maven.aliyun.com/repository/central") }

映射完以后,一并把JDK升级到17

jdk17下载:https://www.oracle.com/java/technologies/downloads/#jdk17-windows

没有代理和VPN直接下也可以,大概下了半小时多,然后把JDK安装并配置到系统变量


因为创建以后AS直接给我配置插件8.1.2的版本,直接用它就行

plugins {
    id 'com.android.application' version '8.1.2' apply false
}

查一下插件版本和Gradle的匹配,发现要用8.0以上版本的Gradle

Android Gradle 插件版本说明  |  Android 开发者  |  Android Developers

Gradle一直是网速感人的重灾区,想了想还是去Gradle Distributions手动下载吧


下载完Gradle以后,改一下Gradle的引用地址,解压gradle-8.0-all.zip到AS使用的Home地址对应的.~/.gradle/wrapper/dists路径下

注意我这边是直接把.~/.gradle直接迁移到了G盘根目录,这个home一般C盘不超额的话,保存原样就可以了

然后在.~/gradle-wrapper.properties文件修改引用为本地地址,搞定后sync一下


然后就发现一个很难顶的事,Module居然出现了引用不到的情况。

sync结果报了一个

Plugin was not found in any of the following sources

完全表示纳闷,环境也配置好了,不应该找不到安卓源码的呀,于是搜索引擎查了下,

I. 排除代理导致的问题

可以看到是没有开代理的,不是代理导致的问题

II. 排除SDK未下载的问题

编译的SDK是33,所以把Android13都下载一轮,结果还是报错

III. 找到原因

最后找到原因,settings.gradle删除多了,Android的源码需要从google()下载,还是需要保留它的,加入后重新sync一下,正常使用

;