【问题标题】:Error: Default interface methods are only supported starting with Nougat (--min-api 24) when NOT using them错误:不使用默认接口方法时,仅支持以 Nougat (--min-api 24) 开头
【发布时间】:2018-12-18 12:17:05
【问题描述】:

编译我的 libgdx 游戏时,我从 android-studio 收到以下错误:

Error: Default interface methods are only supported starting with 
Android N (--min-api 24): com.hgames.core.item.Item 
com.hgames.core.item.misc.MiscItem.deepClone()

我不明白,因为我不使用默认接口方法。我的代码用 JDK1.7 编译得很好。此处报告的错误涉及以下代码:

interface Item {

   Item deepClone()

} 

interface MiscItem extends Item {

  @Override
  MiscItem deepClone()

}

那里没有默认方法。请注意,如果我删除此覆盖,并在调用站点向 MiscItem 添加强制转换,编译器将报告到下一个错误(相同类型),因为我在许多地方都使用此模式。我正在使用 gradle 并在我的 build.gradle 文件中有以下内容:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

defaultConfig {
    minSdkVersion 9
    targetSdkVersion 15
    compileSdkVersion 15
    versionCode 1
}

我是 android-studio 的新手,因为我通常使用 Eclipse,但切换到 android-studio 以将我的游戏移植到 Android。所以也许我错过了一些愚蠢的东西,但我在任何地方都找不到任何帮助。

【问题讨论】:

  • 您是否尝试过按照question 中的说明使用 Java 8?
  • 是的,它解决了问题,但让我感到困惑;我需要指定比实际源支持更高的源兼容性^^谢谢!

标签: android gradle java-8 java-7


【解决方案1】:

正如 CommonsWare 所提到的,作为参考,在 build.gradle 的 android {...} 闭包中为您的 app 模块 解决问题:

android {
...
  compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
...
}

【讨论】:

    猜你喜欢
    • 2018-09-05
    • 2019-04-23
    • 2019-11-23
    • 2023-03-17
    • 2020-06-25
    • 2019-12-05
    • 2023-03-17
    • 2019-09-12
    • 2018-04-09
    相关资源
    最近更新 更多