21

我正在构建一个小型库项目以及一个示例项目来说明使用。我无法在 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
    }
}
4

5 回答 5

25

指定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”。

于 2013-06-18T16:05:50.597 回答
1

我发现了问题:

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

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

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

于 2013-06-17T09:11:37.190 回答
0

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

stackoverflow gradle 构建

于 2013-07-16T21:55:40.210 回答
0

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

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

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

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

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

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

于 2021-09-09T17:53:56.143 回答
0

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

于 2021-09-13T17:05:56.523 回答