【Flutter Androidビルド】シンボルを見つけられません「MultiDex. install(this)」の対処方法
Xcode16のアップデート対応に追われている中、Flutter3.24.0にアップデートした影響でこれまでできていたAndroidビルドでエラーが発生したので解決方法を共有します。
ちなみに、Flutterのバージョンを3.22.2
→ 3.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.gradle
にmultiDexEnabled
を有効にする必要があります。
android {
defaultConfig {
...
multiDexEnabled true // ここを追加
}
...
}
dependencies に MultiDex ライブラリを追加
android/app/build.gradle
の dependencies
セクションに以下を追加します。
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'