升级Android Studio 3.1后遇defaultConfig未被Gradle插件识别错误
解决Android Studio 3.1升级后「SourceSet 'defaultConfig' is not recognized」错误
嘿,这个问题我太熟了!你升级到Android Studio 3.1后碰到的这个报错,本质是Gradle插件3.0+对构建脚本的结构规范要求更严格了——大概率是你把defaultConfig放错位置啦!
问题根源
从你贴的代码片段来看,应该是把defaultConfig写到了android代码块的外面,或者嵌套层级出错了。在Gradle插件3.0+里,defaultConfig是属于Android构建配置的一部分,必须放在android { ... }内部;如果放在外面,Gradle会误以为它是一个「SourceSet(源码集)」,而这个名字根本不是合法的源码集名称,所以就报错说不认识它了。
正确的build.gradle结构示例
你可以对照下面的规范结构调整你的代码:
apply plugin: 'com.android.application' // 这个buildscript块是配置Gradle自身依赖的,要放在android块外面 buildscript { repositories { mavenCentral() maven { url 'https://maven.google.com/' name 'Google' } } dependencies { classpath 'com.android.tools.build:gradle:3.1.0' classpath 'com.google.gms:google-services:3.1.1' } } // 核心:android块是配置App构建参数的地方,defaultConfig必须在这里面 android { compileSdkVersion 28 // 替换成你项目实际用的SDK版本 buildToolsVersion "28.0.3" // 对应你的buildTools版本 defaultConfig { applicationId "com.your.package.name" // 你的包名 minSdkVersion 15 targetSdkVersion 28 versionCode 1 versionName "1.0" } // 其他Android相关配置,比如构建类型、产品风味都放这里 buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } // 依赖配置块要放在android块外面 dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) // 你的其他依赖,比如implementation 'com.android.support:appcompat-v7:28.0.0'之类的 } // 注意:google-services插件要放在整个脚本的最后 apply plugin: 'com.google.gms.google-services'
几个关键注意点
- 一定要确保
defaultConfig完全嵌套在android { ... }代码块内部,不能放在外面或者其他错误层级 - 检查代码缩进!很多时候都是缩进混乱导致的结构错误,Gradle对嵌套层级很敏感
- Gradle 3.0+对构建脚本的规范要求比旧版本高很多,之前低版本能“蒙混过关”的不规范写法,高版本直接就会报错
内容的提问来源于stack exchange,提问作者koushik v
相关产品推荐
相关产品推荐

