Gradle构建失败异常:android扩展无法获取ndkVersion未知属性
问题产生原因
- 核心诱因为构建插件版本严重不兼容:当前配置的
com.android.tools.build:gradle:3.2.1(Android Gradle插件,简称AGP)版本过低,该版本为2018年发布的旧版本,构建DSL中尚未支持ndkVersion配置项(该属性从AGP 3.4版本才正式加入对外API),当:app模块构建配置中声明了ndkVersion参数时,老版本AGP无法识别该属性,直接抛出未知属性错误。 - 配置的Kotlin版本为1.6.21,与3.2.1版本AGP、3.0.0版本google-services插件存在API断层:高版本Kotlin插件会调用Gradle高版本才提供的
ProjectLayout.fileProperty方法,而与AGP3.2.1匹配的Gradle 4.6版本未实现该方法,触发连锁的方法找不到异常。 - 报错指向根build.gradle第27行,是因为该行的
evaluationDependsOn(':app')配置触发了对app模块的配置评估流程,异常实际在评估app模块配置时抛出,并非该行代码本身存在语法错误。
修复方案
优先选择升级插件到官方验证过的兼容版本组合,从根源解决兼容问题,操作步骤如下:
- 替换根目录
android/build.gradle中buildscript的依赖块为以下兼容版本配置:
buildscript { ext.kotlin_version = '1.6.21' repositories { google() mavenCentral() } dependencies { classpath 'com.google.gms:google-services:4.3.13' classpath 'com.android.tools.build:gradle:7.1.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
- 修改
android/gradle/wrapper/gradle-wrapper.properties文件内的Gradle分发地址,匹配AGP 7.1.3要求的Gradle运行时版本,将对应配置项改为:distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip - 执行构建同步,如果提示找不到对应版本NDK,打开SDK Manager在SDK Tools分类下勾选安装对应版本的NDK即可,无需修改业务模块的现有构建配置。
备用降级方案(非必要不推荐):如果受项目限制无法升级AGP,需要将Kotlin版本降级到1.3.72及以下、与AGP3.2.1兼容的版本,同时删除app模块build.gradle中的
ndkVersion配置项,改为在local.properties文件中添加ndk.dir=本地NDK存放路径指定NDK位置。该方案后续会出现大量第三方依赖兼容问题,仅作临时应急使用。
内容的提问来源于stack exchange,提问作者Diljith
相关产品推荐
相关产品推荐

