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

时间:2020-05-14 21:15:45

标签: android android-studio kotlin

错误:方法无签名:build_ap86oam3dut3pxce3x49rdtma.android()适用于参数类型:(build_ap86oam3dut3pxce3x49rdtma $ _run_closure1)值:[build_ap86oam3dut3pxce3x49rdtma $ _run_closure1 @ 47b>

构建包为:

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'
        }

25 个答案:

答案 0 :(得分:51)

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

apply plugin: 'kotlin-android-extensions'


androidExtensions {
    experimental = true
}

答案 1 :(得分:12)

在我注释掉android插件中除编译sdk版本之外的所有内容之前,我都遇到了相同的错误消息,试图恢复成功的构建配置。

android {
    compileSdkVersion 23
/*
    ...
*/
}

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

ProductFlavors {
  ...
}

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

我希望这会有所帮助!

答案 2 :(得分:10)

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

androidExtensions{
    experimental = true
}

答案 3 :(得分:4)

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

runProguard false

minifyEnabled false

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

答案 4 :(得分:3)

这是因为 build.gradle 的 android{..} 部分有语法错误 您已经使用了 implementationSdkVersion,理想情况下应该是 compileSdkVersionandroid{..} 中的变量名称错误会导致此类错误。

TLDR;

implementationSdkVersion替换compileSdkVersion

答案 5 :(得分:2)

最好的办法是注释build.gradle文件中与该问题有关的部分,直到获得良好的构建,然后将它们逐1注释掉,直到找到问题。我有同样的错误,它与应用程序build.gradle块之一中的错字有关。我正在使用:

android {
    ...
    buildFeature {
        ...
    }
}

代替

android {
    ...
    buildFeatures {
        ...
    }
}

祝你好运!

答案 6 :(得分:2)

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

versionCode 1.1

我改成:

versionCode 2

问题已解决。

答案 7 :(得分:1)

我试图在我的项目中添加 Parcelable 插件。在我的情况下,这也是同样的错误。因为,JetBrains 从 Kotlin Android Extensions 中提取了 Parcelize 到一个新插件 kotlin-parcelize

因此,如果您想在 kotlin 中添加简单的 Parcelable,请按照以下步骤操作:

首先你需要将 kotlin-parcelize 插件添加到你的模块中

插件{ .. id 'kotlin-parcelize' }

然后将旧的导入语句从

导入 kotlinx.android.parcel.Parcelize

导入 kotlinx.parcelize.Parcelize

示例:

导入 kotlinx.parcelize.Parcelize

导入 android.os.Parcelable

@Parcelize 类用户(

val 名称:字符串, 价值年龄:Int

):可包裹

答案 8 :(得分:1)

对我来说,问题出在这个块

defaultConfig {
        applicationId "abc"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 12.1 **-> 13**
        versionName "3"
    }

'versionCode' 不能是十进制数

答案 9 :(得分:0)

添加后出现这个问题

kapt {
    // etc
}

因为我没有添加:

apply plugin: 'kotlin-kapt'

答案 10 :(得分:0)

确保您使用的是kotlin android插件,而不是kotlin jvm插件。

apply plugin: 'kotlin-android' // NOT kotlin-jvm

答案 11 :(得分:0)

大多数时候它缺少依赖项,如果您使用“dagger/Hilt”

  • 确保将其添加到项目级 build.graddle
   dependencies {
       // ....
        classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
    
    }
  • 在应用级 build.graddle 中添加 hilt 插件
plugins {
 //....
    id 'dagger.hilt.android.plugin'
}
  • 添加完整的刀柄和匕首依赖
   //hilt

    implementation "com.google.dagger:hilt-android:$hilt_version"

    // Dagger Core 
    implementation "com.google.dagger:dagger:2.28"
    kapt "com.google.dagger:dagger-compiler:2.28"

    // Dagger Android
    api 'com.google.dagger:dagger-android:2.35.1'
    api 'com.google.dagger:dagger-android-support:2.31'
    kapt 'com.google.dagger:dagger-android-processor:2.31'

//Dagger - Hilt
    implementation "com.google.dagger:hilt-android:2.32-alpha"
    kapt "com.google.dagger:hilt-android-compiler:2.28-alpha"

答案 12 :(得分:0)

对我来说是useIR true里面的kotlinOptions

答案 13 :(得分:0)

我遇到了类似于 @LalitFauzdar 的问题,但有不同的解决方案。我正在使用的插件需要自定义 ProGuard 规则来发布版本,但在应用程序 gradle 文件中添加对规则文件的引用会导致出现问题。这是违规行,注释掉了:

buildTypes {
  release {
    signingConfig signingConfigs.release
    // proguardFiles 'proguard-rules.pro'
  }
}

答案 14 :(得分:0)

在添加 Flutter 风格后,我一直在努力解决这个错误。显然,如果您的风味名称包含 -,它将不起作用。

例如将名称从 test-preprod 转换为 test_preprod,现在可以使用了。

答案 15 :(得分:0)

对我来说,原因是在版本更新和旧教程中拼错了 gradle 的原生 libs 命令。

    externalNativeBuild {
        ndkBuild {
            path 'Android.mk'
        }
    }

... 
// But i had:  
    externalNativeBuild {
        ndk {
            path 'Android.mk'
        }
    }

但正如答案的数量所表明的,这个问题有几种可能性。
很可能在某些版本更新后,某些 gradle 功能不再可用。

答案 16 :(得分:0)

我在gradle文件中的buildTypes下添加了debug,并在“ API_URL”之后错过了逗号:

不起作用:

buildTypes {
    ...
    debug {
        buildConfigField "String", "API_URL" "\"http://myapi.com/\""
    }
}

工作:

buildTypes {
    ...
    debug {
        buildConfigField "String", "API_URL", "\"http://myapi.com/\""
    }
}

祝你好运!

答案 17 :(得分:0)

我遇到了同样的问题。这是一个讨厌的人。

我首先在这里Deprecated Gradle features not compatible遵循了答案,然后在终点站跑了 cd android && ./gradlew clean && ./gradlew:app:bundleRelease

gradlew命令给出了更多实际的反馈,结果我的Java和JDK是32位而不是64位,而且已经过时了...

这导致了进一步的错误,但可以逐步解决: Invalid initial heap size -Xms4096M Could not find tools.jar. Please check that C:\Program Files\Java\jre1.8.0_151 contains a valid JDK installation

答案 18 :(得分:0)

旧问题但值得注意的是,如果您看到此问题,您可能需要按照此处的迁移指南进行操作:

https://developer.android.com/topic/libraries/view-binding/migration

对我来说,删除 apply plugin: 'kotlin-android-extensions' 行并添加如下视图绑定解决了问题:

buildFeatures {
    viewBinding true
}

答案 19 :(得分:0)

感谢您提到只是评论和测试,对我来说是:

kapt {
    useBuildCache = true
}

删除它,一切都在重新构建。 更新 Kotlin 版本后发生。

答案 20 :(得分:0)

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

当我使用App构建时,请对这些行进行分级:

task wrapper(type: Wrapper){
    gradleVersion = '5.6.4'
}

在此行的模块的build.gradle上

classpath 'com.android.tools.build:gradle:3.6.3' 

这是我以前的设置所收到的消息:

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]

我发现解决此错误的方法是在build.gradle上为这样的模块更改gradle插件的版本

classpath 'com.android.tools.build:gradle:4.0.0' 

我希望这可以为您提供帮助。 编码愉快!

答案 21 :(得分:0)

就我而言,错误原因如下

compilpepeeSdkVersion

而不是

compileSdkVersion

答案 22 :(得分:0)

尝试在您的应用级build.gradle文件中对此进行评论

openOptions {
    disable 'InvalidPackage'
}

答案 23 :(得分:0)

我遇到类似的错误,因为versionCode是从属性文件中获取的,但是versionCode必须是整数而不是字符串,因此需要toInteger()

好的日志,Android。

答案 24 :(得分:0)

我遇到了类似的问题,因为我在android / app / build.gradle的defaultConfig中添加了尾随逗号,