LoginSignup
5
3

More than 1 year has passed since last update.

Flutter: android studioのバージョンが1.12未満に作られたプロジェクトのビルド時に起きるエラーの対処法

Posted at

開発環境

Flutter doctor

[✓] Flutter (Channel master, 2.3.0-17.0.pre.366, on macOS 11.4 20F71 darwin-x64, locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.2)
[✓] VS Code (version 1.47.3)
[✓] Connected device (1 available)

発生した問題

Flutterの学習時、教材に記載してあるURL先のGitHubからローカル環境にレポジトリをクローンした際、flutter pub getを実行した時に以下のエラーがでた。

/Users/'UserName'/flutter_dev/flutter/bin/flutter --no-color pub get
Running "flutter pub get" in `Project Name`...                   3.6s
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Warning
──────────────────────────────────────────────────────────────────────────────
Your Flutter application is created using an older version of the Android
embedding. It's being deprecated in favor of Android embedding v2. Follow the
steps at

https://flutter.dev/go/android-project-migration

to migrate your project.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1.12未満のバージョンで作成されたプロジェクトの一部の処理が非推奨となったため、URLの記事を参考にしなさい、というもの。
https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects

対処法

1.MainActivityのファイルを更新する

ファイルの場所: android/app/src/main/java(or Kotlin)/[プロジェクトの名前]/MainActivity.java(or Kt)

先頭に-がついている行を削除。
+の行を追加。

MainActivity.java
-import android.os.Bundle;
-import io.flutter.app.FlutterActivity;
+import io.flutter.embedding.android.FlutterActivity;
-import io.flutter.plugins.GeneratedPluginRegistrant;

public class MainActivity extends FlutterActivity {
-  @Override
-  protected void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    GeneratedPluginRegistrant.registerWith(this);
-  }
 }

MainActivity.kt
-import android.os.Bundle
-import io.flutter.app.FlutterActivity
+import io.flutter.embedding.android.FlutterActivity
-import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterActivity() {
-  override fun onCreate(savedInstanceState: Bundle?) {
-    super.onCreate(savedInstanceState)
-    GeneratedPluginRegistrant.registerWith(this)
-  }
}

以前はコードからプラグインを登録していたが、新バージョンでは自動で登録してくれるため、その処理が不要とのこと。

2.マニフェストファイルを更新。

ファイルの場所: android/app/src/main/AndroidManifest.xml

2-1applicationのnameタグを削除

<application
  android:name="io.flutter.app.FlutterApplication" この行を削除
  >
  <!-- code omitted -->
</application>

2-2meta-dataのタグの値を更新

二つの値をそれぞれ変更する。

<meta-data
    android:name="flutterEmbedding"
    android:value="2" />

解決

再度flutter pub getを実行すると、、、

/Users/`username`/flutter_dev/flutter/bin/flutter --no-color pub get
Running "flutter pub get" in `Project Name`...                1,029ms
Process finished with exit code 0

注意点

自作したプラグインを使う場合は記事の項目1b. If you had existing custom platform 〜を参照してください。

スプラッシュ画面を実装する場合は、記事の項目4. Update splash screen behavior (if splash behavior is desired).を参照してください。

私の場合は外部のサンプルを試したいだけなのでノータッチです。
(必要時に更新するかも。。)

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3