web-dev-qa-db-ja.com

Java 8はAndroid api 24以上で動作しますか、それとも下位のapiで使用できますか?

Android Java 8言語機能 はAndroidでのみ機能api 24以降 =またはapi 24未満のAPIで使用できます。この機能を使用できる場合、apiの最小バージョン Androidサポートこれらの機能

15
user2577907

更新:Android St​​udio 2.4以降、Jackコンパイラは非推奨となり、Java 8サポートが終了しますデフォルトのビルドチェーンに統合されています。一部のJava 8の機能は、どのAPIレベルでも使用できますが、一部はAPI> = 24に制限されています。以下を参照してください:

https://developer.Android.com/studio/preview/features/Java8-support.html

古い答え:

Java 8機能 は、APIレベル9以降で使用できますが、Android St​​udio 2.1(プレビュー)とAndroid NプレビューSDKを使用する場合のみ

http://Android-developers.blogspot.de/2016/03/first-preview-of-Android-n-developer.html

Java 8言語サポートの改善-Java 8言語機能をAndroidに導入できることを嬉しく思います。 AndroidのJackコンパイラーを使用すると、GingerbreadまでのJavaバージョンで、ラムダなどを含む多くの一般的なAndroid 8言語機能を使用できるようになります。新機能により、定型コードを削減できます。たとえば、ラムダは、イベントリスナーを提供するときに匿名の内部クラスを置き換えることができます。一部のJava 8言語機能(デフォルトおよび静的メソッド、ストリーム、関数型インターフェースなど)も、N以降で使用できるようになりました。 Jackでは、下位互換性を維持しながらJava言語をより厳密に追跡できることを楽しみにしています。

19
tknell

更新
Jackツールチェーンは 非推奨 です。 Androidプラグインバージョン2.4.0-alpha4以降)を使用している場合、Java8機能が標準のツールチェーンに追加されます。詳細 こちら

元の回答Java 8つの機能は、ラムダを除いてAPI N以降で使用できます。ラムダはバックポートされます(匿名クラスを使用)Gingerbreadに戻ります。

Android Nは、ラムダ式の実装を匿名クラスに基づいています。このアプローチにより、以前のバージョンのAndroidで下位互換性と実行性を実現できます。

これをテストするには、Android Studio 2.1プレビュー、JDK 8のインストール、最新のビルドツールが必要です。

ビルド構成の例:

Android {
    compileSdkVersion 23
    buildToolsVersion "24.0.0 rc1"

    defaultConfig {
        minSdkVersion 23
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        jackOptions {
            enabled true
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
6
LordRaydenMK