Skip to content

Most visited

Recently visited

navigation

Java 8 の言語機能を使う

Android ではプラットフォームのバージョンごとに異なる Java 7 のすべての言語機能と Java 8 の言語機能のサブセットをサポートしています。このページでは、利用可能な新しい言語機能や、それらを利用するためのプロジェクトの適切な設定方法、想定される既知の問題について紹介します。

注: Android 向けのアプリを開発する際は、必ずしも Java 8 の言語機能を使う必要はありません。プロジェクトのソースおよびターゲットの互換性の値を Java 7 に設定しておいても構いませんが、コンパイルには JDK 8 を使う必要があります。

Java 8 の言語機能のサポートには、Jack という新しいコンパイラが必要です。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)向けにアプリを開発している場合は、次の機能を使用できます。

注: タイプ アノテーション情報を利用できるのは、実行時ではなくコンパイル時のみです。

以前のバージョンの Android でラムダ式、メソッド参照、タイプ アノテーションをテストするには、build.gradle ファイルで compileSdkVersiontargetSdkVersion を 23 以下に指定します。これらの Java 8 機能を使用するには、Jack ツールチェーンを有効にする必要があります。

さらに、次の Java 8 言語機能の API も利用できます。

Java 8 の機能と Jack ツールチェーンの有効化

Java 8 の新言語機能を使うには、Jack ツールチェーンも必要になります。この新しい Android ツールチェーンは、Java 言語のソースを Android で判別可能な dex バイトコードにコンパイルします。さらにこのツールには独自の .jack ライブラリ フォーマットがあり、再パッケージ化、縮小、難読化、Multidex など、ほとんどのツールチェーン機能に対応しています。

以下は、Android の DEX ファイルのビルドに使用する 2 つのツールチェーンの比較です。

Gradle の設定

プロジェクトで Java 8 の言語機能と Jack を有効にするには、モジュール レベルの build.gradle ファイルに以下の内容を記載します。

android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

既知の問題点

Instant Run 機能は、現段階では Jack と併用できません。そのため新しいツールチェーンの使用中は無効になります。

Jack はアプリのコンパイル中に中間クラスファイルを生成しないため、中間ファイルに依存するツールは現在 Jack と併用できません。たとえば以下のようなツールが該当します。

Jack の使用中にその他の不具合が発生した場合は、バグの報告をお願いします。

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)