错误:方法无签名: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'
}
答案 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
,理想情况下应该是 compileSdkVersion
。 android{..}
中的变量名称错误会导致此类错误。
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”
dependencies {
// ....
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
}
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中添加了尾随逗号,