Webを検索すると、Java 8がAndroid開発でサポートされているかどうかは不明です。
Java 8をダウンロード/セットアップする前に、Java 8がAndroid開発でサポートされている、またはサポートされていないことを示す「公式」ドキュメントを参照してください。
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開発者ツールのサポートを停止します
Java 8 JDKをインストールした場合は、試してみてください。問題が発生した場合は、ウィンドウメニュー→ 設定 → Java → コンパイラからEclipseでコンパイラを1.6に設定してみてください。Java 7も機能します。
Android 5.0以降を対象とする場合は、Java 7以降が必要です。
複数のJDKをインストールして試してください。
UPDATE 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をサポートしていません。Java7までしかサポートしていません(キットカットを使用している場合)。それでも、invokedynamicはなく、新しい構文シュガーだけがあります。
AndroidのJava 8の主要機能の1つであるラムダを使用する場合は、gradle-retrolambaを使用できます。これは、Java 8バイトコードをJava 6/7に戻すツールであるretrolambdaを統合するGradleビルド依存関係です。基本的に、Android Studioでコンパイラを設定してJava 8バイトコードをコンパイルし、ラムダを許可すると、Java 6/7バイトコードに変換され、次にdalvikバイトコードに変換されます。公式サポートの代わりにAndroidでJDK 8の機能を試してみたい場合のハックです。
try-with-resources
キットカット以降のみ機能します。
確かに、gradle-retrolamba
gradleビルド依存関係を使用して、Android開発にJava 8を使用できます。
以下は、Android開発用のラムダ式を実行するために最近フォローした完全なガイドです。このガイドの元のソースは最後に記載されています。
このガイドでは、特にEclipse IDEを対象として、Java 8の機能をAndroid開発ツールに組み込む方法を示します 。ただし、このガイド全体で説明する手順は、Googleの新しい蜂起開発環境であるAndroid Studioにも適用される場合があります。これは、JetBrainsによる人気のIntelliJ Idea IDEのコミュニティエディションに基づいており、このガイドが作成される少し前の2014年7月上旬に、Googleによって「ベータ」バージョンに最近アップグレードされました。Eclipseは少なくともしばらくの間は卓越した開発環境のままであり、ほとんどのAndroidプロジェクトがEclipseを使用して開発されているという事実を考えると、ラムダ式などの新しいJava 8機能をADTに導入する方法は、開発者にとって非常に役立つようです。
Android Developmentは、2011年に終了したApache Harmony Projectと呼ばれるカスタムJava実装に基づいています。AndroidDevelopmentで最もよく使用されるJava構文はJava 6(v1.6)であり、Java 7(v1.7)も部分的にサポートされていますKitKatエディション(Android 4.4。+)。したがって、ラムダ式などのJava 8機能は、開発ツールに微調整を適用しない限り、Androidアプリ開発で直接使用できません。幸いなことに、これらの構成要素は基本的にいくつかの「構文糖」の拡張機能であり、開発者に「匿名クラス」などの欠点を与え、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にはレイアウトフォルダーの作成などの問題があるように見えるため、ADTバージョン22.6.2に基づいています。この問題の詳細は、次のリンクにあります。
http://code.google.com/p/android/issues/detail?id=72591
このガイドの手順は、Windows 8.1、64ビット開発マシン用ですが、他のプラットフォームに簡単に適合させることができます。新しいビルドシステムGradle
はビルド/クリーンプロセスに使用され、そのインストール手順も提供されます。また、両方JDK 8
とJDK 7
開発マシン上で共存しなければなりません。これらをインストールするには、以下の手順に従う必要があります。
bin
フォルダーを%PATH%
変数に追加するJAVA_HOME
JDK 8ホームフォルダーのパスの値で新しい環境変数を作成します。JAVA8_HOME
JDK 8ホームフォルダーのパスの値を使用して、新しい環境変数を再度作成します。JAVA7_HOME
JDK 7ホームフォルダーのパスの値で新しい環境変数を作成します。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
ADTインストールフォルダーのパスの値で呼び出される新しい環境変数を定義します。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構文拡張機能を認識させred dots
、Javaコードエディターの煩わしさを解消します。Help -> Install New Software
Eclipse を介してインストールされる場合があります。フィールドにhttp://download.eclipse.org/eclipse/updates/4.3-P-builds/と入力し、Work with
インストールを続行します。
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仮想デバイス:Android Virtual Device
ADTに付属するデフォルトの優れた代替品です。AVDは煩わしく煩わしく、理由もなくクラッシュし続けます。Genymotionを使用CyanogenMod
すると、Oracle VirtualBoxで実行されるイメージを使用してAndroid VDを準備できます。シングルユーザーライセンスは無料で、http://www.genymotion.comからダウンロードできます。ログインのみが必要で、Eclipseに統合することもできます。詳細は以下にあります:
https://cloud.genymotion.com/page/doc/#collapse8
以下は、Android 4.3ベースのCyanogenMod仮想デバイスのスクリーンショットです。
これは、x86またはx64ベースのパーソナルコンピューターで実行される完全なAndroidデバイスと見なすことができます。Google PlayStore
この仮想デバイスのようにGoogleサービスを使用するには、使用gapps
するAndroidバージョンのイメージをデバイスにフラッシュする必要があります。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
Gradleインストールフォルダーのパスの値で呼び出される新しい環境変数を定義します。D:\adt\gradle
D:\adt\gradle\bin
、あなたに、%PATH%
変数gradle -v
コマンドを実行し、コマンドが実行されていることを確認します。この時点まで正常に起動している場合は、Java 8機能を使用して最初のAndroidアプリを作成する準備ができていることを意味します。前のセクションで説明したツールの使用法を示す簡単なアプリを作成します。以下の手順に従うだけで、Android開発者ツールでラムダ式を使用する方法を理解できます。
File -> New -> Other -> Android -> Android Application Project
Next
、次のフォーム上のボタンをクリックし、Finish
最後の上のボタンを。ADTがプロジェクトのロードを完了するまで待ちますNew -> Folder
、名前を付けますbuilders
gen (Generated Java Files)
フォルダを右クリックして削除します。Gradleはすぐに同じファイルをs build path. The
生成し、デフォルトのAntビルダーによって作成されたプロジェクトの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
使用する2番目のビルダーを作成しますgradle_post_build.cmd
。このビルダーの他のすべての設定は、以前に作成したビルダーとまったく同じでなければなりません。このビルダーは、ビルドプロセスで作成されたアーティファクトをbin
フォルダーにコピーします。Gradle_Cleaner
使用するという3番目のビルダーを作成しますgradle_clean.cmd
。Run the builder
最終タブの設定のみをとして設定する必要がありますDuring a Clean
。このビルダーの他のすべての設定は、最初のビルダーとまったく同じでなければなりません。このビルダーは、名前が示すように、ビルドプロセスによって作成されたアーティファクトをクリーニングする責任があります。HelloLambda
プロジェクトの新しいビルダー
Export
Android -> Generate Gradle Build Files
してクリックNext
Finish
gradlew
とを削除しますgradlew.bat
。gradle
フォルダも削除Project -> Clean
メニューオプションを選択します。次のように表示されるフォームに入力します。Clean Project
窓
OK
、クリーニングプロセスが完了するまで待ちますsetContentView
function の呼び出しの直後に、以下に示すJavaコードスニペットを追加しますMainActivity
。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プレビューリリースAndroidのサポート制限の機能のJava 8は、参照するJava 8言語機能を
これらの機能の使用を開始するには、Android Studio 2.1 およびAndroid N Preview SDK をダウンロードしてセットアップする必要があります。これには、必要なJackツールチェーンと更新されたAndroid Plugin for Gradleが含まれています。Android NプレビューSDKをまだインストールしていない場合は、Android N 用に開発するためのセットアップを参照してください。
サポートされているJava 8言語機能とAPI
Androidは現在、すべてのJava 8言語機能をサポートしているわけではありません。ただし、Android Nプレビューをターゲットとするアプリを開発する場合は、次の機能を利用できます。
ラムダ式(APIレベル23以下でも使用可能)
メソッド参照(APIレベル23以下でも利用可能)
Androidがサポートする追加のJava 8機能がいくつかあります。Java8言語機能から詳細を確認できます
更新
注:Android Nは、ラムダ式の実装を匿名クラスに基づいています。このアプローチにより、以前のバージョンのAndroidで下位互換性があり、実行可能になります。以前のバージョンでラムダ式をテストするには、必ずbuild.gradleファイルに移動し、compileSdkVersionおよびtargetSdkVersionを23以下に設定してください。
アップデート2
Android Studio 3.0の安定版リリースで、Java 8ライブラリとJava 8言語機能がサポートされました(Jackコンパイラーなし)。
minSdkVersion
か?
今では可能です
ただし、デバイスのromをJava 1.8で実行し、「jackOptions」を有効にして実行する必要があります。ジャックは、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(まだ)の完全なサポートはありません。
ネイティブ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
完了です!これで、ネイティブjava8を使用できます。
Android Nでは、Android 8が正式にJava 8をサポートしています。
機能の発表はこちら、Java 8言語の発表は次のとおりです。
改善されたJava 8言語サポート -Java 8言語機能をAndroidに提供できることを嬉しく思います。AndroidのJackコンパイラーを使用すると、GingerbreadまでのAndroidバージョンでラムダなどを含む多くの一般的なJava 8言語機能を使用できるようになります。新機能により、定型コードを削減できます。たとえば、ラムダは、イベントリスナーを提供するときに匿名の内部クラスを置き換えることができます。一部のJava 8言語機能(デフォルトおよび静的メソッド、ストリーム、関数インターフェースなど)も、N以降で使用できるようになりました。Jackを使用することで、下位互換性を維持しながら、Java言語をより厳密に追跡できることを楽しみにしています。
以下を使用してJava 8を使用できます。
build.gradle(プロジェクト:myProject)に以下を追加します
classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version
build.gradle(モジュール:myModule)に以下を追加します
apply plugin: 'me.tatarka.retrolambda'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
2020年1月17日更新
Android Studio 4.0は、アプリに最低限のAPIレベルを必要とせずに、desugaringと呼ばれる手法を使用して、いくつかの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をサポートするために、D8は、不足しているAPIの実装を含み、それをアプリに含める個別のライブラリDEXファイルをコンパイルします。脱糖プロセスは、実行時にこのライブラリを代わりに使用するようにアプリのコードを書き換えます。
これらの言語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年の元の投稿
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.4.0-alpha6
)。回答の引用ブロックを確認してください。
AndroidプロジェクトのJava 1.8サポートを有効にできます。
プロジェクト構造を開く
どちらかを押して Ctrl + Shift + Alt + S
または File > Project Structure
図のように、[プロジェクト構造]ダイアログで[ ソース互換性]と[ ターゲット互換性]を1.8に更新します([ファイル]> [プロジェクト構造]をクリックします)。
またはgradleを使用できます
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
プロジェクトを同期します。以上です!
注: Java 1.8のサポートは、Android Studio 3.0.0以降で有効にできます。詳細については、ドキュメントを参照してください。
ほぼ2年前にこの質問をしたとき、答えは「公式に」いいえでしたが、ekcr1の答えで指摘されているように、retrolambaを使用すれば、最も期待される機能(ラムダ)の1つを機能させることができます。当時はAndroid Studioが「プレビュー」モードだったので、私はまだ日食を使用していたので、この道をたどることはありませんでした。
今日、私は「公式」の答えはまだノーだと思います。レトロランバはまだ良い方法のように思えますが、やや「非公式」の道を進んで進んで行こうとする人のための別のオプション、すなわちKotlinがあります。
今日、Kotlinは1.0.0に達しました。Kotlinに慣れていない人のために、より多くの情報はここにある彼らのウェブサイトで見つけることができます:
または、Jake Whartonによるトークのutubeビデオをご覧ください
この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
}
}
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を使用します!
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
私が書いた同様の答えをする同様の質問スタックオーバーフローのが、ここではその答えの一部です。
Android Studio(2.1)の新しいバージョンは、Java 8機能をサポートしています。以下は、Android Developers blogspot投稿からの抜粋です。
... Android Studio 2.1リリースには、新しいJackコンパイラのサポートとJava 8のサポートが含まれています。
...
N Developer Previewで開発するときにJava 8言語機能を使用するには、Jackコンパイラーを使用する必要があります。新規プロジェクトウィザード[ファイル→新規→プロジェクト]は、Nをターゲットとするプロジェクトの正しい構成を生成します。
AndroidはまだJava 1.8をサポートしていません(1.7までしかサポートしていません)。そのため、ラムダなどのJava 8機能を使用できません。
この回答では、Android Studioの互換性について詳しく説明しています。それは述べています:
AndroidのJava 8の主要機能の1つであるラムダを使用する場合は、gradle-retrolambaを使用できます。
の使用について詳しく知りたい場合はgradle-retrolambda
、この回答で詳細を説明します。
"SDK Location"
(これはMac FWIWにあります)"/Users/me/Library/Android/sdk"
に、Java8を使用していますか-Java8の使用方法は?ありがとう!
もう少し最新のものを探している人のために、更新された回答を投稿すると思いました。
現在、AndroidとAndroid StudioはJava 8機能のサブセットをサポートしています。ウェブサイトにある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)を対象とするアプリを開発する場合は、次の機能を使用できます。
- デフォルトおよび静的インターフェースメソッドLambda式(APIレベル23以下でも使用可能)
- 繰り返し可能な注釈
- メソッド参照(APIレベル23以下でも利用可能)
- タイプ注釈(APIレベル23以下でも使用可能)
さらに、次のJava 8言語APIも使用できます。
リフレクションおよび言語関連のAPI:
- java.lang.FunctionalInterface
- java.lang.annotation.Repeatable
- java.lang.reflect.Method.isDefault()およびAnnotatedElement.getAnnotationsByType(Class)などの繰り返し可能なアノテーションに関連付けられたリフレクションAPI
ユーティリティAPI:
- java.util.function
- java.util.stream
新しいJava 8言語機能を使用するには、Jackツールチェーンも使用する必要があります。この新しいAndroidツールチェーンは、Java言語ソースをAndroidで読み取り可能なDEXバイトコードにコンパイルし、独自の.jackライブラリ形式を備えており、単一のツールの一部としてほとんどのツールチェーン機能を提供します:再パッケージ化、縮小、難読化、およびmultidex
以下は、Android DEXファイルの作成に使用される2つのツールチェーンの比較です。
Legacy javac toolchain: javac (.java → .class) → dx (.class → .dex) New Jack toolchain: Jack (.java → .jack → .dex)
私は3年以上前にこの質問をしましたが、明らかに答えは何年にもわたって変化しています。上記の多くがすでに回答しているように、いつか戻って、回答は[ はい]になりました。正解だったため、承認された回答を更新したことはありません。(スタックオーバーフローのポリシーが何であるかはわかりません)
このトピックをまだ検索している人のために別の答えを追加したかっただけです。2017年5月17日の時点で、Google はKotlinもAndroid開発の公式言語であることを発表しました。
公式のプレスリリースは見つかりませんでしたが、発表されたGoogle I / O ビデオをいくつか見ました。これは、発表に関するKotlinチームのブログ投稿へのリンクです。
次のコードを追加すると、問題が修正されました(Android studio 2.3.2)。
build.gradle(プロジェクト)
buildscript {
repositories {
...
jcenter()
}
dependencies {
...
classpath 'me.tatarka:gradle-retrolambda:3.4.0' // DEPENDENCY
...
}
}
build.gradle(モジュール:アプリ)
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
...
}
Java 8のサブセットがAndroid Studioでサポートされるようになりました。下のウィンドウからソースとターゲットの互換性を調整するだけです。
ファイル->プロジェクト構造
詳細については、以下のリンクを参照してください。
https://developer.android.com/studio/write/java8-support.html
更新2019/10/28
Android Studio 4.0はこの問題を解決します。
D8コンパイラは、コンパイル時にJava 8ネイティブAPIのバックポートをAPKにパッチし、アプリは実行時にネイティブAPIではなくそのコードを使用します。プロセスはdesugaringと呼ばれています。
はい、Android StudioでJava 8言語機能を使用できますが、バージョンは3.0以降である必要があります。Android StudioでJava 8機能を使用する方法については、この記事をお読みください。
https://bijay-budhathoki.blogspot.com/2020/01/use-java-8-language-features-in-android-studio.html