18

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

警告看起来像

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.

颤振医生 -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.

这是什么意思,我该如何解决这个警告?

4

3 回答 3

51

如果您在 1.12 版本之前创建了项目,则会出现此警告

为了更好地支持将 Flutter 添加到现有项目的执行环境,托管 Flutter 运行时的旧 Android 平台端包装器io.flutter.app.FlutterActivity及其关联类现已弃用。新的包装器io.flutter.embedding.android.FlutterActivity和相关的类现在替换它们。

您现有的完整 Flutter 项目不会立即受到影响,并且在可预见的未来将继续像以前一样工作。

要迁移您的项目,请执行以下步骤:

  1. 删除MainActivity.javaor的主体MainActivity.kt并更改FlutterActivity导入。新的FlutterActivity不再需要手动注册您的插件。它现在将在创建底层时自动执行注册FlutterEngine。你的文件应该是这样的

    package com.appname.app
    
    import io.flutter.embedding.android.FlutterActivity
    
    class MainActivity: FlutterActivity() {
    
    }
    

    如果您有现有的自定义平台通道处理代码,MainActivity.java或者MainActivity.kt然后将 onCreate 中代码的通道注册部分移动到FlutterActivity子类的 configureFlutterEngine 覆盖中,并flutterEngine.getDartExecutor().getBinaryMessenger()用作二进制信使而不是getFlutterView().

  2. 打开 android/app/src/main/AndroidManifest.xml。

  3. 从应用程序标签中删除对 FlutterApplication 的引用。你的文件应该是这样的

    以前的配置:

    <application
       android:name="io.flutter.app.FlutterApplication"
       >
       <!-- code omitted -->
    </application>
    

    新配置:

    <application
      android:name="${applicationName}"
      >
      <!-- code omitted -->
    </application>
    
  4. 更新闪屏行为(如果需要闪屏行为)。

    AndroidManifest.xml删除所有<meta-data>带有 key 的标签android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"

  5. 在 下添加一个新<meta-data>标签<application>

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

    在此处输入图像描述

于 2020-11-28T09:22:44.737 回答
0
Flutter 2.2.2

Android Studio - 2020.3.1 Patch 3

旧应用程序甚至创建新的 Flutter 应用程序都不会运行并显示 OP 提到的警告。

我尝试了迁移,但没有奏效。终于从 https://docs.flutter.dev/get-started/install/windows安装了最新版本(2.5.3)

正如上面链接中所建议的那样,在路径变量下面添加了两个(Windows 10)

C:\path-to-flutter-sdk\bin\ 

C:\path-to-dart-sdk\bin\ 

升级后,新旧应用程序无需任何额外修改即可工作。

从我的 Windows 10 设备

在此处输入图像描述

于 2021-11-24T11:46:17.697 回答
0

https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects

您的项目是使用较旧的 Android 版本创建的。如果您在 1.12 版之前创建了项目,这可能适用于您的项目。目前它不会影响您的应用程序运行,但我建议升级它。您可以按照说明如何通过我共享的链接进行升级。

于 2020-11-26T10:34:26.413 回答