前言

Android项目在Sync时报错:No signature of method:build_*.android() is applicable for argument types。

具体错误信息

1
2
3
4
5
6
7
8
9
10
11
12
13
Build file 'D:\MyWork\android\libUVCCamera\build.gradle' line: 9

A problem occurred evaluating project ':libUVCCamera'.
> No signature of method: build_h7kylzcp3803twlrw5j3ezyi.android() is applicable for argument types: (build_h7kylzcp3803twlrw5j3ezyi$_run_closure1) values: [build_h7kylzcp3803twlrw5j3ezyi$_run_closure1@1a6d7d22]

* Try:
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

Caused by: groovy.lang.MissingMethodException: No signature of method: build_h7kylzcp3803twlrw5j3ezyi.android() is applicable for argument types: (build_h7kylzcp3803twlrw5j3ezyi$_run_closure1) values: [build_h7kylzcp3803twlrw5j3ezyi$_run_closure1@1a6d7d22]
at build_h7kylzcp3803twlrw5j3ezyi.run(D:\MyWork\android\libUVCCamera\build.gradle:9)
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
... 170 more

原因分析

从错误信息来看,其实是说你的build.gradle脚本内容错误,一般是在各个闭包中,添加了不正确的已知闭包实现。
例如 android{} 闭包中增加大小写不正确的 DefaultConfig 等。

解决方法

检查最近对build.gradle脚本的修改:

  1. 是否添加的层次结构不正确, 例如 ndk 应该在 defaultConfig 闭包中
  2. build.gradle结构错误(是否有大小写不正确的,字符串连接错误以及大括号错位等结构错误),例如:拼写错误 defaultConfig 写成 DefaultConfig

具体情况

我发生这种情况是因为:

  1. Android Studio的版本较高
  2. 编译版本较高30,所以提示build.gradleandroid插件有问题

发生问题的配置:

1
apply plugin: 'com.android.library'

将其修改为如下的配置:

1
2
3
4
plugins {
id 'com.android.library'
id 'org.jetbrains.kotlin.android'
}

配置修改后问题就解决了。