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

> FlutterのAndroidビルドで「エラー：シンボルを見つけられません MultiDex. install(this); FAILURE: Build failed with an exception. Execution failed for task '¡app: compileReleaseJavaWithJavac'.」エラーの解決方法

- 公開日: 2024-10-17
- 著者: Matsu
- タグ: Flutter
- URL: https://tech.anycloud.co.jp/articles/android-build-multidex-install

---

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

ちなみに、Flutterのバージョンを`3.22.2` → `3.24.0`に上げました。

実行したビルドコマンド

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

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

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

```shell
エラー：シンボルを見つけられません
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`を有効にする必要があります。

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

### **dependencies に MultiDex ライブラリを追加**

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

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

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

### 参考記事

<div class="link-card-wrap"><a class="link-card" href="https://github.com/flutter/flutter/issues/148368" target="_blank" rel="noopener noreferrer"><span class="link-card-body"><span class="link-card-title">On Android, `flutter run` throws "error: package androidx.multidex does not exist" · Issue #148368 · flutter/flutter</span><span class="link-card-description">Steps to reproduce Take an existing Flutter project from Flutter 3.19. The existing project must be using multidex support. flutter upgrade to Flutter 3.22. flutter run on Android Actual results Th...</span><span class="link-card-meta"><img class="link-card-favicon" src="./linkcard-01-favicon.svg" alt=""><span class="link-card-domain">github.com</span></span></span><img class="link-card-image" src="./linkcard-01-image.webp" alt=""></a></div>

## それでも解決しない場合

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

### **FlutterMultiDexApplication.java**

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

```java
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` を使用するようにします。

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

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

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