Android StudioのビルドでJDK 26をGradle JVMに指定すると、JdkImageTransformが失敗し、androidJdkImageの解決やjlinkの実行段階で停止することがあります。Googleはこの問題をIssue #486844145として追跡し、Android Gradle Plugin(AGP)9.2.0の修正済み問題に「JdkImageTransform failure with JDK 26」を掲載しています。本記事では、Gradleを動かすJDKとJava toolchainを混同せず、安全に復旧する方法を説明します。
代表的なエラーログ
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Could not resolve all files for configuration ':app:androidJdkImage'.
> Failed to transform core-for-system-modules.jar
to match attributes {artifactType=_internal_android_jdk_image, ...}.
> Execution failed for JdkImageTransform:
.../platforms/android-XX/core-for-system-modules.jar.
> Error while executing process .../bin/jlink
タスク名、Android SDKのパス、属性の表示はプロジェクトによって異なります。重要な識別点は、Gradle JVMがJDK 26で、ログにJdkImageTransform、androidJdkImage、またはjlinkが現れることです。
原因
これはアプリのJava/Kotlinコードそのものではなく、Android SDKのモジュール用JARからビルド用JDKイメージを作るAGP側の変換処理とJDK 26の組み合わせで発生する互換性問題です。GoogleのAGP 9.2.0リリースノートではIssue #486844145が修正済みとして記載されています。
重要: 公開リリースノートは「最初に不具合が入ったAGPバージョン」を明記していません。そのため、特定の旧版すべてが必ず影響を受けるとは断定できません。修正版として公式に確認できるのはAGP 9.2.0です。
発生条件と対象バージョン
- Android StudioまたはCIで、GradleデーモンをJDK 26で実行している
- ビルドが
androidJdkImage構成とJdkImageTransformを利用する - Issue #486844145の修正を含まないAGPを使用している
AGP 9.2の公式互換表はGradle 9.4.1とJDK 17を最小・既定要件として示しています。JDK 26向け修正が入ったことは、JDK 26がAGP 9.2の既定実行環境になったという意味ではありません。
推奨する解決手順
- まずGradle JVMをJDK 17に戻します。 Android StudioのSettings(macOSではPreferences)から「Build, Execution, Deployment」→「Build Tools」→「Gradle」を開き、Gradle JDKにJDK 17を指定します。CIでは
JAVA_HOMEもJDK 17へ揃えます。 - 実際の実行JVMを確認します。
./gradlew --version出力のJVMが17になっていることを確認してください。
- 可能ならAGP 9.2.0以降へ更新します。 AGP 9.2を選ぶ場合は、公式互換表に合わせてGradle Wrapperを9.4.1へ更新し、プラグインと依存関係の互換性も確認します。
- デーモンを停止して再ビルドします。
./gradlew --stop ./gradlew clean ./gradlew assembleDebug
代替策
すぐにAGPを更新できない場合は、Gradleを動かすJDKを17に固定する方法が現実的です。Java toolchainでコンパイル用JDKや言語レベルを設定していても、GradleデーモンのJVMが自動的に切り替わるとは限りません。Android StudioのGradle JDK、JAVA_HOME、CIランナーの設定を別々に確認してください。
JDK内部のjmodsを削除する、SDK内のJARを置換する、jlinkを手作業で改変するといった方法は、環境を壊し再現性を失うため推奨しません。
修正できたか確認する方法
./gradlew --versionで想定したJVMが表示される- ローカルとCIの両方でDebugおよびReleaseビルドが完了する
- ログから
JdkImageTransform、androidJdkImage、jlinkに関する失敗が消える - AGP 9.2へ更新した場合、WrapperがGradle 9.4.1以上である
注意点
sourceCompatibility、KotlinのjvmTarget、Java toolchainは生成するバイトコードやコンパイラを制御します。一方、Gradle JVMはAGPとGradle自身を動かします。今回確認すべきなのは後者です。また、AGP更新時はリリースノートと互換表を確認し、既存プラグインの対応状況をテストしてください。
まとめ
JDK 26で発生するJdkImageTransform失敗は、Googleが追跡したAGPの既知問題です。まず公式サポート構成であるJDK 17をGradle JVMに指定し、可能なら修正を含むAGP 9.2.0以降へ更新します。最後に./gradlew --versionとローカル・CIの実ビルドで解消を確認してください。
参照した公式情報
- Android Gradle Plugin 9.2 release notes(Issue #486844145を修正済みとして掲載、2026年9月17日更新)
- Google Issue Tracker #486844145
- Java versions in Android builds
