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

Flutter升级后引入simple_permissions包编译失败求助

解决Flutter升级后simple_permissions的AndroidX兼容编译错误

这个问题我之前帮朋友排查过,本质就是旧版simple_permissions依赖废弃的Android Support库,而升级后的Flutter默认启用了AndroidX,两者不兼容导致编译失败。Jetifier自动转换工具本来能处理这种情况,但生成settings_aar.gradle失败,我们可以手动配置解决,或者直接换个维护更活跃的权限插件更省心。

方案一:手动配置Jetifier处理simple_permissions

1. 确认项目已启用AndroidX

打开项目根目录下的android/gradle.properties文件,确保包含以下两行配置(没有的话直接添加):

android.useAndroidX=true
android.enableJetifier=true

这两行是启用AndroidX和Jetifier转换的核心配置。

2. 修改settings.gradle手动指定插件Jetifier转换

打开android/settings.gradle,在文件末尾添加以下代码:

def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()

def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
    pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}

plugins.each { name, path ->
    def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
    include ":$name"
    project(":$name").projectDir = pluginDirectory
    // 仅对simple_permissions插件启用Jetifier转换
    if (name == 'simple_permissions') {
        project(":$name").ext.jetifier = true
    }
}

这段代码会手动加载Flutter插件,并强制Jetifier对simple_permissions的旧Support库代码进行转换。

3. 清理缓存并重新构建

执行以下命令彻底清理缓存后重新编译:

flutter clean
# 可选:删除android目录下的.build文件夹
flutter run

方案二:替换为维护活跃的permission_handler插件

simple_permissions最后一次更新是2019年,已经停止维护了,推荐换成官方推荐的permission_handler包,它完全支持AndroidX,且持续更新:

  1. 修改pubspec.yaml替换依赖:
dependencies:
  # 移除simple_permissions: ^0.1.9
  permission_handler: ^10.2.0 # 建议使用最新版本
  1. 执行flutter pub get更新依赖
  2. 替换代码中的权限逻辑:比如检查权限用Permission.location.status,请求权限用Permission.location.request(),参考该包的官方API说明调整代码即可。

两种方案都能解决问题,方案二更推荐,毕竟停止维护的插件后续可能还会出其他兼容性问题。

内容的提问来源于stack exchange,提问作者Vikas Y

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:17:49