Flutter Android v1 埋め込み非推奨エラーの解決方法
概要
Flutterアプリのビルド時に「Build failed due to use of deprecated Android v1 embedding」というエラーが発生する問題とその解決方法について解説します。このエラーはAndroidの古い埋め込み方式(v1)が使用されている場合に発生し、Flutterの将来のバージョンではサポートされなくなる予定です。
エラーの原因
このエラーは、AndroidManifest.xmlファイル内で非推奨となったv1埋め込み方式が使用されていることによって発生します。具体的には、以下のような設定が問題となります:
<application
android:name="io.flutter.app.FlutterApplication"
...
解決方法
方法1: AndroidManifest.xmlの修正(推奨)
最も確実な解決方法は、AndroidManifest.xmlファイルを更新することです。
<!-- 修正前 -->
<application
android:name="io.flutter.app.FlutterApplication"
...
<!-- 修正後 -->
<application
android:name="${applicationName}"
android:exported="true"
...
<!-- 以下のメタデータを追加 -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
TIP
android:exported="true"
属性は、アプリが他のアプリから起動できることを示します。Android 12以降では必須の設定です。
方法2: Androidフォルダの再生成
プロジェクトのAndroidフォルダを削除して再生成する方法もあります。
# Androidフォルダを削除
rm -rf android
# Androidプラットフォームを再生成
flutter create --platforms=android .
WARNING
この方法ではカスタマイズしたネイティブコードが失われる可能性があるため、必要なファイルはバックアップしておいてください。
方法3: MainActivityの更新
MainActivityファイル(JavaまたはKotlin)も正しいインポートを使用していることを確認してください。
Kotlinの場合:
package com.yourpackage.app
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
// 必要に応じてカスタムコードを追加
}
Javaの場合:
package com.yourpackage.app;
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {
// 必要に応じてカスタムコードを追加
}
古いインポート文(io.flutter.app.FlutterActivity
など)は削除してください。
方法4: ビルド設定の更新(一時的な解決)
一時的な解決策として、非推奨警告を無視してビルドを続行する方法もあります。
Android Studioの場合:
- メニューから「Run」→「Edit Configurations」を選択
- 「Additional run args」フィールドに
--ignore-deprecation
を追加
DANGER
この方法は一時的な解決策であり、将来的にアプリがビルドできなくなる可能性があります。できるだけ早くv2埋め込みへの移行を完了させることを推奨します。
補足事項
- targetSdkVersion と compileSdkVersion を最新(現在は31以上)に更新することを推奨します
- プロジェクトに欠落しているファイル(特にandroid/build.gradle)がないか確認してください
- 特定のライブラリ(例: tflite)が非推奨の埋め込み方式に依存している場合は、代替ライブラリ(tflite_flutterなど)への移行を検討してください
まとめ
FlutterのAndroid v1埋め込み方式は非推奨となっており、早期のv2埋め込みへの移行が強く推奨されています。上記の解決方法の中から、プロジェクトの状況に応じて適切な方法を選択してください。通常はAndroidManifest.xmlの修正とMainActivityの更新が最も安全で効果的な解決策です。