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 dependencies 包存放在哪儿
Android Studio gradle插件版本和gradle版本对应关系