Skip to content

Flutter Android v1 埋め込み非推奨エラーの解決方法

概要

Flutterアプリのビルド時に「Build failed due to use of deprecated Android v1 embedding」というエラーが発生する問題とその解決方法について解説します。このエラーはAndroidの古い埋め込み方式(v1)が使用されている場合に発生し、Flutterの将来のバージョンではサポートされなくなる予定です。

エラーの原因

このエラーは、AndroidManifest.xmlファイル内で非推奨となったv1埋め込み方式が使用されていることによって発生します。具体的には、以下のような設定が問題となります:

xml
<application
    android:name="io.flutter.app.FlutterApplication"
    ...

解決方法

方法1: AndroidManifest.xmlの修正(推奨)

最も確実な解決方法は、AndroidManifest.xmlファイルを更新することです。

xml
<!-- 修正前 -->
<application
    android:name="io.flutter.app.FlutterApplication"
    ...
xml
<!-- 修正後 -->
<application
    android:name="${applicationName}"
    android:exported="true"
    ...
    
    <!-- 以下のメタデータを追加 -->
    <meta-data
        android:name="flutterEmbedding"
        android:value="2" />

TIP

android:exported="true"属性は、アプリが他のアプリから起動できることを示します。Android 12以降では必須の設定です。

方法2: Androidフォルダの再生成

プロジェクトのAndroidフォルダを削除して再生成する方法もあります。

bash
# Androidフォルダを削除
rm -rf android

# Androidプラットフォームを再生成
flutter create --platforms=android .

WARNING

この方法ではカスタマイズしたネイティブコードが失われる可能性があるため、必要なファイルはバックアップしておいてください。

方法3: MainActivityの更新

MainActivityファイル(JavaまたはKotlin)も正しいインポートを使用していることを確認してください。

Kotlinの場合:

kotlin
package com.yourpackage.app

import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity() {
    // 必要に応じてカスタムコードを追加
}

Javaの場合:

java
package com.yourpackage.app;

import io.flutter.embedding.android.FlutterActivity;

public class MainActivity extends FlutterActivity {
    // 必要に応じてカスタムコードを追加
}

古いインポート文(io.flutter.app.FlutterActivityなど)は削除してください。

方法4: ビルド設定の更新(一時的な解決)

一時的な解決策として、非推奨警告を無視してビルドを続行する方法もあります。

Android Studioの場合:

  1. メニューから「Run」→「Edit Configurations」を選択
  2. 「Additional run args」フィールドに --ignore-deprecation を追加

DANGER

この方法は一時的な解決策であり、将来的にアプリがビルドできなくなる可能性があります。できるだけ早くv2埋め込みへの移行を完了させることを推奨します。

補足事項

  • targetSdkVersioncompileSdkVersion を最新(現在は31以上)に更新することを推奨します
  • プロジェクトに欠落しているファイル(特にandroid/build.gradle)がないか確認してください
  • 特定のライブラリ(例: tflite)が非推奨の埋め込み方式に依存している場合は、代替ライブラリ(tflite_flutterなど)への移行を検討してください

まとめ

FlutterのAndroid v1埋め込み方式は非推奨となっており、早期のv2埋め込みへの移行が強く推奨されています。上記の解決方法の中から、プロジェクトの状況に応じて適切な方法を選択してください。通常はAndroidManifest.xmlの修正とMainActivityの更新が最も安全で効果的な解決策です。