【Flutter Androidビルド】シンボルを見つけられません「MultiDex. install(this)」の対処方法

【Flutter Androidビルド】シンボルを見つけられません「MultiDex. install(this)」の対処方法

Xcode16のアップデート対応に追われている中、Flutter3.24.0にアップデートした影響でこれまでできていたAndroidビルドでエラーが発生したので解決方法を共有します。

ちなみに、Flutterのバージョンを3.22.23.24.0に上げました。

実行したビルドコマンド

fvm flutter build appbundle --build-name='0.0.0' --build-number='000'

Androidビルドで「シンボルを見つけられません」エラー

FlutterのAndoridビルドで以下のエラーが発生。

エラー:シンボルを見つけられません
import androidx.multidex.MultiDex;

シンボル:クラス MultiDex
場所:パッケージ androidx.multidex
/Users/path/.java
エラー:シンボルを見つけられません
MultiDex. install(this);

シンボル:
変数 MultiDex
場所:クラス FlutterMultiDexApplication

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task '¡app: compileReleaseJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or -debug option to get more log output.
> Run with -scan to get full insights.
* Get more help at <https://help-gradle.org>
BUILD FAILED in 1m 29s
Running Gradle task 'bundleRelease'
.. .
Gradle task bundleRelease failed with exit code 1

【解決方法】MultiDexの設定を追加する

このエラーは、AndroidでMultiDexクラスが見つからないために発生しています。

MultiDexの設定をしてあげることで解決できるみたいです。

multiDexEnabledを有効にする

まず、android/app/build.gradlemultiDexEnabledを有効にする必要があります。

android {
    defaultConfig {
        ...
        multiDexEnabled true  // ここを追加
    }
    ...
}

dependencies に MultiDex ライブラリを追加

android/app/build.gradledependencies セクションに以下を追加します。

dependencies {
    ...
    implementation 'androidx.multidex:multidex:2.0.1'
}

これで再度ビルドしなおすと成功しました!

参考記事

それでも解決しない場合

僕の場合は上記で解決しましたが、同じようなエラーが出る場合は、以下ファイルでもMultiDexがimportされているか確認しましょう。

FlutterMultiDexApplication.java

FlutterMultiDexApplication.java ファイルで、MultiDex を正しくインポートできているか確認。

package io.flutter.app;

import android.content.Context;
import androidx.multidex.MultiDex;  // インポートを修正
import io.flutter.app.FlutterApplication;

public class FlutterMultiDexApplication extends FlutterApplication {
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);  // MultiDexのインストール
    }
}

AndroidManifest.xml

android/app/src/main/AndroidManifest.xml に以下を追加して、FlutterMultiDexApplication を使用するようにします。

<application
    android:name=".FlutterMultiDexApplication"
    android:label="your_app_name"
    android:icon="@mipmap/ic_launcher">
    ...
</application>

これらが更新できた後には、クリーンビルドして確認してみてください。

% fvm flutter clean
% fvm flutter pub get
% fvm flutter build appbundle --build-name='0.0.0' --build-number='000'

Anycloudではプロダクト開発の支援を行っています

プロダクト開発をお考えの方はぜひAnycloudにご相談ください。

まずは相談する

記事を書いた人

Matsuura

エンジニア

Matsuura

Twitter

Anycloudでエンジニアしてます!主にFlutterやWebフロントをやっていて、最近はバックエンドやインフラに挑戦・苦戦中。