您的 Flutter 应用程序是使用旧版本的 Android 嵌入创建的
Posted
技术标签:
【中文标题】您的 Flutter 应用程序是使用旧版本的 Android 嵌入创建的【英文标题】:Your Flutter application is created using an older version of the Android embedding 【发布时间】:2021-03-09 03:06:47 【问题描述】:最近我打开了我的旧项目,现在有一个警告,以前没有发生过这样的事情
警告看起来像
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.
这是什么意思,我该如何解决这个警告?
【问题讨论】:
【参考方案1】:https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects
您的项目是使用较旧的 Android 版本创建的。如果您在 1.12 版之前创建了项目,这可能适用于您的项目。目前它不会影响您的应用程序运行,但我建议升级它。您可以通过我分享的链接按照说明进行升级。
【讨论】:
【参考方案2】:如果您在 1.12 版之前创建了项目,则会出现此警告
为了更好地支持将 Flutter 添加到现有项目的执行环境,旧的 Android 平台端包装器在 io.flutter.app.FlutterActivity
托管 Flutter 运行时及其相关类现在已弃用。 io.flutter.embedding.android.FlutterActivity
的新包装器和关联的类现在替换它们。
您现有的完整 Flutter 项目不会立即受到影响,并且在可预见的未来将继续像以前一样工作。
要迁移您的项目,请按照以下步骤操作:
删除 MainActivity.java
或 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()
。
打开android/app/src/main/AndroidManifest.xml。
从应用标签中移除对 FlutterApplication 的引用。你的文件应该是这样的
之前的配置:
<application
android:name="io.flutter.app.FlutterApplication"
>
<!-- code omitted -->
</application>
新配置:
<application
>
<!-- code omitted -->
</application>
更新闪屏行为(如果需要闪屏行为)。
在AndroidManifest.xml
中删除所有带有android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
键的<meta-data>
标签。
在<application>
下添加一个新的<meta-data>
标签。
<meta-data
android:name="flutterEmbedding"
android:value="2" />
欲了解更多信息,请参阅:https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects#full-flutter-app-migration
【讨论】:
【参考方案3】:Flutter 2.2.2
Android Studio - 2020.3.1 Patch 3
旧应用程序甚至创建新的 Flutter 应用程序都不会运行并显示 OP 提到的警告。
我尝试了迁移,但没有成功。 最后安装了最新版本(2.5.3) https://docs.flutter.dev/get-started/install/windows
如上面链接中的建议,在路径变量下面添加了两个(Windows 10)
C:\path-to-flutter-sdk\bin\
C:\path-to-dart-sdk\bin\
升级后,新旧应用无需任何额外修改即可运行。
从我的 Windows 10 设备
【讨论】:
以上是关于您的 Flutter 应用程序是使用旧版本的 Android 嵌入创建的的主要内容,如果未能解决你的问题,请参考以下文章
在 Play 商店中将 Flutter 应用程序从旧版本更新到新版本