Flutter使用nfc_manager插件启动时出现Gradle构建报错求助
Flutter nfc_manager插件构建报错排查方案
核心报错原因
- 依赖拉取超时:老版本nfc_manager默认依赖已停止服务的jcenter仓库拉取
org.ow2.asm系列依赖,网络访问超时直接导致依赖解析失败 - 配置读取报错属于连锁问题:依赖解析失败时,Gradle没有完成nfc_manager模块的Android工程配置加载,后续读取
android扩展属性时自然找不到对应对象,不是插件本身缺失Android配置。
解决步骤
- 调整项目全局仓库源
打开项目路径下的android/build.gradle文件,分别找到buildscript和allprojects两个块下的repositories配置,注释掉原有jcenter()配置,补充可正常访问的maven源,参考配置如下:buildscript { ext.kotlin_version = '1.7.10' // 保留项目原有kotlin版本配置即可 repositories { // 注释掉 jcenter() maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/public' } google() mavenCentral() } dependencies { // 保留项目原有AGP、kotlin插件依赖配置即可 classpath 'com.android.tools.build:gradle:7.2.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { // 注释掉 jcenter() maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/public' } google() mavenCentral() } } - 强制覆盖插件仓库配置(第一步操作后仍报jcenter超时的情况处理)
老版本nfc_manager插件自身的Android构建配置写死了jcenter源,全局项目配置可能无法覆盖插件的buildscript类路径拉取逻辑,打开android/settings.gradle文件,补充全局依赖仓库强制配置:
*如果使用的Flutter版本低于3.0,没有dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/public' } google() mavenCentral() } }dependencyResolutionManagement配置块,直接把上述repositories块的内容放到settings.gradle文件最外层即可。 - 升级插件版本(可选,优先推荐)
3.2.0以下版本的nfc_manager对AGP7+、Gradle7+存在兼容性问题,直接执行命令升级到最新稳定版可以从根源规避大部分配置问题:flutter pub upgrade nfc_manager - 清理缓存重新构建
所有配置改完后,在项目根目录执行以下命令清理旧构建缓存,重新拉取依赖编译:flutter clean flutter pub get flutter run
注意事项
- 不要因为
Could not get unknown property 'android'报错就手动给nfc_manager插件添加Android配置块,这个错误是依赖拉取失败引发的连锁报错,依赖拉取成功后会自动消失,乱改插件配置会引入新的构建问题 - 如果使用了系统代理,检查
~/.gradle/gradle.properties文件内的代理地址、端口配置是否和系统代理一致,配置错误也会导致依赖拉取超时 - 不要修改Pub缓存里的插件源码,后续执行
flutter pub get时缓存内容会被覆盖,修改不会长期生效
内容的提问来源于stack exchange,提问作者Acher Klein
相关产品推荐
相关产品推荐

