You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Clima Flutter天气App时遇MissingPluginException错误求助

解决Clima-Flutter项目中Geolocator旧版本的Android嵌入兼容问题

你的问题核心是geolocator: ^3.0.1依赖旧版Android V1嵌入框架,和当前Flutter默认的V2嵌入不兼容,导致插件废弃警告、MissingPluginException,以及依赖冲突引发的编译超时。以下是针对性解决步骤:

1. 升级核心插件到兼容V2嵌入的版本

打开项目根目录的pubspec.yaml,替换旧版本依赖为最新稳定版(确保和项目其他依赖兼容):

geolocator: ^11.0.0
permission_handler: ^11.0.0
# 若项目用到google_api_availability,同步升级到最新兼容版

执行命令更新依赖:

flutter pub get

如果出现依赖冲突,执行flutter pub upgrade强制升级,或调整冲突依赖的版本限制。

2. 配置Android V2嵌入环境

  • 打开android/app/src/main/AndroidManifest.xml,添加V2嵌入标识和必要权限:
    <application ...>
        <!-- 声明使用V2嵌入 -->
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
        
        <!-- 添加位置权限 -->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <!-- Android 12+ 需额外添加 -->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    </application>
    
  • 打开android/app/build.gradle,升级编译目标版本:
    android {
        compileSdkVersion 33
    
        defaultConfig {
            targetSdkVersion 33
            // 保留原有其他配置
        }
    }
    

3. 修复MissingPluginException

  • 执行清理命令清除缓存:
    flutter clean
    
  • 删除android/.gradle、android/app/build目录,重新执行flutter pub get和flutter run,确保插件原生代码正确编译。

4. 解决编译超时问题

编译超时多因旧插件依赖的仓库速度慢或gradle版本不兼容:

  • 修改android/build.gradle的仓库配置为国内镜像加速:
    buildscript {
        repositories {
            maven { url 'https://maven.aliyun.com/repository/google' }
            maven { url 'https://maven.aliyun.com/repository/jcenter' }
            mavenCentral()
        }
    }
    
    allprojects {
        repositories {
            maven { url 'https://maven.aliyun.com/repository/google' }
            maven { url 'https://maven.aliyun.com/repository/jcenter' }
            mavenCentral()
        }
    }
    
  • 打开android/gradle/wrapper/gradle-wrapper.properties,使用Flutter推荐的gradle版本(如Flutter 3.16+对应gradle 8.0+):
    distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip
    

5. 适配新版本API

旧版Geolocator的API和新版本差异较大,需调整项目代码:

  • 位置获取:将Geolocator().getCurrentPosition()替换为Geolocator.getCurrentPosition()
  • 权限检查:将PermissionHandler().checkPermissionStatus()替换为Permission.location.status(基于最新permission_handler API)
  • 其他API变化参考新版本插件的官方文档调整。

内容的提问来源于stack exchange,提问作者Aditi Gawande

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:52:55