Android Studio构建失败,在根项目'MyProject'中找不到"任务"."

Tom*_*son 87 android build gradle android-studio

在更换笔记本电脑并更新到Android Studio版本0.8.2后尝试构建项目时出现此错误.

FAILURE:构建因异常而失败.

  • 出了什么问题:在根项目'MyProject'中找不到任务''.

  • 尝试:运行gradle任务以获取可用任务列表.使用--stacktrace选项运行以获取堆栈跟踪.使用--info或--debug选项运行以获取更多日志输出.

建筑失败

这是我的Gradle文件:

顶级settings.gradle

include ':MyProject'
Run Code Online (Sandbox Code Playgroud)

MyProject中的build.gradle:

apply plugin: 'com.android.application'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:0.12.+"
    }
}
repositories {
    mavenCentral()
}

android {
    compileSdkVersion 20
    buildToolsVersion "20"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 20
    }
}

dependencies {
    compile 'de.timroes.android:EnhancedListView:0.3.0@aar'
    compile 'com.nineoldandroids:library:2.4.0'
}
Run Code Online (Sandbox Code Playgroud)

顶级build.gradle为空

ǝɲǝ*_*ρɯͽ 61

虽然回答很晚,但这对谷歌来说很难(单引号)并且不清楚发生了什么.我还没有声誉评论或要求范围(或发布3个链接),所以这个答案可能有点单调乏味.

要快速回答,您的项目中可能有多个Gradle插件.

同步Gradle Wrapper和插件

我的问题似乎从一个损坏的IML文件开始.Android Studio(在关闭和重新打开项目之间)开始抱怨IML已经消失(它不是)并且应该删除一个模块,我拒绝了.它持续存在,我升级到AS 0.8.7(金丝雀频道)并陷入OP问题(在根项目中找不到任务').这完全阻止了构建,所以我不得不深入Gradle.

我在OSX上的修复步骤(请针对Windows进行调整):

  1. 将Android Studio升级到0.8.7
    • 偏好| 更新| 将"Beta Channel"切换为"Canary Channel",然后立即检查.
    • 你可以跳过这个.
  2. 检查Gradle包装器(当前为1.12.2;此时不要尝试使用2.0).

    • 假设您不需要特定版本,请使用最新支持的分发版

      $ vi ~/project/gradle-wrapper.properties ... distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip

    • 这可以在首页|中的Android Studio中设置 Gradle(但是0.8.7给了我"无效位置"错误).

    • "包装器"只是每个Android Studio项目的Gradle副本.它允许您在操作系统中使用Gradle 2,在项目中使用不同的版本.Android Developer文档在此解释.
    • 然后调整插件的 build.gradle文件.Gradle插件版本必须与整个项目的分发/包装版本兼容.由于Tools文档(tools.android.com/tech-docs/new-build-system/user-guide#TOC-Requirements)略有过时,您可以将插件版本设置得太低(如0.8.0)和Android Studio将在包装器的可接受范围内抛出错误.

例如,在build.gradle中,你有这个插件:

dependencies {
    classpath "com.android.tools.build:gradle:0.12.+"
}
Run Code Online (Sandbox Code Playgroud)

您可以尝试将其切换到确切的版本,如下所示:

dependencies {
    classpath "com.android.tools.build:gradle:0.12.2"
}
Run Code Online (Sandbox Code Playgroud)

和(在记录了每种情况下你正在改变的版本之后)验证项目中的每个build.gradle文件是否都使用相同的插件版本.保持"+"应该可以工作(对于0.12.0,0.12.1,0.12.2等),但是当我更新Google的Volley库(原来是gradle:0.8.+)和我的主项目(最初为0.12)时,我的构建成功了. +)到固定版本:gradle:0.12.2.

其他检查

  1. 确保您在同一个Project中没有两个Android应用程序模块

    • 这可能与最终解决方案(上面的不同Gradle版本)和原因相互作用

      UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define (various classes)

    • 检查,构建| Make Project不应该弹出一个窗口,询问你想要制作什么样的应用程序.

  2. 使您的缓存无效
    • 档案| 无效缓存/重新启动(stackoverflow.com/a/19223269/513413)
  3. 如果步骤2不起作用,请删除〜/ .gradle /(www.wuttech.com/index.php/tag/groovy-lang-closure/)
    • 退出Android Studio
    • $ rm -rf~/.gradle /
    • 启动Android Studio,然后同步:
      • 工具| Android | 使用Gradle文件同步项目
    • 在放弃之前重复整个序列(退出...同步)几次.
  4. 清理项目
    • 建立| 清洁项目

如果你看到这个......

在我最近的版本中,我一直看到可怕的失败(异常页面),但在几秒钟内消息就会清除,构建成功并部署应用程序.由于我无法解释它并且应用程序有效,我从未注意到我的项目中有两个Gradle插件.所以我认为Gradle插件相互争斗; 一个坠毁,另一个失去了状态并报告了错误.

如果你有时间,1小时的视频"A Gentle Introduction to Gradle"(www.youtube.com/watch?v=OFUEb7pLLXw)确实帮助我处理了Gradle构建文件,任务,构建决策等.

放弃

在完成不同的职业生涯之后,我在外国操作系统上学习整个堆栈......所有这些都在同一时间和压力之下.在过去的几个月里,我遇到了我认为Android所拥有的每一面墙; 我经常来这里,这是我的第一篇文章.我认为这是一个难以解决的问题,所以如果我的答案的质量反映了我遇到的困难,我真诚地道歉.


小智 24

从sdk manager下载已导入项目的系统映像(项目的目标android级别).

如果您没有在sdk文件夹中安装Android项目的目标sdk,则会出现此错误

例如.你导入的项目的目标sdk级别可能是android-19,在sdk文件夹 - >系统映像上你可能安装了android-21.所以你必须从sdk管理器下载android-19系统映像和其他文件,或者你可以复制粘贴它,如果你有系统映像.


ton*_*oni 13

去掉:

<facet type="android" name="Android">
    <configuration />
</facet>
Run Code Online (Sandbox Code Playgroud)

在你的iml文件中.这对我行得通.

https://plus.google.com/+AlexRuiz/posts/49hP3V9GSGe


小智 9

最近,当我关闭一个Android Studio项目并导入另一个Eclipse项目时,这种情况发生在我身上.它似乎是Android Studio中的一些错误,它保留了之前打开的项目中的一些gradle设置,然后在新项目中感到困惑.

解决方案非常简单:关闭项目并完全关闭Android Studio,然后重新打开它,然后导入/打开新项目.从那时起一切顺利.


Dav*_*vid 6

显然这个错误有多种原因。这就是为我解决的问题。

我正在运行这样的构建命令:

./gradlew :testapp: build
Run Code Online (Sandbox Code Playgroud)

在没有空格的情况下运行它解决了问题:

./gradlew :testapp:build
Run Code Online (Sandbox Code Playgroud)


Jos*_*osh 5

从一个 Git 分支切换到另一个 Git 分支,然后尝试运行“Clean Project”时,我遇到了此错误。我用了ack搜索任务名称,并在 .iml 文件中找到它。

我的解决方案是通过单击(在主菜单中)工具 > Android > 与 Gradle 文件同步项目来重新生成项目的 .iml 文件。感谢这个答案。)