关于#flutter#的问题:安卓目录报错Unresolved reference: embedding

img


img

flutter项目,编辑器idea,运行flutter doctor全是√,这个文件为什么报错,怎么解决

这个问题可能是由于Flutter版本过低导致的。可以尝试更新所有的Flutter插件,将Flutter更新到2.2.2版本,避免在原生端使用插件(如果不需要),并将compileSdkVersion和targetSdkVersion设置为30。此外,还有一些其他的解决方案,例如检查 MainActivity 文件中是否正确导入了 io.flutter.embedding.android.FlutterActivity

这个错误通常是由于Flutter的版本更新而导致的,非常容易解决,请按照以下步骤进行操作:

  1. android/app/build.gradle文件中的dependencies中找到以下代码:
implementation 'com.google.android.material:material:X.X.X'

其中,X.X.X可能是不同的版本号。

  1. dependencies下面添加以下代码:
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
  1. gradle.properties文件中添加以下代码:
android.useAndroidX=true
android.enableJetifier=true
  1. 在终端中运行以下命令,重新构建Flutter项目:
flutter clean
flutter pub get
flutter run

这将清理项目并重新获取依赖项。然后运行Flutter项目,如果仍然遇到相同的错误,请重启Android Studio并再次执行上述步骤。

上述步骤一般可以解决这个问题,如果您尝试了上述步骤仍无法解决问题,请提供更多的错误信息以便我们进行更具体的分析和解答。

可以尝试以下两个解决方案:
右键android目录 Flutter -> open for editing in android studio 重新开启一个studio编辑器处理当前的Android项目
项目设置(project structure / command+;)-> Modules -> impore Module ->. import module from external model 构建Android 项目 .gradle 配置文件​​​​​​​​​​​​​​
详细参考:https://blog.csdn.net/jingfang0928/article/details/125025266

看一下idea调试时,具体是那行代码报错,并根据报错的代码位置,这样才能找到报错原因

  • 这篇博客: 第一章 常见跨平台解决方案及Flutter架构中的 1.3.3 Embedding嵌入层 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • Embedding嵌入层是用于呈现所有Flutter内容的原生系统应用,充当着宿主操作系统和Flutter之间粘合剂的角色。当启动一个Flutter应用时,嵌入层会提供一个入口,初始化Flutter引擎,获取UI和栅格化线程,创建Flutter可以写入的纹理。嵌入层同时负责管理应用的生命周期、输入操作、窗口的大小变化、线程管理和平台消息的传递。Flutter拥有Android、iOS、Windows、macOS和Linux的平台嵌入层,每一个平台都有各自的一套API。

    • 在iOS和macOS上,Flutter分别通过UIViewController和NSViewController载入嵌入层。嵌入层会创建一个FlutterEngine,作为Dart VM和Flutter运行时的宿主,还有一个FlutterViewController,关联对应的FlutterEngine,传递UIKit或者Cocoa的输入事件到 Flutter,并将FlutterEngine渲染的帧内容通过Metal或OpenGL进行展示。

    • 在Android上,Flutter默认通过一个Activity加载嵌入层,此时Flutter视图是一个FlutterView,以视图模式或纹理模式呈现Flutter的内容。

    • 在Windows上,Flutter的宿主是一个传统的Win32应用,内容通过ANGLE进行渲染。

该回答引用ChatGPT

Flutter项目在Idea中运行报错的原因有很多种,需要根据具体的报错信息进行分析和解决。
一般来说,报错的解决思路如下:

  1. 检查Flutter和Dart的SDK是否配置正确。打开Idea的Preferences -> Languages & Frameworks -> Flutter,确认Flutter SDK和Dart SDK的路径是否正确。如果不正确,选择重新配置。
  2. 检查项目的Flutter版本和依赖版本是否匹配。打开pubspec.yaml文件,确认flutter SDK constraint版本是否和本地Flutter SDK版本匹配。如果不匹配,更新pubspec.yaml中的版本约束。
  3. 检查是否有未完成的Flutter升级操作。如果最近进行过Flutter或相关依赖升级,需要执行Flutter升级完成的操作,如执行"Flutter Upgrade all"选项进行全部Flutter包升级。
  4. 检查是否有未安装或版本不匹配的依赖包。如果pubspec.yaml中有非本地版本的依赖,需要运行"Flutter Packages get"来安装依赖包。
  5. 重新构建项目。选择"File" -> "Invalidate Caches / Restart"或者点击工具栏的"Invalidate and Restart"按钮,重新构建Flutter项目。
  6. 如果报错信息中有明确的dartanalyzer或解析错误,按照提示修复或更新对应代码。
  7. 如果是第三方库或插件相关的报错,检查pubspec.yaml中对应库的版本是否最新,是否与Flutter SDK兼容,如果必要可以暂时注释掉该依赖进行测试。