Android Studio 3.1.4:不支持java.time.LocalDate

时间:2018-08-12 12:38:14

标签: android android-studio-3.0

Android Studio 3.1.4,Java 8,Gradle 4.4。

在我的build.gradle中:

        compileSdkVersion 26
        minSdkVersion 18
        targetSdkVersion 26

      compileOptions {
            targetCompatibility JavaVersion.VERSION_1_8
            sourceCompatibility JavaVersion.VERSION_1_8
        }

        implementation 'com.android.support:appcompat-v7:26.1.0'

在我的POJO中

import java.time.LocalDate;
import java.util.Date;
public class Product {
    private Date redeemed_date;
    private LocalDate myLocalDate;
}

我必须使用minSdkVersion 18,因为这是客户要求。

但是在构建时出现错误:

error: Field "myLocalDate" of type "java.time.LocalDate" is not supported.

2 个答案:

答案 0 :(得分:3)

自2020年4月起使用 Android Gradle Plugin 4.0.0 ,您可以启用对使用多种Java 8语言API的支持(请参阅所有受支持的API:https://developer.android.com/studio/write/java8-support-table

在任何版本的上启用对这些语言API的支持 Android平台,将Android插件更新为4.0.0(或更高版本), 在模块的build.gradle文件中添加以下内容:

android {
  defaultConfig {
    // Required when setting minSdkVersion to 20 or lower
    multiDexEnabled true
  }

  compileOptions {
    // Flag to enable support for the new language APIs
    coreLibraryDesugaringEnabled true
    // Sets Java compatibility to Java 8
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

dependencies {
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'
}

来源:https://developer.android.com/studio/write/java8-support

答案 1 :(得分:2)

The JavaDocs for LocalDate表明它是在API级别26中添加的。您的minSdkVersion在它的下面,因此LocalDate在您要运行的所有设备上均不受支持。

您的选择是:

  1. 将您的minSdkVersion提高到26,或

  2. 使用ThreeTenABP

  3. 之类的其他内容,例如Christopher recommended in a comment