Flutter 版本 3.27.0 抛出异常 - Android 的 MissingPluginException 和 PlatformException

问题描述 投票:0回答:1

我在使用最新版本的 Flutter(3.27.0)时遇到一些错误。我在应用程序中使用的很多软件包在 iOS 上运行良好,但在 Android 上则不然。它们通常会抛出 MissingPluginImplementation(在通道上找不到方法的实现)或 PlatformException(无法在通道上建立连接)等异常。

我尝试了通常的方法 - 升级所有软件包 -> flutter clean -> flutter pub cache clean -> flutter run。

如果有人能帮助我解决这个问题,我将非常感激。预先感谢。

android flutter gradle flutter-dependencies
1个回答
0
投票

Flutter 中的

MissingPluginException
PlatformException
,特别是在 Flutter 版本 3.27.0 上,通常表示 Dart 与特定于平台的(原生)Android 代码之间的集成问题。

这是解决此问题的结构化故障排除方法:

MissingPluginException 和 PlatformException 的常见原因

  1. Flutter 插件未正确注册
  2. 添加或修改插件后热重启而不是完全重启
  3. 插件与 Flutter 或 Android SDK 版本不匹配
  4. AndroidManifest.xml
     或 Gradle 文件中缺少或不正确的 Android 配置
  5. 过时的 Gradle 版本或依赖项
  6. Flutter 的构建缓存问题

解决问题的步骤

  1. 运行干净的构建 有时 Flutter 版本可能不包含新添加或更新的插件。
  • 在终端中运行以下命令:

    flutter clean
    flutter pub get
    flutter run
    
    • flutter clean
      清除所有构建缓存。
    • flutter pub get
      获取并重新配置所有依赖项。
  1. 应用程序完全重启
  • 添加或更改插件后,热重启并不总是重新注册平台插件。
  • 执行完全重启
    • 停止应用程序。
    • 使用
      flutter run
      重新启动。
  1. 确保插件与Flutter版本兼容
  • 检查插件是否与Flutter 3.27.0兼容。

    • 通过运行以下命令更新所有插件:
      flutter pub upgrade
      
    • pubspec.yaml
      中验证插件版本。使用流行插件的最新版本。

    示例:

    dependencies:
       flutter:
         sdk: flutter
       path_provider: ^2.1.1 # Check for latest version
       shared_preferences: ^2.2.0
    

    您可以在 pub.dev 上检查更新。

  1. 正确的Android配置

    • 确保 minSdkVersion
       文件中的 
      compileSdkVersion
      android/app/build.gradle
       满足插件要求。

    示例:

    android {
        compileSdkVersion 34
    
        defaultConfig {
            minSdkVersion 21
            targetSdkVersion 34
        }
    }
    
    • 确保您的
      MainActivity
      文件扩展
      FlutterActivity
      :
    package com.example.myapp;
    
    import io.flutter.embedding.android.FlutterActivity;
    
    public class MainActivity extends FlutterActivity {
    }
    
  2. 重新生成特定于平台的代码 如果平台代码已损坏或过时,请重新生成。

  • 运行:
    flutter create .
    
    此命令会重新创建特定于平台的目录,而不会覆盖您的项目代码。
  1. 检查 Gradle 和 Kotlin 兼容性
  • 更新android/build.gradle中的Gradle包装器

    Kotlin版本

    buildscript {
         ext.kotlin_version = '1.9.0'
         repositories {
             google()
             mavenCentral()
         }
    
         dependencies {
             classpath 'com.android.tools.build:gradle:8.1.0'
             classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
         }
    }
    

    更新gradle-wrapper.properties中的

    Gradle包装器版本

    distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
    
  1. 检查插件初始化 有些插件需要在原生 Android 代码中进行初始化。
  • 如果您的插件文档提到手动初始化,请在
    MainActivity
    MainApplication
    中验证其是否正确实现。
  1. 调试错误 如果问题仍然存在:
  • 添加
    print
    语句或调试日志来识别导致问题的插件。
  • 为 Flutter 启用详细日志记录:
    flutter run -v
    

特定于平台的示例 如果您使用的是

shared_preferences
这样的插件,当平台代码无法与Flutter连接时,可能会出现此错误。解决方案包括:

  1. 确保插件包含在项目中。
  2. 验证依赖关系并正确的 Android 配置。

重建应用程序 应用所有修复后:

  • 卸载模拟器/设备上的应用程序。
  • 重建项目:
    flutter clean
    flutter pub get
    flutter run
    

如果问题仍然存在,请分享终端的详细错误日志,我可以为您提供进一步帮助! 🚀

© www.soinside.com 2019 - 2024. All rights reserved.