如何修复错误:没有方法签名:build_ap86oam3dut3pxce3x49rdtma.android()?

Usm*_*qat 50 android kotlin android-studio

错误:没有方法签名:build_ap86oam3dut3pxce3x49rdtma.android() 适用于参数类型:(build_ap86oam3dut3pxce3x49rdtma$_run_closure1) 值:[build_ap86oam3dut3pxce3x49rdtma$_run_closure1@047]

构建等级是:

apply plugin: 'com.android.application'

    android{
    implementationSdkVersion 28
    buildToolsVersion "29.0.3"
    defaultConfig {
        applicationId "com.uiresource.taksiku"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        }
    }

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        androidTestImplementation('com.android.support.test.espresso:espresso-core:2.3-alpha', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })
        implementation "com.android.support:appcompat-v7:$var"
        implementation 'com.android.support:design:28.0.0'
        testimplementation 'junit:junit:4.13'
        implementation 'com.android.support.constraint:constraint-layout:2.0.0-beta5'
        implementation 'de.hdodenhof:circleimageview:3.1.0'
        }
Run Code Online (Sandbox Code Playgroud)

Chi*_*mar 64

如果您使用 kotlin 版本 1.4.21 或更高版本,则不推荐使用 kotlin-android-extension。因此,如果您删除插件,您还必须删除 android 实验扩展块。就我而言,我不得不删除这些代码片段。

apply plugin: 'kotlin-android-extensions'


androidExtensions {
    experimental = true
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你!似乎应该将该代码段添加到迁移[指南](https://developer.android.com/topic/libraries/view-binding/migration) AS 向您指出弃用通知。 (4认同)
  • 谢谢。想象一下,这就是AS给我的:`>没有方法签名:build_1vktrv59g77woj77yc4fmjh74.android()适用于参数类型:(build_1vktrv59g77woj77yc4fmjh74$_run_closure1)值:[build_1vktrv59g77woj77yc4fmjh74$_run_closure1@3918b第394章 (3认同)

Dav*_*mas 26

这是 android {} 闭包内 gradle 文件中某处的语法错误。如果您遇到同样的问题,那么解决此问题的最佳方法是注释掉 android {} 内的部分代码,并继续运行 gradle 同步,直到成功构建。然后慢慢添加回注释掉的行,直到找到罪魁祸首。


小智 22

我有同样的错误消息,直到我注释掉 android 插件中除了编译 sdk 版本之外的所有内容,试图回到成功的构建配置。

android {
    compileSdkVersion 23
/*
    ...
*/
}
Run Code Online (Sandbox Code Playgroud)

然后,我开始取消注释,直到我将问题缩小到错误地使用以下内容为止。

ProductFlavors {
  ...
}
Run Code Online (Sandbox Code Playgroud)

我不确定您是否使用相同的块,但目前,我将其注释掉,因为我不确定它是否需要。但是,一旦我摆脱了它,我就会收到有关 sdk 根目录位置的其他错误,因此我能够修复这些错误。

我希望这有帮助!

  • 谢谢你的主意。对我来说是 ``kotlinOptions { jvmTarget = '1.8'``` } (4认同)

her*_*hat 17

这个问题通常与 build.gradle 文件的某些更改有关,例如在我的例子中,该文件的 defaultConfig 部分中的这一行是:

versionCode 1.1
Run Code Online (Sandbox Code Playgroud)

我把它改为:

versionCode 2
Run Code Online (Sandbox Code Playgroud)

并解决了问题。


Sho*_*sar 14

我从我的 Gradle 中删除了这段代码:

javaCompileOptions {
        annotationProcessorOptions {
            includeCompileClasspath true
        }
    }
Run Code Online (Sandbox Code Playgroud)


mon*_*lou 13

Android Studio 2021.1.1 Canary 12中,我删除了

plugins{
   ...
   id 'kotlin-android-extensions'
}
Run Code Online (Sandbox Code Playgroud)

但忘记将其删除

android{
    androidExtensions {
            experimental = true
        }
}
Run Code Online (Sandbox Code Playgroud)

删除 androidExtension 块后我的问题解决了


bra*_*ene 11

对于此错误没有唯一的解决方案,除了它是build.gradle文件内部的语法错误之外。


小智 10

就我而言,我需要在 gradle 中注释掉这一行

androidExtensions{
    experimental = true
}
Run Code Online (Sandbox Code Playgroud)


Sum*_*abh 9

我刚刚useProguard true在 build.gradle > android > buildTypes 中删除了它,它对我有用。


Rem*_*Rem 8

我正在使用 JAVA,但由于某种原因 Android Studio 在我不知情的情况下添加kotlinOptions到了块中。android然后同样的错误发生了。我放在这里只是为了以防万一有人需要它。

android {
    // ...

    // remove this block if you are using Java
    kotlinOptions {
        jvmTarget = '1.8'
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)


Bra*_*yam 7

您可以做的最好的事情是评论build.gradle与问题相关的文件部分,直到您获得良好的构建,然后他们一一取消注释,直到您找到问题为止。我有同样的错误,它与应用程序build.gradle块之一中的错字有关。我正在使用:

android {
    ...
    buildFeature {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

代替

android {
    ...
    buildFeatures {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

祝你好运!

  • @AlessandroOrnano 在我的回答中,区别在于“buildFeature”与“buildFeatures”之间的区别,末尾带有“s”。后者是正确的。 (6认同)

hta*_*oya 7

我收到了一个类似的错误,因为它versionCode是从属性文件中获取的,但是 versionCode 需要是一个整数而不是一个字符串,所以toInteger()需要。

不错的日志,安卓。

  • 我也遇到这种情况,检查版本代码解决了问题 (3认同)

Lal*_*dar 6

我正在从 Github 检查一个非常旧的项目,并通过将应用程序级别build.gradle文件与我当前的项目相匹配找到了解决方案,因此解决方案是替换

runProguard false
Run Code Online (Sandbox Code Playgroud)

minifyEnabled false
Run Code Online (Sandbox Code Playgroud)

它一定已经在以后的版本中被弃用并删除了,这导致了类似的问题 - No signature of method: build_6f958jjxpxn7lllu9wu5brezx.android()


小智 4

我是 Android 新手,但今天当我尝试在 Android Studio 4.1 Canary 上使用不同版本的 Gradle 插件和 gradle 引擎时(不是建议的版本),我收到了一条与您类似的消息。

当我的应用程序 build.gradle 上有这些行时:

task wrapper(type: Wrapper){
    gradleVersion = '5.6.4'
}
Run Code Online (Sandbox Code Playgroud)

并在我的 build.gradle 模块中这一行

classpath 'com.android.tools.build:gradle:3.6.3' 
Run Code Online (Sandbox Code Playgroud)

这是我在之前的设置中收到的消息:

A problem occurred evaluating project ':app'.
> No signature of method: build_5dcjpn4h9nkpym0yszxs5w2uh.android() is applicable for argument types: (build_5dcjpn4h9nkpym0yszxs5w2uh$_run_closure1) values: [build_5dcjpn4h9nkpym0yszxs5w2uh$_run_closure1@2e4515b3]
Run Code Online (Sandbox Code Playgroud)

我发现解决此错误的方法是更改​​ build.gradle 上模块的 gradle 插件的版本,如下所示

classpath 'com.android.tools.build:gradle:4.0.0' 
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助你。快乐编码!