Android Studio 和 Gradle - 构建失败

Posted

技术标签:

【中文标题】Android Studio 和 Gradle - 构建失败【英文标题】:Android Studio and Gradle - build fails 【发布时间】:2013-06-13 04:32:36 【问题描述】:

我正在构建一个小型库项目以及一个示例项目来说明使用。我无法在 android Studio 中运行示例。我从头开始创建了这个项目。我对 Eclipse 很有经验,但这是我在 Android Studio 和 Gradle 的第一次尝试。

给出的错误:

Gradle:任务 ':demo:dexDebug' 执行失败。

运行 C:\DevTools\Android\android-studio\sdk\build-tools\android-4.2.2\dx.bat 失败的。查看输出

我有以下文件夹结构:

- demo
  - build
  - libs
    - android-support-v4.jar
  - src
    - main
      - java
      - res
  - build.gradle
- library
  - build
  - libs
    - android-support-v4.jar
  - src
    - main
      - java
      - res
  - build.gradle
- build.gradle
- settings.gradle

项目根目录下的Build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

位于项目根目录的Settings.gradle:

include ':library', ':demo'

库模块的Build.gradle:

buildscript 
    repositories 
        mavenCentral()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:0.4'
    

apply plugin: 'android-library'

dependencies 
    compile files('libs/android-support-v4.jar')


android 
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig 
        minSdkVersion 7
        targetSdkVersion 16
    

示例模块的Build.gradle:

buildscript 
    repositories 
        mavenCentral() 
    
    dependencies 
        classpath 'com.android.tools.build:gradle:0.4'
    

apply plugin: 'android'

dependencies 
    compile project(':library')
    compile files('libs/android-support-v4.jar')


android 
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig 
        minSdkVersion 7
        targetSdkVersion 16
    

【问题讨论】:

【参考方案1】:

指定compile files('libs/android-support-v4.jar') 意味着每个库都包含支持v4。您要做的只是指定每个库都依赖它:

dependencies 
    compile 'com.android.support:support-v4:13.0.0'

这将允许 gradle 检测所有依赖项并仅包含一次。

注意:您必须先使用 SDK Manager 并下载并安装两个 Maven 存储库:“Android Support Repository”和“Google Repository”。

【讨论】:

为我工作 - 花了比必要的时间更长的时间,因为我忽略了 Google 存储库! 是否必须在 Android Studio 中重新导入项目才能生效? 如果我们使用另一个库怎么办?例如,如果我们使用 myLibrary,在依赖项中输入什么内容?【参考方案2】:

我发现了问题:

我从示例 gradle 文件中删除了该行。

compile files('libs/android-support-v4.jar')

但是,我不知道为什么这不起作用(如果我有 2 或 3 个外部库都依赖于支持库,我们应该怎么做,而不接触他们的 gradle 文件?

【讨论】:

但是,如果您的 lib 和主项目中都包含支持库,gradle 或没有 gradle 您只需将它放在 1 个位置,也会发生这种情况。 在 Eclipse 中,只要每个(库)项目的 jar 文件相同,我从来没有遇到过任何问题。【参考方案3】:

您应该导航到 IDE 中的 libs 文件夹,右键单击 jar 并选择将库添加到项目中,即使 jar 似乎在那里,它仍然需要建立依赖关系。还要查看您的 gradle 构建脚本以确保依赖项出现在那里。如果这仍然不起作用,只需在项目上运行 gradle clean 。 Intellij 文档将为您提供有关 clean 功能的更多详细信息。见:

*** gradle build

【讨论】:

【参考方案4】:

在从 Groovy 迁移到 kotlin DSL 时也可能遇到此错误,以下是摆脱它的步骤:

    如果您还在迁移过程中,请先完成gradle文件的迁移,使用kts语法,然后同步 gradle文件。

    在你的 build.gradle(app level) 中使用这个依赖:

    implementation("androidx.legacy:legacy-support-v4:1.0.0")

    从 build.gradle.kts(应用级别)的插件块中删除 id("kotlin-android-extensions")

就是这样!第三点为我解决了这个问题,但尝试所有点肯定可以解决问题。

【讨论】:

【参考方案5】:

在我的情况下替换此行 类路径“com.android.tools.build:gradle:7.0.2”

【讨论】:

以上是关于Android Studio 和 Gradle - 构建失败的主要内容,如果未能解决你的问题,请参考以下文章

android studio gradle怎么改低

android Studio 降级gradle

android studio gradle dependencies 包存放在哪儿

Android Studio gradle插件版本和gradle版本对应关系

让 Android Studio、Gradle 和 Android 注释一起工作

android studio 离线配置 gradle和依赖