android - 您的 Flutter 应用程序是使用旧版本的 Android 嵌入创建的

标签 android flutter dart flutter-plugin android-embedded-api

最近我打开了我的旧项目,现在有一个警告说以前没有发生过这样的事情
警告看起来像

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.
flutter doctor -v 摘要
[✓] Flutter (Channel stable, 1.22.2, on Mac OS X 10.15.3 19D76, locale en-GB)
    • Flutter version 1.22.2 at /Users/pkimac/Development/flutter
    • Framework revision 84f3d28555 (6 weeks ago), 2020-10-15 16:26:19 -0700
    • Engine revision b8752bbfff
    • Dart version 2.10.2

 
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/pkimac/Library/Android/sdk
    • Platform android-30, build-tools 29.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.3.1, Build version 11C504
    • CocoaPods version 1.10.0.rc.1

[!] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] Connected device (1 available)
    • iPhone 11 Pro (mobile) • 7A52F1D0-79F7-471C-AA62-3C106114A1A9 • ios • com.apple.CoreSimulator.SimRuntime.iOS-13-3 (simulator)
    ! Error: Paresh’s iPhone has recently restarted. Xcode will continue when Paresh’s iPhone is unlocked. (code -14)

! Doctor found issues in 1 category.
这是什么意思,我该如何解决这个警告?

最佳答案

如果您在 1.12 版之前创建了项目,则会出现此警告
为了更好地支持将 Flutter 添加到现有项目的执行环境,旧的 Android 平台端包装器在 io.flutter.app.FlutterActivity 托管 Flutter 运行时并且它们的关联类现在已弃用。新包装在 io.flutter.embedding.android.FlutterActivity和相关的类现在取代它们。
您现有的完整 Flutter 项目不会立即受到影响,并且在可预见的 future 将继续像以前一样工作。
要迁移您的项目,请按照以下步骤操作:

  • 移除 MainActivity.java 的 body 或 MainActivity.kt并更改 FlutterActivity进口。新款FlutterActivity不再需要手动注册您的插件。现在它会在下层 FlutterEngine 时自动执行注册。被 build 。你的文件应该是这样的
    package com.appname.app
    
    import io.flutter.embedding.android.FlutterActivity
    
    class MainActivity: FlutterActivity() {
    
    }
    
    如果您的 MainActivity.java 中有现有的自定义平台 channel handler 代码或 MainActivity.kt然后将 onCreate 中代码的 channel 注册部分移动到 FlutterActivity 的 configureFlutterEngine 覆盖中子类和使用 flutterEngine.getDartExecutor().getBinaryMessenger()作为二进制信使而不是 getFlutterView() .
  • 打开 android/app/src/main/AndroidManifest.xml。
  • 从应用程序标签中删除对 FlutterApplication 的引用。你的文件应该是这样的
    以前的配置:
    <application
       android:name="io.flutter.app.FlutterApplication"
       >
       <!-- code omitted -->
    </application>
    
    新配置:
    <application
      >
      <!-- code omitted -->
    </application>
    
  • 更新启动画面行为(如果需要启动画面行为)。
    AndroidManifest.xml删除所有 <meta-data>带 key 的标签 android:name="io.flutter.app.android.SplashScreenUntilFirstFrame" .
  • 新增 <meta-data>标签下 <application> .
    <meta-data
      android:name="flutterEmbedding"
      android:value="2" />
    
    enter image description here

  • 更多信息请参见:https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects#full-flutter-app-migration

    关于android - 您的 Flutter 应用程序是使用旧版本的 Android 嵌入创建的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65018588/

    相关文章:

    android - 如何在android中使用ffmpeg反转视频?

    android - 你如何在 Android 中进行简单的 CRUD?

    android - 为什么 CSS 边框在 Android 上看起来不同?

    flutter - 如何从 Flutter Hive 中检索 HiveList

    flutter - 如何在flutter_svg中使用preCachePicture()

    string - Flutter 将字符串转换为 boolean 值

    android - 如何在 Android 上重置 Mobile Chrome,以便我可以请求访问麦克风

    flutter - 没有应用栏的抽屉 Flutter

    flutter - 错误组织-dartlang-调试 :synthetic_debug_expression when execute a Flutter app

    flutter - 如何将 Flutter web 应用程序转换为 PWA?