buildTypes 不能应用于 groovy.lang.Closure
Posted
技术标签:
【中文标题】buildTypes 不能应用于 groovy.lang.Closure【英文标题】:buildTypes cannot be applied to groovy.lang.Closure 【发布时间】:2015-05-21 22:02:53 【问题描述】:我在我的项目 gradle 文件中收到此警告:
警告:(16, 5) 'buildTypes' 不能应用于 '(groovy.lang.Closure
)'
我的 buildTypes 部分是:
buildTypes
debug
debuggable true
release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
我目前使用的是 Android Studio 1.1.0、compileSdkVersion 22、buildToolsVersion 22.0.0 和 targetSdkVersion 22。我尝试退回到 21,但仍然收到警告。
是什么导致了这个警告以及它是如何解决的?
【问题讨论】:
你申请了插件:'com.android.aplication'还是'com.android.library'? @Kirill: com.android.application 【参考方案1】:对我来说,应用上述解决方案并没有解决问题。相反,我必须转到 Android Studio 中的设置并选择“使用 gradle wrapper”:
在 Android Studio 中选择: 文件\设置\构建、执行、部署\构建工具\Gradle
(Mac 用户:Android Studio\Preferences...\Build, Execution, Deployment\Build tools\Gradle)
标记:使用默认的 gradle 包装器(默认)
这删除了构建文件中的所有“不能应用于”(groovy.lang.Closure') 警告。
【讨论】:
这是正确的答案,当我在 Windows 上打开项目然后在 Linux(通过 Dropbox)上打开项目时发生了问题,它改变了 gradle 分发的位置,所以最好使用默认的 gradle包装器。 我遇到了同样的问题。我的队友在 Windows 机器上工作。获取更新给了我这个问题 @Waterbear 因此,我已经编辑了原始答案(我也为此搜索了一段时间:D)。经过同行评审后,它将可用:) 请参阅:i.imgur.com/BtCijIW.png Mac 上的 1.3.1 AS 不知何故在 Build -> Clean 上重置了此设置。将其设置回去修复构建。谢谢! Android Studio 有点愚蠢,当我通过构建目标 22 和 buildToolsVersion 22.0.1 制作时,它开始向我显示警告......对我来说,“使用默认 gradle 包装器”已经被标记为默认值(AS 2.0 Beta)...我只是剪切我的代码块并粘贴在同一个地方(没有代码更改,没有配置更改)......警告已被删除!【参考方案2】:我有同样的问题。将 buildTypes 作为 android 部分中的最后一个条目移动对我有用。
android
...
buildTypes
【讨论】:
奇怪的是它的位置应该会有所作为,但显然确实如此。 这也适用于我。你有什么想法吗?谢谢。 这似乎也对我有用,但后来我撤消了这些更改并将该块复制/粘贴到同一个地方,警告也消失了。然后我尝试撤消这一切并关闭并重新打开项目以复制警告,但它消失了。我认为这只是那些类型的警告之一。 对我来说,几乎所有警告都被彼得的回答清除了,除了关于buildTypes
的警告。然后,这个解决方案适用于最后一个!【参考方案3】:
1 在“android”部分的相同位置剪切并粘贴“buildTypes”
2 重新同步项目
【讨论】:
【参考方案4】:要解决此问题,请在您的 Android Studio 中转到 文件 -> 设置。 在设置中选择构建、执行、部署 -> 构建工具 -> Gradle 并选择“使用默认 gradle wrapper(推荐)” 选项。
重建后,您的 build.gradle 将完全正常。
【讨论】:
这是正确答案,或者您可以选择合适的 gradle 位置 与@Peter 的回答有何不同。【参考方案5】:如果以上选项均无效,请执行以下操作
-
在“Project Explorer”中将项目更改为
Project
透视图。
删除.gradle
和build
文件夹。
单击文件 -> 使缓存无效/重新启动... -> 无效并重新启动
现在可以正常工作了,编码愉快。
【讨论】:
【参考方案6】:我设法通过简单地这样做来解决我的问题: 单击“文件”,然后选择“使缓存无效/重新启动”
【讨论】:
【参考方案7】:解决此 Gradle 问题的最简单方法是重新创建项目以让 Android Studio 重新配置 Gradle。
只需选择“打开现有的 Android Studio 项目”并选择您的项目文件夹。
更多详情here.
【讨论】:
【参考方案8】:这对我有用:
buildTypes.debug
ext.enableCrashlytics = false
buildTypes.release
debuggable false
zipAlignEnabled true
minifyEnabled false
signingConfig signingConfigs.release
【讨论】:
【参考方案9】:当您将项目导入环境并且 Gradle 插件安装在与原始位置不同的位置时,就会出现问题。你只需要指出你的 Gradle 安装在哪里。
在彼此之间移动 buildTypes 或 defaultConfig 或其他任何东西都不是一个完整的解决方案
【讨论】:
这就是我最终解决这个问题的方法... 1. 在 Android Studio 中导航到:文件 |设置 |文件 |设置 |构建、执行、部署 |构建工具 | Gradle 2. 确保未选中此选项,尽管建议保留...使用默认 Gradle Wrapper(推荐)3. 并且已选中此选项...使用本地 gradle 分发 4. 并且 Gradle Home 设置为这个,可能是以后的 gradle-nn ... C:/Program Files/Android/Android Studio1/gradle/gradle-2.4 您可能需要重新启动 Android Studio,重建项目等,但问题已解决。【参考方案10】:目前的问题是,您在升级时可能导入的 Android Studio 设置仍然指向 gradle-2.4 或 Android Studio 1.5 预期之外的其他版本。
要解决这个问题,你应该打开 Settings 并转到 Build, Execution, Deployment > Build Tools > Gradle 并更改本地 gradle 发行版的主路径 或选择默认的 gradle 包装器。
应用并重新同步您的项目。
【讨论】:
【参考方案11】:我遇到了同样的问题。我开始了一个新项目并且它有效,所以我只是复制了 build.gradle 文件。就我而言,唯一的区别是缺少 compileOptions 部分。我从我的项目中删除了它,同步了 gradle,重新插入了 compileOptions 部分,然后再次同步了 gradle。
【讨论】:
【参考方案12】:在您的 Android Studio 中,转到文件 -> 设置。接下来选择 Build, Execution, Deployment -> Build Tools -> Gradle 并选择“Use default gradle wrapper (recommended)”。
重建项目。
【讨论】:
【参考方案13】:在我的情况下,我的 buildTypes
部分高于我的 productFlavors
部分。交换他们的位置摆脱了警告:
之前:
buildTypes
debug
minifyEnabled false
shrinkResources false
...//etc
productFlavors
demo
...//etc
之后:
productFlavors
demo
...//etc
buildTypes
debug
minifyEnabled false
shrinkResources false
...//etc
我正在使用 Android Studio 2.1.2,在 android
部分的顶部有以下配置:
android
compileSdkVersion 24
buildToolsVersion "23.0.3"
defaultConfig
applicationId "com.xyz.abc"
minSdkVersion 14
targetSdkVersion 24
//..etc
【讨论】:
【参考方案14】:将 gradle-wrapper.properties 中的 distributionUrl=https://services.gradle.org/distributions/gradle-2.1-bin.zip 更改为 gradle-2.1-all.zip 为我解决了问题。
【讨论】:
【参考方案15】:我曾经在更新 Android Studio 后收到此警告。
当我转到 Settings>>Build Tools>>Gradle 时,我发现本地 Gradle 路径无效,因为 gradle 版本也从 2.6 更新到 2.8。
修复了新路径并重新同步 gradle 删除了警告。
另一种方法是使用gradlewrapper
。
【讨论】:
【参考方案16】:编辑: 这就是我最终解决这个问题的方法......
在 Android Studio 中导航到:
文件 |设置 |构建、执行、部署 |构建工具 |摇篮
确保未选中此项,尽管建议保留...
使用默认 Gradle Wrapper(推荐)
并且这个被检查了......
使用本地 gradle 分发
Gradle Home 设置为这个,可能还有一个以后的 gradle-n.n ...
C:/Program Files/Android/Android Studio1/gradle/gradle-2.4
您可能需要重新启动 Android Studio、重建项目等,但问题已解决。
编辑结束。
我发布此消息是为了建议其他任何对此问题不熟悉的人忽略它。无论如何,该项目都能完美运行。这只是构建系统中的一个错误,希望很快得到修复。我发表了评论并在这里投票,这又是一个活跃的话题......
https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=76719
在尝试了以下三个线程中的建议均未成功后,我从头开始重新制作了整个项目。我开始了一个新的 Android Studio 项目,将所有原始库和主文件复制到其中,忽略了构建系统生成的任何文件并重新构建了项目。一切都很好,除了所有那些“不能应用于'(groovy.lang.Closure)'”的警告再次出现。然后我再次查看了这些建议,以确保我没有忽略某些东西。
1 buildTypes cannot be applied to groovy.lang.Closure 转到 Android Studio 中的设置并选择“使用 gradle wrapper”: 在 Android Studio 中选择:File\Settings\Build, Execution, Deployment\Build tools\Gradle 标记:使用默认的 gradle 包装器(默认) 这删除了构建文件中的所有“不能应用于”(groovy.lang.Closure)警告。
2 'dependencies' cannot be applied to '(groovy.lang.Closure)' 打开并编辑文件:yourproject/gradle/wrapper/gradle-wrapper.propertie。编辑内容如下图,然后保存。 删除此文件夹:yourproject/.gradle。 点击 Sync project with gradle files,然后你就可以开始了。
3 https://github.com/DrKLO/Telegram/issues/870
我的配置是: Android Studio 1.3,compileSdk 版本 22,buildTools 版本“22.0.1”
【讨论】:
【参考方案17】:删除app文件夹下的gradle文件夹并重新同步项目
【讨论】:
【参考方案18】:我要做的就是删除
productFlavors
来自
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
productFlavors
警告消失了。
最后的样子是这样的
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
【讨论】:
【参考方案19】:将buildToolsVersion
从
android
compileSdkVersion 24
buildToolsVersion "24.0.2"
..
到
android
compileSdkVersion 24
buildToolsVersion "24.0.1"
..
为我工作。
【讨论】:
以上是关于buildTypes 不能应用于 groovy.lang.Closure的主要内容,如果未能解决你的问题,请参考以下文章
无法为 BuildType_Decorated 获取“applicationVariants”的未知属性
Android Gradle 插件BuildType 编译类型配置 ① ( BuildType 编译类型简介 | BuildType#applicationIdSuffix 包名后缀配置 )
Android Gradle 插件BuildType 编译类型配置 ⑦ ( BuildType#testCoverageEnabled 配置 )
Android Gradle 插件BuildType 编译类型配置 ⑥ ( BuildType#signingConfig 配置 )