web-dev-qa-db-ja.com

Android開発にJava 8を使用することは可能ですか?

Webを検索して、Java 8がAndroid開発でサポートされているかどうかは不明です。

Java 8をダウンロード/設定する前に、Java 8がAndroid開発でサポートされているかどうかを示す「公式の」ドキュメントを参照してください。

574
nPn

Java 8

Androidは、すべてのJava 7言語機能と、プラットフォームのバージョンによって異なるJava 8言語機能のサブセットをサポートしています。

サポートされているJava 8の機能を確認する

Java 8言語機能を使う

Java 8言語機能のサポートを現在のjavacとdxのツールセットに直接追加し、Jackツールチェーンを廃止することにしました。この新しい方向性によって、Javaクラスファイルフォーマットに依存する既存のツールとプラグインは引き続き機能するはずです。今後、Java 8言語機能はAndroidビルドシステムによってネイティブにサポートされる予定です。今後数週間のうちに、これをAndroid Studioの一部として立ち上げることを目指しています。この決定を早めに皆さんと共有したいと思いました。

Android上でのJava 8言語機能サポートの将来

Eclipseユーザー:

Eclipseを好む古い開発者のために、 GoogleはEclipse Android Developer toolsのサポートを停止します

java 8 JDKをインストールしたなら、それを試してみてください。何か問題があるようでしたら、Eclipseのウィンドウメニュー→PreferencesJavaCompilerでコンパイラを1.6に設定してみてください。 Java 7も動作します。

Eclipse Preferences -> Java -> Compiler

Android 5.0以上をターゲットにしている場合は、Java 7以上が必要です。

複数のJDKをインストールしてみてください。

175
Eng. Samer T

更新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の機能をいくつか試してみるのはハックです。

341
ekcr1

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 8JDK 7の両方が開発マシンに共存している必要があります。以下の手順に従ってインストールしてください。

  • JDK 8アーリーアクセスプレビューページにアクセスする http://jdk8.Java.net
  • JDK 8u20をダウンロードしてインストールしてください。 JRE 8のインストールは不要で、スキップすることができます
  • JDK 7の最新の安定版リリースページ http://www.Oracle.com/technetwork/Java/javase/downloads/jdk7-downloads-1880260.html にアクセスしてください。
  • JDK 7u65をダウンロードしてインストールしてください。 JRE 7のインストールは必要ではなく、スキップすることもできます
  • JDK 8ホームフォルダーとJDK 8 binフォルダーを%PATH%変数に追加します
  • JDK 8ホームフォルダのパスの値を使用して、新しい環境変数Java_HOMEを作成します。
  • JDK 8ホームフォルダのパスの値を使用して、新しい環境変数Java8_HOMEをもう一度作成します。
  • JDK 7ホームフォルダのパスの値を使用して、新しい環境変数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

  • ADTをダウンロードして、その内容をフォルダに解凍します。 D:\adt
  • ADTインストールフォルダのパスの値を使用して、Android_HOMEという新しい環境変数を定義します。 D:\adt\sdk
  • Andoid SDK Platform ToolsおよびAndoid SDK Toolsフォルダを追加します。 D:\adt\sdk\toolsD:\adt\sdk\platform-tools、あなたの%PATH%変数へ
  • お望みならEclipse IDEへのショートカットを作成してください。それはあなたのADTインストールフォルダの下にあります。 D:\adt\Eclipse
  • Eclipse IDEを実行してワークスペースを作成します。 D:\adt\workspace
  • ツールバーにあるAndroid SDK Managerボタンをクリックしてください
  • Android SDK Build tools Rev. 19.1Android 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 GradleEclipse 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仮想デバイスのスクリーンショットです。

enter image description here

これは、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のインストールフォルダのパスの値を使用して、GRADLE_HOMEという新しい環境変数を定義します。 D:\adt\gradle
  • Gradleバイナリフォルダを追加します。 D:\adt\gradle\bin、あなたの%PATH%変数へ
  • 端末ウィンドウを開いてgradle -vコマンドを実行し、実行されていることを確認します。これで問題が解決した場合は、Java 8の機能を使用して最初のAndroidアプリを作成する準備ができています。

デモアプリ

前のセクションで説明したツールの使用方法を示すための簡単なアプリが作成されます。 Android Developer Toolsでラムダ式を使用する際の洞察を得るには、以下の手順に従ってください。

  • Eclipse IDEを実行し、File -> New -> Other -> Android -> Android Application Projectを選択して新しいAndroidアプリを作成します。
  • 以下のように表示されたフォームに記入してください。

enter image description here

  • 次のフォームのNextボタンをクリックし、最後のフォームのFinishボタンをクリックするだけです。 ADTがプロジェクトの読み込みを完了するまで待ちます
  • プロジェクトを右クリックしてNew -> Folderを選択し、buildersという名前を付けます。
  • gen (Generated Java Files)フォルダを右クリックして削除します。 Gradleはまもなく同じファイルを生成し、デフォルトのAntビルダーによって作成されたprojects build path. Thegen`フォルダーに追加します。そのフォルダーの下の成果物は不要になります。
  • buildersフォルダの下に次のバッチファイルを作成します。

    • gradle_build.cmd
    • gradle_post_build.cmd
    • gradle_clean.cmd
  • 次のようにこれらのバッチファイルを入力します。

gradle_build.cmd:

enter image description here

gradle_post_build.cmd:

enter image description here

gradle_clean.cmd:

enter image description here

  • Project -> Build Automaticallyメニューオプションの選択を解除
  • プロジェクトを右クリックしてProperties -> Buildersを選択し、ADTが提供するすべてのデフォルトビルダーを選択解除します
  • 同じウィンドウのNewボタンをクリックしてProgramを選択し、OKをクリックします。
  • 新しいビルダー設定ウィンドウが表示されます。以下のようにタブを埋めます。

新しいビルダー設定のMainタブ

enter image description here

新しいビルダー設定のRefreshタブ

enter image description here

新しいビルダー設定のEnvironmentタブ

enter image description here

新しいビルダー設定のBuild Optionsタブ

enter image description here

  • プログラムとして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プロジェクトの新建築者

enter image description here

  • プロジェクトを右クリックしてExportを選択します
  • Android -> Generate Gradle Build Filesを選択してNextをクリックします
  • 次のウィンドウでプロジェクトを選択してFinishをクリックします
  • プロジェクトのルートフォルダに移動し、ファイルgradlewgradlew.batを削除します。 gradleフォルダも削除します
  • Eclipseに戻り、Project -> Cleanメニューオプションを選択します。次のように表示されているフォームに入力します。

Clean Projectウィンドウ

enter image description here

  • OKをクリックして、クリーニングプロセスが完了するまで待ちます
  • setContentViewクラスのMainActivity関数の呼び出しの直後に、以下に示すJavaコードスニペットを追加します。

enter image description here

  • 次のようにbuild.gradleファイルの先頭をsourceCompatibilityセクションまで変更します。

enter image description here

  • プロジェクトを右クリックしてProperties -> Java Compilerオプションを選択し、すべての準拠レベルをJava 8に設定します。これにより、Eclipseはラムダ式などの新しいJava 8構造を認識します。
  • 通知ウィンドウでNoをクリックします
  • プロジェクトを右クリックしてBuild projectを選択します。 Eclipseがプロジェクトの構築を開始します。

ビルドプロセス  enter image description here

  • プロジェクトを右クリックしてProperties -> Java Build Pathに移動します。次のフォルダをビルドパスに追加します(以下の画像も参照)。

    • build\source\buildConfig\debug
    • build\source\r\debug

enter image description here

EclipseはR.JavaおよびbuildConfig.Javaファイルを認識できるようになり、プロジェクトのリソースファイルに関連するエラーを示すred dotsは表示されなくなります。

  • プロジェクトを右クリックしてからRun Configurationを選択して、Androidターゲットプラットフォーム用の新しいRun As -> Run Configurationsを作成します。たとえば、このデモアプリケーションはGenymotion VD上で次のように表示されます。

HelloLambdaアプリケーション

enter image description here

LogCatウィンドウで、単純なラムダ式を含むコードスニペットが正しく機能することを確認できます。

enter image description here

出典: Android開発者ツールでのJava 8 Lambda式の使用

99
Sufiyan Ghori

新しいアップデートについてはこのリンクをたどってください。 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コンパイラなし)。

42
user4774371

はい、AndroidはJava 8 Nowをサポートします(24.1.17)

今それは可能です

しかし、あなたはあなたのデバイス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プラグインを使用できます。

enter image description here

20
sivi

AndroidはJava 6から分岐したJavaを使用しています。

Android SDKバージョン19以降、これを行うことでJava 7の機能 を使用できます 。 Java 8はまだ完全にはサポートされていません(まだ)。

19
chaqke

AndroidはAndroid Nの時点でJava 8をサポートしています。

機能発表はこちら 、Java 8言語発表は次のとおりです。

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

14
Jay

ネイティブ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以上、インスタントランはサポートされていません)。

また、最小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()

これらの行をアプリケーションモジュールのbuild.gradleに追加して、プロジェクトに言語レベルを通知します。

 Android {
   compileOptions {
       sourceCompatibility JavaVersion.VERSION_1_8
       targetCompatibility JavaVersion.VERSION_1_8
   }

gradle.properties ファイルに次の行を追加して、Java 8言語機能のサポートを無効にします。

Android.enableDesugar=false

これで終わりです。これでネイティブのJava 8を使用できます。

12
Dhaval Jivani

Java 8を使うことができます:

  1. Build.gradle(Project:myProject)に以下を追加してください。

    classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version
    
  2. Build.gradle(Module:myModule)に以下を追加してください。

    apply plugin: 'me.tatarka.retrolambda'
    
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    
12
Vishal Raj

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

7
Idolon

私が2年近く前にこの質問をしたとき、答えは本当に「公式に」いいえでした、しかしekcr1の答えによって指摘されるように、あなたがretrolambaを使うならば動く最も期待される機能(ラムダ)の1つを得ることができます。 Android Studioは「プレビュー」モードだったので、私はまだEclipseを使っていましたので、私はこの道を追求しませんでした。

今日、私は「公式の」答えはまだノーだと思います、そしてretrolambaはまだ行くための良い方法のように思えますが、いくらか「非公式な」ルートを進んで行くことができる人々のための別の選択肢、すなわちKotlinがあります。

今日コトリンは1.0.0に達しました。 Kotlinに慣れていない人のために、より多くの情報はここにある彼らのウェブサイトで見つけることができます:

https://kotlinlang.org

またはJake Wharton氏による講演のこのビデオを見る

https://www.youtube.com/watch?v=A2LukgT2mKc

5
nPn

簡単な方法

AndroidプロジェクトでJava 1.8のサポートを有効にできます。

  • オープンプロジェクト構造

    • どちらでも Ctrl + Shift + Alt + S

    • またはFile > Project Structure

  • 「プロジェクト構造」ダイアログで、ソース互換性およびターゲット互換性1.8に更新します。示されているように(ファイル>プロジェクト構造をクリック)。

image

注:Java 1.8サポートは、Android Studio 3.0.0以降で有効にできます。詳しくは Documentation を参照してください。

4
Khemraj

最新ニュース:

Googleは、Android NとAndroid Studio 2.1以降で、プラットフォームがJava 8をサポートすることを発表しました。安定版のstudio 2.1もリリースされました。

最後に、ラムダ式を使うことができます。 forループにこれ以上リストフィルタはありません。 Horeeey.

4
asozcan

この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
    }
}
4
Ahmad Aghazadeh

はい。私たちはすぐに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

2
Ajay S

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

2
stamanuel

Java 8のサブセットがAndroid Studioでサポートされるようになりました。下のウィンドウからソースとターゲットの互換性を調整してください。

ファイル - >プロジェクト構造

Adjustment Window

詳細は以下のリンクにあります。

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

1
Fio

私は3年以上前にこの質問をしました、そして、明らかに答えは長年にわたって変化しました。上記の多くがすでに回答しているように、昔の時点では、回答は Yes になりました。当時は正解だったので、受け入れた回答を更新したことはありません。 (スタックオーバーフローポリシーがそれに基づいているのかわかりません)

まだこのトピックを探している人のために、もう1つの回答を追加したいと思いました。 2017年5月17日現在、Googleは Kotlin もAndroid開発用の official の言語であることを発表しました。

私は公式のプレスリリースを見つけられませんでした、しかし、私はそれが発表されたところでGoogle I/O ビデオ のいくつかを見ました。これはKotlinチームが発表したblog post へのリンクです。

1
nPn

私はStack Overflowで 類似の質問類似の質問 を書きましたが、ここにその答えの一部があります。

Android Studio 2.1:

新しいバージョンの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 Studio 2.1より前のバージョン:

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)
1
BlackHatSamurai

以下を追加することで私の問題は解決しました(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
    ...
}
1
Richard

上記のすべてのソリューションは、2019では最新のAndroid Studio 3.4 +では機能しないようです。

Android ProjectをJava 8に移行またはアップグレードするための完璧で最新のソリューションを見つけました。

ソリューション:をクリックしますファイル-> プロジェクト構造-> モジュール-> プロパティタブ。

ソース互換性およびターゲット互換性1.8(Java 8)に変更します

enter image description here

0
zackygaurav

この行をモジュールレベルのビルドグラドルに追加する

compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }

0
yuvrajsinh