引入cryptography_flutter编译Android时找不到gradle:4.1.1依赖报错
问题诱因
- 核心原因是当前引用的
cryptography_flutter版本存在原生构建配置错误:该版本硬编码了不存在的构建依赖com.android.extensions.build:gradle:4.1.1,这个构件从未发布到google、mavenCentral等任何公共Maven仓库,和本地仓库配置没有关系。 - 后续抛出的
Could not get unknown property 'android'属于连锁报错:前置依赖拉取失败后,插件的Android构建脚本没有拿到Android Gradle插件(AGP)的初始化上下文,才会触发属性找不到的错误,不是独立问题。
修复方案
- 优先升级依赖版本:直接将
pubspec.yaml中的cryptography_flutter升级到最新稳定版,官方已经在后续版本中删除了这个错误的构建依赖,升级后执行flutter pub get拉取最新包即可正常编译,不需要额外调整Maven仓库配置。 - 版本锁定场景适配:如果项目有其他依赖约束无法升级
cryptography_flutter,可以在项目根目录的android/build.gradle中添加全局依赖替换规则,把错误的依赖坐标替换为项目当前正在使用的AGP版本,示例配置:
allprojects { configurations.all { resolutionStrategy { // 替换为项目实际使用的AGP版本即可,比如7.4.2、8.1.0等 dependencySubstitution { substitute module('com.android.extensions.build:gradle:4.1.1') using module("com.android.tools.build:gradle:你的项目AGP版本号") } } } }
添加配置后执行flutter clean清理构建缓存,重新编译即可。
- 临时应急方案:如果上述方案都不生效,可以直接打开Pub缓存目录下对应版本
cryptography_flutter的android/build.gradle文件,手动删除文件中声明com.android.extensions.build:gradle:4.1.1的classpath依赖行,修改后直接编译即可,注意修改后不要执行flutter pub get覆盖本地修改。
内容的提问来源于stack exchange,提问作者Sgorbyo
相关产品推荐
相关产品推荐

