【Flutter】invalid source release: 17 のクラウド環境での解決法

はじめに

Flutterプロジェクトをクラウド環境でビルドしようとすると、Javaのバージョンに関連したエラーが発生することがあります。これは、新しいFlutterバージョンがある程度新しいJavaのバージョンを必要とするためです。今回は、クラウド環境でのJavaの設定方法について説明します。

エラーの発生状況

Flutterプロジェクトのビルド中に以下のようなエラーメッセージが表示されることがあります。

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':package_info_plus:compileReleaseJavaWithJavac'.
> error: invalid source release: 17

このエラーは、使用しているJavaのバージョンがFlutterプロジェクトのビルドに適していないことを示しています。

設定

Flutterの設定

android/app/build.gradle のJavaのバージョンを設定します。

compileOptions {
    targetCompatibility JavaVersion.VERSION_17
    sourceCompatibility JavaVersion.VERSION_17
}

kotlinOptions {
    jvmTarget = JavaVersion.VERSION_17.toString()
}

ローカル環境の確認

Flutterが使用しているJavaのバージョンや場所は以下のコマンドを実行して、「Android toolchain」の欄に表示された。

flutter doctor -v

CodeMagicのJava設定

CodeMagicでJavaのバージョンを設定するには、環境変数に設定します。
以下を設定を入力して、「Add」!

Variable name:
JAVA_HOME
Variable value:
/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home

以下で設定:
設定

codemagic.yamlファイルに設定する方法は知りません、、

GitHub ActionsのJava設定

GitHub ActionsでJavaのバージョンを設定するには、.github/workflows/build.ymlファイルに「Set up JDK 17」の内容を追加します。

jobs:
  build:
    steps:
      - uses: actions/checkout@v2

      - name: Set up JDK 17
        uses: actions/setup-java@v2
        with:
          java-version: '17'
          distribution: 'adopt'
          cache: 'gradle'

      - name: Build with Flutter
        run: flutter build apk

まとめ

Flutterプロジェクトをビルドする際には、Javaのバージョンに注意が必要です。CodeMagicやGitHub Actionsで適切なJavaバージョンを設定することで、ビルドエラーを回避することができます。上記の方法を参考にして、該当のエラーが出たら対応しましょう

参考