Webを検索して、Java 8がAndroid開発でサポートされているかどうかは不明です。
Java 8をダウンロード/設定する前に、Java 8がAndroid開発でサポートされているかどうかを示す「公式の」ドキュメントを参照してください。
Androidは、すべてのJava 7言語機能と、プラットフォームのバージョンによって異なるJava 8言語機能のサブセットをサポートしています。
サポートされているJava 8の機能を確認する
Java 8言語機能のサポートを現在のjavacとdxのツールセットに直接追加し、Jackツールチェーンを廃止することにしました。この新しい方向性によって、Javaクラスファイルフォーマットに依存する既存のツールとプラグインは引き続き機能するはずです。今後、Java 8言語機能はAndroidビルドシステムによってネイティブにサポートされる予定です。今後数週間のうちに、これをAndroid Studioの一部として立ち上げることを目指しています。この決定を早めに皆さんと共有したいと思いました。
Eclipseを好む古い開発者のために、 GoogleはEclipse Android Developer toolsのサポートを停止します
java 8 JDKをインストールしたなら、それを試してみてください。何か問題があるようでしたら、Eclipseのウィンドウメニュー→Preferences→Java→Compilerでコンパイラを1.6に設定してみてください。 Java 7も動作します。
Android 5.0以上をターゲットにしている場合は、Java 7以上が必要です。
複数のJDKをインストールしてみてください。
更新2017/11/04 - Android Studio 3.0は、Java 8をネイティブサポートしています。 gradle-retrolambda
は、現在は必要ありません。 https://developer.Android.com/studio/write/Java8-support.html を参照してください。
gradle-retrolambda
を使用している場合は、上記のリンクにも移行手順が含まれています。下のオリジナルの答え:
AndroidはJava 8をサポートしていません。KitKatをお持ちの場合は、Java 7までしかサポートされていません。それでもinvokeynamicはサポートされておらず、新しい構文糖だけがサポートされています。
AndroidのJava 8の主な機能の1つであるラムダを使用したい場合は、 gradle-retrolamba を使用できます。これはretrolambda、Java 8バイトコードをJava 6/7に変換するツールを統合した、グラドルビルド依存関係です。基本的に、Android StudioでJava 8バイトコードをコンパイルするように設定してラムダを許可すると、それはJava 6/7バイトコードに変換され、次にdalvikバイトコードに変換されます。公式のサポートの代わりにAndroidでJDK 8の機能をいくつか試してみるのはハックです。
Android開発にJava 8を使用するには、gradle-retrolamba
gradle build dependencyを使用することができます。
以下は、私がAndroid開発のためにラムダ式を実行するために最近従った完全なガイドです。このガイドの元の情報源は最後に述べられています。
このガイドでは、いくつかの Java 8 機能をAndroid開発ツールに取り込むための方法、特にEclipse IDEを目的とした方法について説明します。ただし、このガイド全体で説明する手順は、Googleの新しい急成長中の開発環境であるAndroid Studioにも適用できます。これはJetBrainsによるIntelliJ Idea IDEのコミュニティ版に基づいており、このガイドが書かれる少し前の2014年7月上旬にグーグルによって最近「ベータ」バージョンにアップグレードされました。 Eclipseは少なくともしばらくの間、卓越した開発環境として残るでしょう。そして、ほとんどのAndroidプロジェクトがEclipseを使って開発されているという事実を考えると、ラムダ式のような新しいJava 8機能をADTに取り入れる方法は開発者にとって非常に役に立つようです。
Android開発は、2011年に終了したApache Harmonyプロジェクトと呼ばれるカスタムJava実装に基づいています。Android開発で最も一般的に使用されているJava構文は、Java 6(v1.6)およびJava 7(v1.7)でも部分的にサポートされています。キットカット版(Android 4.4。+)。したがって、ラムダ式などのJava 8の機能は、開発ツールにいくつかの調整を加えずにAndroid App Developmentで直接使用することはできません。幸いなことに、これらの構成要素は基本的に開発者に「匿名クラス」のようなものの欠点を与える「構文糖」の拡張であり、それらはJava 6またはJava 7クラスに翻訳することができます。
Java 8のソースコードをそれ以前のバージョンのJavaに変換するための最近のアプローチは RetroLambda です。このライブラリにより、開発者は、Java 7以下のラムダ式でJava 8コードを実行できます。残念ながら、ラムダ式以外のJava 8の機能は、今のところRetroLambdaではサポートされていませんが、ラムダ式の概念はJava 8プラットフォームでの最大の飛躍であり、とにかくAndroid開発者にとっては素晴らしいツールです。
このライブラリの詳細はGitHubページにあります。
https://github.com/orfjackal/retrolambda#getting-started
また、別の開発者によって作成されたRetroLambda用のGradleプラグインを使用すると、GradleベースのビルドをJavaプロジェクトまたはAndroidプロジェクトに実装できます。ただし、開発者はこのプラグインをAndroid Studio環境に統合することについてのみ言及しています。詳細はGitHubページにあります。
https://github.com/evant/gradle-retrolambda
Eclipseベースの開発環境内でこれらのインフラストラクチャを使用することは、直接アプローチすることはできませんが、実行可能であり、このガイド全体を通して実証されます。
このガイドは、読者がAndroid開発についての基本的な知識を持っていることを前提としています。最近のADTバージョン23.0.2にはレイアウトフォルダの作成などの問題があるようです。この問題に関する詳細は、次のリンクにあります。
http://code.google.com/p/Android/issues/detail?id=72591
このガイドの手順はWindows 8.1、64-bit開発用マシン用ですが、他のプラットフォームにも簡単に適用できます。新しいビルドシステムGradle
はビルド/クリーンプロセスに使用され、そのインストール手順も提供されます。また、JDK 8
とJDK 7
の両方が開発マシンに共存している必要があります。以下の手順に従ってインストールしてください。
bin
フォルダーを%PATH%
変数に追加しますJava_HOME
を作成します。Java8_HOME
をもう一度作成します。Java7_HOME
を作成します。Java -version
コマンドを実行し、Java 8が起動して実行中であることを確認します。javac -version
コマンドを実行し、JDK 8 Javaコンパイラも起動して実行中であることを確認します。さて、次のリンクからADT-22.6.2をダウンロードする必要があります。
http://dl.google.com/Android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.Zip
D:\adt
Android_HOME
という新しい環境変数を定義します。 D:\adt\sdk
Andoid SDK Platform Tools
およびAndoid SDK Tools
フォルダを追加します。 D:\adt\sdk\tools
とD:\adt\sdk\platform-tools
、あなたの%PATH%
変数へD:\adt\Eclipse
D:\adt\workspace
Android SDK Manager
ボタンをクリックしてくださいAndroid SDK Build tools Rev. 19.1
とAndroid Support Library
のみを選択してください。他のすべてを選択解除して、これら2つのパッケージをインストールしてください。すべてうまくいけば、ADTは稼働します。
以下のツールのインストールも強くお勧めします:
Eclipse Kepler Java 8サポート:Eclipseに新しいJava 8構文拡張機能を認識させ、Javaコードエディタで厄介なred dots
を取り除くことができます。 EclipseのHelp -> Install New Software
を通してインストールされるかもしれません。 Work with
フィールドに http://download.Eclipse.org/Eclipse/updates/4.3-P-builds/ と入力して、引き続きインストールしてください。
Nodeclipse/Enide Gradle:主にGroovy言語のキーワードを強調するために使用されます。 GroovyはGradleビルドスクリプトのDSLとして使われています。このプラグインはEclipse Marketplace
を通してインストールすることができます。しかし、ADT-22.6.2内のEclipseにはEclipse Marketplace Client
が付いてきません。したがって、最初にEclipseのEclipse Marketplace Client
ツールを使用してInstall New Software
をインストールする必要があります。 Work with
フィールドにhttp //:download.Eclipse.org/mpc/kepler/を入力して、インストールを続けます。 Eclipse Marketplace Client
をインストールした後、Nodeclipse/Enide Gradle
でEclipse Marketplace Client
を検索してインストールすることができます。
Genymotion Virtual Device:これはADTに付随するデフォルトのAndroid Virtual Device
の素晴らしい代替品です。 AVDは煩わしい面倒で、理由もなくクラッシュし続けます。 Genymotionを使用すると、Oracle VirtualBoxによって実行されるCyanogenMod
イメージを使用してAndroid VDを準備できます。そのシングルユーザーライセンスは無料で、 http://www.genymotion.com からダウンロードできます。ログインのみが必要であり、それをEclipseに統合することもできます。詳細は以下にあります。
https://cloud.genymotion.com/page/doc/#collapse8
以下はAndroid 4.3ベースのCyanogenMod仮想デバイスのスクリーンショットです。
これは、x86またはx64ベースのパーソナルコンピュータ上で動作する、本格的なAndroidデバイスと見なすことができます。この仮想デバイスでGoogle PlayStore
などのGoogleサービスを使用するには、使用するAndroidバージョンのgapps
イメージをデバイスにフラッシュする必要があります。デバイス用の適切なgapps
イメージは、CyanogenModのWebサイトからダウンロードされる可能性があります。
http://wiki.cyanogenmod.org/w/Google_Apps
GradleのインストールはAndroid SDK自体によっても提供されるためオプションですが、個別のインストールを強くお勧めします。それのインストールはこれらのステップに従うことによって行われるかもしれません:
GradleのWebサイトにアクセスしてください。 http://www.gradle.org/
Downloads
をクリック
Previous Releases
の下でバージョン1.10を選択し、gradle-1.10-all.Zipまたはgradle-1.10-bin.Zipをダウンロードしてください。D:\adt\gradle
GRADLE_HOME
という新しい環境変数を定義します。 D:\adt\gradle
D:\adt\gradle\bin
、あなたの%PATH%
変数へgradle -v
コマンドを実行し、実行されていることを確認します。これで問題が解決した場合は、Java 8の機能を使用して最初のAndroidアプリを作成する準備ができています。前のセクションで説明したツールの使用方法を示すための簡単なアプリが作成されます。 Android Developer Toolsでラムダ式を使用する際の洞察を得るには、以下の手順に従ってください。
File -> New -> Other -> Android -> Android Application Project
を選択して新しいAndroidアプリを作成します。Next
ボタンをクリックし、最後のフォームのFinish
ボタンをクリックするだけです。 ADTがプロジェクトの読み込みを完了するまで待ちますNew -> Folder
を選択し、builders
という名前を付けます。gen (Generated Java Files)
フォルダを右クリックして削除します。 Gradleはまもなく同じファイルを生成し、デフォルトのAntビルダーによって作成されたprojects build path. The
gen`フォルダーに追加します。そのフォルダーの下の成果物は不要になります。builders
フォルダの下に次のバッチファイルを作成します。
次のようにこれらのバッチファイルを入力します。
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
Project -> Build Automatically
メニューオプションの選択を解除Properties -> Builders
を選択し、ADTが提供するすべてのデフォルトビルダーを選択解除しますNew
ボタンをクリックしてProgram
を選択し、OK
をクリックします。 新しいビルダー設定のMain
タブ
新しいビルダー設定のRefresh
タブ
新しいビルダー設定のEnvironment
タブ
新しいビルダー設定のBuild Options
タブ
Gradle_Post_Build
を使用するgradle_post_build.cmd
という2番目のビルダーを作成します。このBuilderの他のすべての設定は、以前に作成されたBuilderとまったく同じでなければなりません。このビルダーは、ビルドプロセスによって作成されたアーティファクトをbin
フォルダーにコピーする役割を果たします。Gradle_Cleaner
を使用するgradle_clean.cmd
という3番目のビルダーを作成します。最後のタブのRun the builder
設定のみをDuring a Clean
として設定する必要があります。このBuilderの他のすべての設定は、最初のBuilderとまったく同じでなければなりません。このビルダーは、その名のとおり、ビルドプロセスで作成されたアーティファクトを整理する責任があります。HelloLambda
プロジェクトの新建築者
Export
を選択しますAndroid -> Generate Gradle Build Files
を選択してNext
をクリックしますFinish
をクリックしますgradlew
とgradlew.bat
を削除します。 gradle
フォルダも削除しますProject -> Clean
メニューオプションを選択します。次のように表示されているフォームに入力します。Clean Project
ウィンドウ
OK
をクリックして、クリーニングプロセスが完了するまで待ちますsetContentView
クラスのMainActivity
関数の呼び出しの直後に、以下に示すJavaコードスニペットを追加します。build.gradle
ファイルの先頭をsourceCompatibility
セクションまで変更します。Properties -> Java Compiler
オプションを選択し、すべての準拠レベルをJava 8に設定します。これにより、Eclipseはラムダ式などの新しいJava 8構造を認識します。No
をクリックしますBuild project
を選択します。 Eclipseがプロジェクトの構築を開始します。ビルドプロセス
プロジェクトを右クリックしてProperties -> Java Build Path
に移動します。次のフォルダをビルドパスに追加します(以下の画像も参照)。
build\source\buildConfig\debug
build\source\r\debug
EclipseはR.Java
およびbuildConfig.Java
ファイルを認識できるようになり、プロジェクトのリソースファイルに関連するエラーを示すred dots
は表示されなくなります。
Run Configuration
を選択して、Androidターゲットプラットフォーム用の新しいRun As -> Run Configurations
を作成します。たとえば、このデモアプリケーションはGenymotion VD上で次のように表示されます。LogCat
ウィンドウで、単純なラムダ式を含むコードスニペットが正しく機能することを確認できます。
新しいアップデートについてはこのリンクをたどってください。 Java 8言語機能を使う
旧回答
Android N previewリリースAndroidサポートlimitedJava 8の機能_参照 Java 8言語機能
これらの機能の使用を開始するには、 Android Studio 2.1 および必要な Jack toolchainと更新されたGradle用のAndroid Pluginを含むAndroid N Preview SDKをダウンロードしてセットアップする必要があります。まだAndroid N Preview SDKをインストールしていない場合は、 Android N用に設定する を参照してください。
サポートされているJava 8言語機能およびAPI
Androidは現在、すべてのJava 8言語機能をサポートしているわけではありません。ただし、Android Nプレビューをターゲットにしたアプリケーションを開発するときに、次の機能が利用できるようになりました。
ラムダ式 (APIレベル23以下でも使用可能)
メソッド参照 (APIレベル23以下でも利用可能)
Androidがサポートするいくつかの追加のJava 8機能があります、あなたは から完全な詳細を見ることができます - Java 8言語機能
更新
注:Android Nは、ラムダ式の実装を匿名クラスに基づいています。このアプローチにより、以前のバージョンのAndroidで後方互換性があり実行可能になります。以前のバージョンでラムダ式をテストするには、必ずbuild.gradleファイルに移動し、compileSdkVersionおよびtargetSdkVersionを23以下に設定してください。
更新2
Android Studio 3.0の安定版リリースをサポートしました Java 8ライブラリとJava 8言語機能 (Jackコンパイラなし)。
今それは可能です
しかし、あなたはあなたのデバイスROMをJava 1.8上で動かし、それを動かすために "jackOptions"を有効にする必要があるでしょう。 Jackは、Java 8を実行する新しいAndroidコンパイラの名前です。
https://developer.Android.com/guide/platform/j8-jack.html
これらの行をbuild_gradleに追加してください。
Android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Java 8はAndroid studio 2.0の実行中のJavaエンジンのようですが、私がチェックした後もまだJava 8の構文を受け入れていません。そして今あなたはAndroid studioからコンパイラを選ぶことができません。ただし、Androidクライアントで関数型プログラミングメカニズムが必要な場合は、scalaプラグインを使用できます。
AndroidはJava 6から分岐したJavaを使用しています。
Android SDKバージョン19以降、これを行うことでJava 7の機能 を使用できます 。 Java 8はまだ完全にはサポートされていません(まだ)。
AndroidはAndroid Nの時点でJava 8をサポートしています。
機能発表はこちら 、Java 8言語発表は次のとおりです。
Java 8言語サポートの改善 - 私たちはJava 8言語機能をAndroidに持ち込むことに興奮しています。 AndroidのJackコンパイラを使用すると、GingerbreadにまでさかのぼるAndroidバージョンで、ラムダなどを含む、多くの一般的なJava 8言語機能を使用できます。新機能は定型コードを減らすのに役立ちます。たとえば、イベントリスナを提供するときに、ラムダは匿名の内部クラスを置き換えることができます。デフォルトおよび静的メソッド、ストリーム、機能インターフェースなど、いくつかのJava 8言語機能もN以上で使用可能になりました。 Jackでは、下位互換性を維持しながら、Java言語をより綿密に追跡することを楽しみにしています。
ネイティブJava 8がAndroidに登場!最後に!
各モジュールのbuild.gradleファイルからRetrolambdaプラグインとretrolambdaブロックを削除します。
Jackを無効にしてデフォルトのツールチェーンに切り替えるには、モジュールのbuild.gradleファイルからjackOptionsブロックを削除するだけです。
サポートされているJava 8言語機能の使用を開始するには、Androidプラグインを3.0.0(またはそれ以降)に更新してください。
Android Studio 3.0から、Java 8言語機能がAndroidでネイティブにサポートされるようになりました。
また、最小APIレベル24から、次のJava 8 APIが利用可能です。
これらの行をアプリケーションモジュールのbuild.gradleに追加して、プロジェクトに言語レベルを通知します。
Android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
gradle.properties ファイルに次の行を追加して、Java 8言語機能のサポートを無効にします。
Android.enableDesugar=false
これで終わりです。これでネイティブのJava 8を使用できます。
Java 8を使うことができます:
Build.gradle(Project:myProject)に以下を追加してください。
classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version
Build.gradle(Module:myModule)に以下を追加してください。
apply plugin: 'me.tatarka.retrolambda'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Android Studio 3.0は、いくつかのJava 8言語機能に対する組み込みサポートを提供し始めました。
また、APIレベル24から、次のJava 8 APIが利用可能になりました。
Java.util.stream
Java.util.function
Java.lang.FunctionalInterface
Java.lang.annotation.Repeatable
Java.lang.reflect.AnnotatedElement.getAnnotationsByType(Class)
Java.lang.reflect.Method.isDefault()
それに加えて、try-with-resources
サポートはすべてのAndroid APIレベルに拡張されました。
より多くのJava 8機能が将来追加されると約束されています。
サポートされているJava 8言語機能の使用を開始するには、Androidプラグインを3.0.0-alpha1(またはそれ以降)に更新して、モジュールのbuild.gradleファイルに次の行を追加します。
Android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
詳細については以下をご覧ください。
https://developer.Android.com/studio/write/Java8-support.html
私が2年近く前にこの質問をしたとき、答えは本当に「公式に」いいえでした、しかしekcr1の答えによって指摘されるように、あなたがretrolambaを使うならば動く最も期待される機能(ラムダ)の1つを得ることができます。 Android Studioは「プレビュー」モードだったので、私はまだEclipseを使っていましたので、私はこの道を追求しませんでした。
今日、私は「公式の」答えはまだノーだと思います、そしてretrolambaはまだ行くための良い方法のように思えますが、いくらか「非公式な」ルートを進んで行くことができる人々のための別の選択肢、すなわちKotlinがあります。
今日コトリンは1.0.0に達しました。 Kotlinに慣れていない人のために、より多くの情報はここにある彼らのウェブサイトで見つけることができます:
またはJake Wharton氏による講演のこのビデオを見る
AndroidプロジェクトでJava 1.8のサポートを有効にできます。
オープンプロジェクト構造
どちらでも Ctrl + Shift + Alt + S
またはFile > Project Structure
「プロジェクト構造」ダイアログで、ソース互換性およびターゲット互換性を1.8に更新します。示されているように(ファイル>プロジェクト構造をクリック)。
注:Java 1.8サポートは、Android Studio 3.0.0以降で有効にできます。詳しくは Documentation を参照してください。
最新ニュース:
Googleは、Android NとAndroid Studio 2.1以降で、プラットフォームがJava 8をサポートすることを発表しました。安定版のstudio 2.1もリリースされました。
最後に、ラムダ式を使うことができます。 forループにこれ以上リストフィルタはありません。 Horeeey.
このconfig build.gradleを追加してgradleを同期します。
Android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
// or
//sourceCompatibility 1.8
//targetCompatibility 1.8
}
}
はい。私たちはすぐにJava 8を使うでしょう!
Java 8言語機能のサポートを現在のjavacとdxのツールセットに直接追加し、Jackツールチェーンを廃止することにしました。この新しい方向性によって、Javaクラスファイルフォーマットに依存する既存のツールとプラグインは引き続き機能するはずです。今後、Java 8言語機能はAndroidビルドシステムによってネイティブにサポートされる予定です。今後数週間のうちに、これをAndroid Studioの一部として立ち上げることを目指しています。この決定を早めに皆さんと共有したいと思いました。
https://Android-developers.googleblog.com/2017/03/future-of-Java-8-language-feature.html
Googleは、Java 8がAndroidでネイティブにサポートされること、およびJackツールチェーンが廃止されることを発表しました。
Java 8言語機能のサポートを現在のjavacとdxのツールセットに直接追加し、Jackツールチェーンを廃止することにしました。この新しい方向性によって、Javaクラスファイルフォーマットに依存する既存のツールとプラグインは引き続き機能するはずです。今後、Java 8言語機能はAndroidビルドシステムによってネイティブにサポートされる予定です。今後数週間のうちに、これをAndroid Studioの一部として立ち上げることを目指しています。この決定を早めに皆さんと共有したいと思いました。
ここにより多くの情報: https://Android-developers.googleblog.com/2017/03/future-of-Java-8-language-feature.html
Java 8のサブセットがAndroid Studioでサポートされるようになりました。下のウィンドウからソースとターゲットの互換性を調整してください。
ファイル - >プロジェクト構造
詳細は以下のリンクにあります。
https://developer.Android.com/studio/write/Java8-support.html
私は3年以上前にこの質問をしました、そして、明らかに答えは長年にわたって変化しました。上記の多くがすでに回答しているように、昔の時点では、回答は Yes になりました。当時は正解だったので、受け入れた回答を更新したことはありません。 (スタックオーバーフローポリシーがそれに基づいているのかわかりません)
まだこのトピックを探している人のために、もう1つの回答を追加したいと思いました。 2017年5月17日現在、Googleは Kotlin もAndroid開発用の official の言語であることを発表しました。
私は公式のプレスリリースを見つけられませんでした、しかし、私はそれが発表されたところでGoogle I/O ビデオ のいくつかを見ました。これはKotlinチームが発表したblog post へのリンクです。
私はStack Overflowで 類似の質問 に 類似の質問 を書きましたが、ここにその答えの一部があります。
新しいバージョンのAndroid Studio(2.1)は、Java 8機能をサポートしています。これは Android Developers blogspot post からの抜粋です:
... Android Studio 2.1リリースには、新しい Jack compiler のサポートと Java 8 のサポートが含まれています。
...
N Developer Previewで開発するときにJava 8言語機能を使用するには、Jackコンパイラーを使用する必要があります。 New Project Wizard [File→New→Project]は、Nをターゲットとするプロジェクトの正しい設定を生成します。
AndroidはまだJava 1.8をサポートしていません(1.7までしかサポートしていません)ので、ラムダのようなJava 8の機能を使用することはできません。
この回答では、Android Studioの互換性についてさらに詳しく説明しています ;それは述べています:
AndroidのJava 8の主な機能の1つであるラムダを使用したい場合は、gradle-retrolambaを使用できます。
gradle-retrolambda
の使い方についてもっと知りたいのであれば、 この回答には詳細な説明があります です。
もう少し最新のものを探している人のために、私は更新された答えを投稿するだろうと考えました。
現在、AndroidとAndroid StudioはJava 8機能のサブセットをサポートしています。 Webサイト上 にあるAndroidの資料によると、Googleによると、
Java 8言語機能をサポートするには、Jackという新しいコンパイラーが必要です。 JackはAndroid Studio 2.1以降でのみサポートされています。そのため、Java 8言語機能を使用したい場合は、Android Studio 2.1を使用してアプリを構築する必要があります。
Android Studioがすでにインストールされている場合は、[ヘルプ]> [アップデートの確認]をクリックして(Macでは、[Android Studio]> [アップデートの確認])、必ず最新バージョンにアップデートしてください。ワークステーションにIDEがインストールされていない場合は、ここからAndroid Studioをダウンロードしてください。
サポートされているJava 8言語機能およびAPI
Androidは、すべてのJava 8言語機能をサポートしているわけではありません。ただし、Android 7.0(APIレベル24)をターゲットにしたアプリを開発する場合は、次の機能が利用できます。
- デフォルトおよび静的インターフェースメソッドラムダ式(APIレベル23以下でも使用可能)
- 繰り返し可能な注釈
- メソッド参照(APIレベル23以下でも利用可能)
- 型注釈(APIレベル23以下でも利用可能)
さらに、以下のJava 8言語APIも利用可能です。
リフレクションと言語関連のAPI
- Java.lang.FunctionalInterface
- Java.lang.annotation.Repeatable
- AnnotatedElement.getAnnotationsByType(Class)などの繰り返し可能な注釈に関連付けられたJava.lang.reflect.Method.isDefault()およびReflection API
ユーティリティAPI:
- Java.util.function
- Java.util.stream
新しいJava 8言語機能を使用するには、 Jack toolchain も使用する必要があります。この新しいAndroidツールチェーンは、Java言語ソースをAndroidで読み取り可能なDEXバイトコードにコンパイルし、独自の.jackライブラリフォーマットを持ち、単一のツールの一部としてほとんどのツールチェーン機能を提供します。
これは、Android DEXファイルを構築するために使用された2つのツールチェーンの比較です。
Legacy javac toolchain: javac (.Java → .class) → dx (.class → .dex) New Jack toolchain: Jack (.Java → .jack → .dex)
以下を追加することで私の問題は解決しました(Android studio 2.3.2)。
build.gradle(プロジェクト)
buildscript {
repositories {
...
jcenter()
}
dependencies {
...
classpath 'me.tatarka:gradle-retrolambda:3.4.0' // DEPENDENCY
...
}
}
build.gradle(モジュール:app)
apply plugin: 'com.Android.application'
apply plugin: 'me.tatarka.retrolambda' //PLUGIN
Android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
} // SET Java VERSION
...
}
この行をモジュールレベルのビルドグラドルに追加する
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }