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

切换分支后Flutter应用运行失败 permission_handler编译报错

问题根因

构建失败由两个因素共同导致:

  • 项目依赖的permission_handler 8.3.0插件Android端代码,调用了两个在Android SDK 31+版本中被标记为废弃的PackageManager API:queryIntentActivities(Intent,int)、getPackageInfo(String,int),编译时触发废弃警告
  • 项目Android编译配置开启了-Werror参数,会将所有Java编译警告直接判定为错误,直接中断编译流程
    分支切换只是触发场景,本质是新分支的依赖锁定版本、编译SDK版本、编译参数组合触发了该问题,和切分支操作本身没有直接关系。
修复方案

方案1:升级permission_handler依赖(推荐,长期有效)

适用场景:项目可正常升级依赖,无版本锁定限制
permission_handler在8.3.0之后的版本已经完成了高版本Android SDK的API适配,修复了废弃API调用问题,升级即可从根源解决:

  1. 打开项目根目录的pubspec.yaml文件
  2. 找到permission_handler依赖项,将版本调整为适配当前Flutter版本的稳定版,示例:
dependencies:
  flutter:
    sdk: flutter
  permission_handler: ^10.4.5 # 可根据项目Flutter SDK版本选择对应兼容版本
  1. 依次执行以下命令更新依赖、清理缓存后重新启动应用:
flutter pub get
flutter clean
flutter run

方案2:关闭-Werror编译校验(临时方案,快速恢复构建)

适用场景:短期需要快速跑通项目,暂时无法升级插件
如果暂时不能调整插件版本,可以修改编译配置,关闭「警告即错误」的校验规则,跳过该编译拦截:

  1. 打开android/app/build.gradle文件
  2. 在android配置块中添加/修改如下配置:
android {
    // 原有其他配置保持不变
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
        warningsAsErrors false // 关闭Java编译警告报错
    }
    // 如果项目接入了Kotlin,需要同步添加以下配置
    kotlinOptions {
        jvmTarget = '1.8'
        allWarningsAsErrors = false // 关闭Kotlin编译警告报错
    }
}
  1. 如果上述配置不生效,打开android/gradle.properties文件,添加如下配置:
org.gradle.jvmargs=-Xmx2048m -Werror=false
  1. 执行flutter clean清理缓存后重新构建即可。

方案3:固定编译SDK版本(老项目兼容方案)

适用场景:历史项目无法升级插件、也不能调整编译校验规则
这两个API的废弃标记是从Android 12(SDK 31)开始加入的,将编译SDK版本固定为30即可避免触发该警告:

  1. 打开android/app/build.gradle文件
  2. 找到compileSdkVersion配置项,修改为:
android {
    compileSdkVersion 30 // 固定为30,不要使用31及以上版本
    defaultConfig {
        // 其余配置保持不变
    }
}
  1. 清理缓存后重新构建即可。注意:过低的编译SDK版本可能导致其他依赖高版本SDK的插件无法正常编译,仅作为兼容老项目的备选方案。
排查验证步骤
  • 每次修改配置后必须先执行flutter clean清除历史构建缓存,避免旧产物干扰编译结果
  • 如果修改依赖后版本不生效,可删除Flutter SDK下.pub-cache/hosted/pub.dartlang.org/路径中的permission_handler-8.3.0文件夹,再重新执行flutter pub get拉取依赖
  • 检查新分支下的pubspec.lock文件,确认permission_handler的实际解析版本和配置版本一致,避免分支的依赖锁定规则导致升级不生效

内容的提问来源于stack exchange,提问作者Arjun Malhotra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:54:18