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,且持续更新:
- 修改
pubspec.yaml替换依赖:
dependencies: # 移除simple_permissions: ^0.1.9 permission_handler: ^10.2.0 # 建议使用最新版本
- 执行
flutter pub get更新依赖 - 替换代码中的权限逻辑:比如检查权限用
Permission.location.status,请求权限用Permission.location.request(),参考该包的官方API说明调整代码即可。
两种方案都能解决问题,方案二更推荐,毕竟停止维护的插件后续可能还会出其他兼容性问题。
内容的提问来源于stack exchange,提问作者Vikas Y
相关产品推荐
相关产品推荐

