调用自定义方法仅支持Android 0及以上版本,最低API版本为26。

658

之前我使用的是 Gradle 26 版本构建,但是现在将 BuildToolsVersion 更改为 27 ,如下图所示:

我正在使用 Android Studio 4.2.2 ,最近我更新了所有依赖项并且...

      sourceCompatibility JavaVersion.VERSION_1_10
      targetCompatibility JavaVersion.VERSION_1_10
to
compileOptions {
           sourceCompatibility kotlin_version
           targetCompatibility kotlin_version
         }

更新后出现此错误,请帮忙解决。

错误信息: Gradle构建错误截图


84
请勿附加代码/错误消息的截图/图像。请发布实际(相关的)代码+错误消息。 - Robert
1
当我将内联回调转换为lambda函数时,我开始遇到类似的问题。Intellj会询问它,但编译器不喜欢它。 - Gillis Haasnoot
6
很可惜原帖作者没有回来标记一个正确答案,尽管已经有一个。事实上,根据你使用的是Java 7、8还是10,这三个答案都是正确的。关键是你需要告诉构建系统你正在使用的语言级别。另外,页面上的屏幕截图几乎无法阅读。 - Thomas Carlisle
1
那对我没用。但是将它添加到模块的 build.gradle 中确实有效。请参见 Galley 的 12 月 19 日评论。项目网址为 https://github.com/jrasor/ftc_5197all2019;模块名为 TeamCode。 - John Rasor
2
“你的代码截图并不有用”,同样,“你的异常截图也没有帮助”。 - EJoshuaS - Stand with Ukraine
这些截图很有用。我想比较他的minSdkVersion。如果你将minSdkVersion提高到26,你就不会遇到这个问题了。 - Martin Berger
5个回答

2386

4
即使Gradle构建指示失败在另一个模块中,事实上似乎也是如此。如果模块A有声明,但B没有,则有时对我来说会在A中失败。在我将其添加到B后,它就不再失败了。 - avalancha
164
Android Studio开发者需要更改这个错误描述。这个“错误:Invoke-customs仅从Android O(-min-api 26)开始支持”没有提供任何信息。非常感谢您分享您的研究结果,您节省了其他人的时间。 - Zeeshan
3
在将Apache Commons Lang库添加到项目中后,我遇到了这个错误。然后在添加上述代码之后,我的错误得到了解决。谢谢。 - Saeid Z
1
等等!!这怎么能在Android Studio中设置为默认值呢?我不想在每个项目中都使用它。 - Ümañg ßürmån
1
修好了,感谢你发帖而不是像有些人那样说“没事我修好了”。 - fizgig
显示剩余7条评论

53

如果 compileOptions 无法正常工作,请尝试以下方法

禁用 'Instant Run'。

Android Studio -> 文件 -> 设置 -> 构建、执行、部署 -> Instant Run -> 禁用复选框


7
只有这种方法适用于我。这似乎是 Android Studio 的一个错误,非常令人恼火。即时运行是一个必需的功能 - 请问有谁知道如何解决此错误并使用即时运行? - AlexVPerl
3
即时运行功能是一个大麻烦。由于这个并不是非常有用的节省时间的工具,我不知道自己浪费了多少时间。我总是最终禁用它在我的所有项目中。我认为它并不是非常必要。 - Rubén Viguera
3
在更新到Android Studio 3.4和Gradle 5.1后,我遇到了同样的问题。禁用即时运行功能解决了问题!谢谢。 - Henrique
8
我在我的Android Studio中找不到这个选项。细节如下 - (Android Studio 3.5.1 Build # AI-191.8026.42.35.5900203,于2019年9月26日构建 JRE:1.8.0_202-release-1483-b03 amd64 JVM:由JetBrains s.r.o提供的OpenJDK 64位服务器VM Windows 10 10.0) - Nikhil Girraj
这是哪个版本的Android Studio? - gumuruh

30
在我的情况下,错误仍然存在,因为我的系统使用了升级的Java。 如果你正在使用Java 10,则修改compileOptions:
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_10
    targetCompatibility JavaVersion.VERSION_1_10

}

16
等一下,我们可以将目标定为在安卓开发中使用Java 10吗? - kassim
6
是的,@kassim ctrl click 版本以查看其他版本。 - Lucem

24
如果您使用的是Java 7,则将以下代码片段包含在应用级别的build.gradle中:
compileOptions {

    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7

}

4
根据错误信息中报告的最小 API,还需要设置 minSdkVersiontargetSdkVersion。请在 build.gradle 中进行如下配置:defaultConfig { applicationId "com.mypack.myapp" **minSdkVersion 26** targetSdkVersion 29 versionCode 1 versionName "1.0" ... } - Pascal Chardon
使用相同的解决方案适用于Java 8,更改为:VERSION_1_8。 - Elletlar
编译选项 { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } 前往 build.gradle 并添加此文件 - Aqif

1
尝试降级一个或多个库(Gradle依赖项)。最新版本通常对向后兼容性支持较少。
例如:

build.gradle

dependencies {
    // Version 2.5.1 was released on 27 July 2022
    // This will produce the error:
    // "Invoke-customs are only supported starting with android 0 --min-api 26"
    // if you're using minSdkVersion 21 (Android 5.0)
    implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
}

如果您将此特定库降级到2.2.0版本,它将修复该错误。

build.gradle

dependencies {
    // Version 2.2.0 was released on 22 Jan 2020
    // This will fix the error:
    // "Invoke-customs are only supported starting with android 0 --min-api 26"
    implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.2.0'
}

你可以在这里查看可用的版本和发布日期:https://maven.google.com/

是的,对我来说改变Java版本没有帮助。我不得不将google-services版本从4.4.0降级到4.3.15。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接