Android ビルドの Java バージョン

ソースコードが Java、Kotlin、またはその両方で記述されていても、 いくつかの場所で JDK または Java 言語を選択する必要がある バージョンを指定します。

Gradle ビルドでの JDK 関係の概要

用語集

Java 開発キット(JDK)
Java Development Kit(JDK) 次を含む: <ph type="x-smartling-placeholder">
    </ph>
  • コンパイラ、プロファイラ、アーカイブ作成ツールなどのツール。 これらはビルド中にバックグラウンドで使用され、 アプリケーションを作成します。
  • アプリから呼び出すことができる API を含むライブラリ Kotlin または Java のソースコード。なお、すべての関数が 利用できます
  • Java 仮想マシン(JVM): アプリケーションの実行、 Java アプリケーション。JVM を使用して Android Studio IDE を実行する Gradle ビルドツールを使用します。Android で JVM が使用されない デバイスまたはエミュレータで使用できます。
JetBrains ランタイム(JBR)
JetBrains Runtime(JBR) は拡張 JDK で、Android Studio とともに配布されます。 このツールには、Studio や関連する JetBrains で使用するための最適化がいくつか含まれています。 他の Java アプリケーションの実行にも使用できます。

Android Studio を実行する JDK を選択するにはどうすればよいですか?

Android Studio の実行には、JBR を使用することをおすすめします。Kubernetes は されており、Android Studio のテストに使用されています。また、 Android Studio の使用状況。そのため、STUDIO_JDK を設定しないでください。 使用します。

Android Studio の起動スクリプトは、以下で JVM を探します。 order:

  1. STUDIO_JDK 環境変数
  2. studio.jdk ディレクトリ(Android Studio ディストリビューション内)
  3. Android Studio の jbr ディレクトリ(JetBrains ランタイム) 分散しますおすすめ
  4. JDK_HOME 環境変数
  5. JAVA_HOME 環境変数
  6. PATH 環境変数内の java 実行可能ファイル

Gradle ビルドを実行する JDK を選択するにはどうすればよいですか?

Android Studio のボタンを使用して Gradle を実行すると、 Android Studio の設定は、Gradle の実行に使用されます。ターミナルで Gradle を実行すると、 JAVA_HOME 環境変数(Android Studio 内外) (設定されている場合)は、Gradle スクリプトを実行する JDK を決定します。JAVA_HOME の場合 設定されていない場合は、PATH 環境で java コマンドを使用します。 変数です。

最も一貫した結果を得るには、JAVA_HOME を設定してください 環境変数、 Android Studio の Gradle JDK 構成を、同じ構成にする JDK。

ビルドの実行時に、Gradle はデーモンと呼ばれるプロセスを作成し、 実際のビルドを実行します。このプロセスは再利用できるため ただし、同じ JDK と Gradle バージョンを使用していることが条件となります。再利用 デーモンにより、新しい JVM の起動とビルドシステムの初期化にかかる時間を短縮できます。

異なるバージョンの JDK または Gradle でビルドを開始する場合は、 デーモンが作成され、より多くの CPU とメモリが消費されます。

Android Studio での Gradle JDK 構成

既存のプロジェクトの Gradle JDK 構成を変更するには、 File(macOS では Android Studio)から [>設定 > 構築、実行、デプロイ >ビルドツール >Gradle を使用します。Gradle JDK プルダウンには、次のオプションから選択できます。

  • JAVA_HOMEGRADLE_LOCAL_JAVA_HOME などのマクロ
  • 格納される jbr-17 などの vendor-version 形式の JDK テーブル エントリ (Android 構成ファイル
  • JDK のダウンロード
  • 特定の JDK の追加
  • オペレーティング システムのデフォルトの JDK インストールからローカルで検出された JDK ディレクトリ

選択したオプションは、gradleJvm オプションに格納され、 プロジェクトの .idea/gradle.xml ファイルを実行し、その JDK パス解決を使用して Android Studio から起動した場合の Gradle。

図 1. Android Studio の Gradle JDK 設定

このマクロにより、動的なプロジェクト JDK パスの選択が有効になります。

  • JAVA_HOME: 同じ名前の環境変数を使用します。
  • GRADLE_LOCAL_JAVA_HOME: java.home プロパティを使用します。 .gradle/config.properties ファイル(デフォルトは JetBrains ランタイム)

選択した JDK を使用して Gradle ビルドを実行し、JDK API を解決 ビルド スクリプトとソースコードを編集する際に参照することもできます。なお、 compileSdk を指定すると、送信される Java シンボルが ソースコードを編集およびビルドするときに使用できます。

JDK バージョン以上の JDK バージョンを選択してください 使用するバージョンのリストを指定する必要があります。目標を決定するには、 Android Gradle プラグイン(AGP)に必要な最小 JDK バージョンについては、 リリースノートの互換性の表をご覧ください。

たとえば、Android Gradle プラグインのバージョン 8.x には JDK 17 が必要です。 それを使用する Gradle ビルドを以前のバージョンの 場合、次のようなメッセージが報告されます。

An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
   > Android Gradle plugin requires Java 17 to run. You are currently using Java 11.
      Your current JDK is located in /usr/local/buildtools/java/jdk11
      You can try some of the following options:
       - changing the IDE settings.
       - changing the JAVA_HOME environment variable.
       - changing `org.gradle.java.home` in `gradle.properties`.

Java または Kotlin のソースコードではどの Java API を使用できますか?

Android アプリは、JDK で定義された一部の API を使用できますが、すべてではありません。 できます。Android SDK では、多くの Java ライブラリ関数の実装が定義されています。 API の一部として使用できますcompileSdk プロパティは、 Kotlin または Java のソースコードをコンパイルするときに使用する Android SDK のバージョン。

Kotlin

android {
    ...
    compileSdk = 33
}

Groovy

android {
    ...
    compileSdk 33
}

Android の各バージョンは、特定のバージョンの JDK と できます。Java API を使用する場合は 指定された地域では利用できない compileSdk minSdk さん、API を使用できる場合があります と呼ばれるプロセスを通じて、Android の desugar です。 サポートされているものについては、desugar で利用可能な Java 11 以降の API をご覧ください。 API

この表を使用して、サポートされている Java バージョンを確認してください。 利用可能な Java API の詳細を確認できる場所が記載されています。

Android Java サポートされる API と言語機能
14(API 34) 17 コアライブラリ
13(API 33) 11 コアライブラリ
12(API 32) 11 Java API
11 以下 Android のバージョン

Java ソースコードをコンパイルする JDK はどれか?

Java ツールチェーン JDK には、Java のコンパイルに使用される Java コンパイラが含まれています。 ソースコードです。この JDK は、ビルド中に javadoc テストと単体テストも実行します。

ツールチェーンのデフォルトは、Gradle の実行に使用される JDK です。デフォルトの さまざまなマシン(ローカルマシンと 別の継続的インテグレーション サーバーを介さず)、ビルドの結果を 使用される JDK バージョンが異なると、機能が異なる場合があります。

より一貫性のあるビルドを作成するには、 Java ツールチェーンのバージョン。これを指定します。

  • ビルドを実行しているシステム上で、互換性のある JDK を見つけます。
    • 互換性のある JDK が存在しない場合(かつツールチェーン リゾルバが定義されている場合)は、 1 つダウンロードします。
  • ソースコードからの呼び出し用のツールチェーン Java API を公開します。
  • Java 言語バージョンを使用して Java ソースをコンパイルします。
  • sourceCompatibilitytargetCompatibility

Java ツールチェーンを常に指定し、 インストールするか、SDK の ツールチェーン リゾルバ 追加できます。

ツールチェーンを指定できます。ソースコードが Java で記述されているか、 Kotlin、またはその両方です。モジュールのトップレベルでツールチェーンを指定する build.gradle(.kts) ファイル。

Java ツールチェーンのバージョンは次のように指定します。

Kotlin

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}

Groovy

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}

これは、ソースが Kotlin、Java、または両方の組み合わせである場合に有効です。

ツールチェーン JDK のバージョンは Gradle の実行に使用する JDK と同じでもかまいませんが、 それぞれ目的が異なることに注意してください

Java ソースコード内で使用できる Java 言語のソース機能

sourceCompatibility プロパティは、どの Java 言語機能を使用するかを決定します。 Java ソースのコンパイル時に使用できます。 Kotlin ソースには影響しません。

指定しない場合、デフォルトで Java ツールチェーンまたは Gradle の実行に使用する JDK。常に明示的に宣言型の方法で ツールチェーン(推奨)または sourceCompatibility

モジュールの build.gradle(.kts) ファイルで sourceCompatibility を指定します。

Kotlin

android {
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
    }
}

Groovy

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
    }
}

Kotlin または Java ソースをコンパイルするときに使用できる Java バイナリ機能はどれですか。

targetCompatibilityjvmTarget を指定すると、Java は コンパイルされた Java および Kotlin のバイトコードを生成するときに使用されるクラス形式バージョン あります。

一部の Kotlin 機能は、同等の Java 機能が追加される前に存在していました。 初期の Kotlin コンパイラは、Kotlin を表現する独自の方法を作成する必要がありました。 説明します。これらの機能の一部は後に Java に追加されました。 それ以降の jvmTarget レベルでは、Kotlin コンパイラは直接 パフォーマンスが向上する可能性があります。

targetCompatibility のデフォルトは、次と同じ値になります。 sourceCompatibility, 指定する場合は sourceCompatibility 以上にする必要があります。

jvmTarget はデフォルトでツールチェーンのバージョンになります。

Android のバージョンが異なれば、サポートされる Java のバージョンも異なります。Google Chat では 追加の Java 機能を活用するには、 targetCompatibilityjvmTarget。ただし、この方法を使用する場合は、 CANNOT TRANSLATE Android SDK の最小バージョンを使用して、 確認しましょう。

Kotlin

android {
    compileOptions {
        targetCompatibility = JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = "17"
    }
}

Groovy

android {
    compileOptions {
        targetCompatibility JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget '17'
    }
}