#開発環境
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)
先頭に-がついている行を削除。
+の行を追加。
-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);
- }
}
-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).を参照してください。
私の場合は外部のサンプルを試したいだけなのでノータッチです。
(必要時に更新するかも。。)