23

最新の Android N sdk に更新しました。私が理解していない唯一のことは、なぜjava.time自分のコードにインポートできないのですか? Java8 は Android N で利用できると思っていました。では、なぜ Google はjava.timeパッケージを追加しなかったのでしょうか。

4

4 に答える 4

25

java.timeパッケージは API 26 (Android O) でのみ追加されました: https://developer.android.com/reference/java/time/package-summary.html

アップデート

ただし、バージョン 4.0 以降の Android Studio では、アプリの最小 API レベルを必要とせずjava.timeに、API のサブセットを (他の多くの Java 8 言語 API と共に)使用できます: https://developer.android.com/studio/preview /features#j8-desugar

このリリースでは、次の一連の API がサポートされています。

  • 順次ストリーム ( java.util.stream)
  • のサブセットjava.time
  • java.util.function
  • への最近の追加java.util.{Map,Collection,Comparator}
  • オプション ( java.util.Optionaljava.util.OptionalIntおよびjava.util.OptionalDouble) と、上記の API で役立つその他の新しいクラス
  • ( 、およびのjava.util.concurrent.atomic新しいメソッド)へのいくつかの追加AtomicIntegerAtomicLongAtomicReference
  • ConcurrentHashMap(Android 5.0 のバグ修正を含む)

これらの言語 API のサポートを有効にするには、次の行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.4'
}
于 2017-04-05T19:39:08.937 に答える
21

Android N は、Java 8 のすべての機能をサポートしているわけではありません。次の機能のみがサポートされています。

  • デフォルトおよび静的インターフェース メソッド
  • ラムダ式
  • 繰り返し可能な注釈

リフレクションおよび言語関連の API:

  • java.lang.FunctionalInterface
  • java.lang.annotation.Repeatable
  • java.lang.reflect.Method.isDefault()

および、次のような反復可能なアノテーションに関連付けられたリフレクション API AnnotatedElement.getAnnotationsByType(Class)

ユーティリティ API:

  • java.util.function

詳細については、次のリンクを確認してください: http://developer.android.com/preview/j8-jack.html

于 2016-03-16T06:44:53.120 に答える