如何解决Flutter项目中「Exception: Gradle task assembleDebug failed with exit code 1」错误?
解决permission_handler编译错误的方案
看起来你遇到的核心问题是permission_handler 8.2.5版本依赖了Android 11(API 30,对应VERSION_CODES.R)和Android 12(API 31,对应VERSION_CODES.S)的权限相关API,但你的项目targetSdkVersion设置为29(Android 10),导致编译时找不到这些新API的符号,从而抛出大量"找不到符号"的错误。
下面给你两种可行的解决路径:
路径一:升级Android项目配置适配高版本依赖
如果你愿意升级项目的Android目标版本,可以按以下步骤操作:
- 打开
android/app/build.gradle文件,修改compileSdkVersion和targetSdkVersion为至少30(推荐31,覆盖新蓝牙权限的支持):
android { compileSdkVersion 31 defaultConfig { minSdkVersion 23 targetSdkVersion 31 multiDexEnabled true } }
- 执行以下命令清理缓存并重新拉取依赖:
flutter clean flutter pub get
- 重新尝试编译项目,此时应该能找到对应的API符号,解决编译错误。
路径二:降级permission_handler到兼容targetSdk 29的版本
如果暂时不想升级Android目标版本,可以将permission_handler降级到兼容API 29的版本:
- 在
pubspec.yaml中明确指定你原本声明的8.1.4+2版本,同时添加依赖覆盖(防止其他依赖间接升级该包):
dependencies: # 其他依赖保持不变 permission_handler: ^8.1.4+2 dependency_overrides: permission_handler: 8.1.4+2
- 同样执行清理和拉取依赖的命令:
flutter clean flutter pub get
- 重新编译项目,此时使用的permission_handler版本不会调用API 30+的符号,就能正常编译了。
另外提一句:你看到的那些"使用或覆盖了已废弃的API"的警告只是提示,不会影响编译成功,主要的阻碍还是permission_handler版本和Android目标版本不匹配的问题。
内容的提问来源于stack exchange,提问作者Tanu Kushwaha
相关产品推荐
相关产品推荐

