【问题标题】:Android Studio and Gradle - build failsAndroid Studio 和 Gradle - 构建失败
【发布时间】: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
    }
}

【问题讨论】:

    标签: android gradle android-studio android-gradle-plugin


    【解决方案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 功能的更多详细信息。见:

    stackoverflow gradle build

    【讨论】:

      【解决方案4】:

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

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

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

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

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-10-16
          • 2015-02-06
          • 2016-02-04
          • 1970-01-01
          • 1970-01-01
          • 2021-01-06
          • 1970-01-01
          • 2016-03-31
          相关资源
          最近更新 更多