Androidの開発はJava 8の新特性を使用しています.


AndroidはすべてのJava 7言語機能と一部のJava 8言語機能をサポートしています.本論文では、これらの機能を使用するために使用できる新しい言語機能と、どのように適切にプロジェクトを構成するか、およびあなたが遭遇する可能性のあるすべての既知の問題を紹介します.
注:
Androidのためのアプリケーションを開発するには、Java 8言語の機能を選択することができます.プロジェクトのソースとターゲットの互換性をJava 7に残してもいいですが、JDK 8を使ってコンパイルしてもいいです.
Java 8言語機能をサポートするには、Jackという新しいコンパイルが必要です.ジャックはAndroid Studio 2.1とより高いバージョンだけで支持されます.したがって、Java 8言語機能を使用するには、Android Studio 2.1を使用してアプリケーションを開発する必要があります.
Android Studioをインストールしている場合は、Help>Check for Update(Mac上でAndroid Studio>Check for Updatesをクリックして最新バージョンに更新されたことを確認してください.IDEがインストールされていないワークステーションなら、ここでAndroid Studioをダウンロードできます.
サポートされているJava 8言語機能とAPI
AndroidはすべてのJava 8言語機能をサポートしていません.ただし、以下の機能は、Android 7.0(APIレベル24)向けのアプリケーションを開発する際に利用できます.
デフォルトおよび静的インターフェース方法Lamber表現(APIレベル23およびより低いバージョンでも使用可能)は、注釈方法の参照を繰り返し(APIレベル23およびより低いバージョンでも使用可能)タイプの注釈(APIレベル23およびより低いバージョンでも使用可能)は、タイプ別の注釈情報はコンパイル時にのみ使用でき、実行時には利用できない.
Androidの以前のバージョンでLamber表現、方法引用とタイプコメントをテストするには、あなたのbuild.gradleファイルに行ってください.compleSdkVersionとtaget Sdk Versionを23以下に設定します.これらのJava 8機能を使用するために、Jackツールチェーンを有効にする必要があります.
さらに、以下のJava 8言語APIを使用してもよい.
反映と言語関連のAPI:java.lang.Functional Interface java.lang.annotationn.Repeable java.lang.reflect.Method.isDefault()および繰り返し注釈と関連する反応API、例えばAnnotatedElent.get Annotations ByTfunce(API)
Java 8機能とJackツールチェーンを有効にします.
新しいJava 8言語機能を使うには、新しいジャックツールチェーンも必要です.新しいAndroidツールチェーンはJavaソース言語をAndroid読み取り可能なDalvikにコンパイルしてファイルのバイトコードを実行し、自分のJavaソースのツールチェーン機能のほとんどを提供しています.再パッキング、圧縮、曖昧化、Dalvik実行可能なファイルのパケット分けです.
以下は、Android Dalvikがファイルを実行するために利用可能な2つのツールチェーンの比較を構築することである.
旧版javacツールチェーン:javac(.java→.class)→dx(.class→.dex)新版ジャックツールチェーン:ジャック(.java→.jack→.dex)
Graadleを設定
プロジェクトのためにJava 8言語機能とJackを有効にするには、モジュールレベルのbuild.gradleファイルに以下の内容を入力してください.
android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
既知の問題
Instant Runは現在ジャッキには使えません.新しいツールチェーンを使う時は停止されます.
Jackはアプリケーションをコンパイルする際に中間クラスのファイルを生成しないため、これらのファイルに依存するツールは現在ジャッキには使えません.以下はツールの例です.
クラスファイルを操作するLint検出ツールは、アプリケーションファイルのツールとライブラリが必要です(例えば、JaCoCoを使用して測定中)