最新の Android N sdk に更新しました。私が理解していない唯一のことは、なぜjava.time
自分のコードにインポートできないのですか? Java8 は Android N で利用できると思っていました。では、なぜ Google はjava.time
パッケージを追加しなかったのでしょうか。
4 に答える
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.Optional
、java.util.OptionalInt
およびjava.util.OptionalDouble
) と、上記の API で役立つその他の新しいクラス- ( 、およびの
java.util.concurrent.atomic
新しいメソッド)へのいくつかの追加AtomicInteger
AtomicLong
AtomicReference
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'
}
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