无法解析':app @ debug / compileClasspath'的依赖关系:无法解析


74

新安装的Android Studio 3.1.3在制作新项目和首次编译时给出了奇怪的依赖项错误。

一个类似的问题没有帮助解决问题。

事件日志:

Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.support:appcompat-v7:28.0.0-alpha3.
Open File
Show Details


Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.support.constraint:constraint-layout:1.1.2.
Open File
Show Details


Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Could not resolve com.android.support:appcompat-v7:28.0.0-alpha3.
Open File
Show Details


Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Could not resolve com.android.support.constraint:constraint-layout:1.1.2.
Open File
Show Details


Unable to resolve dependency for ':app@debugUnitTest/compileClasspath': Could not resolve com.android.support:appcompat-v7:28.0.0-alpha3.
Open File
Show Details


Unable to resolve dependency for ':app@debugUnitTest/compileClasspath': Could not resolve com.android.support.constraint:constraint-layout:1.1.2.
Open File
Show Details


Unable to resolve dependency for ':app@release/compileClasspath': Could not resolve com.android.support:appcompat-v7:28.0.0-alpha3.
Open File
Show Details


Unable to resolve dependency for ':app@release/compileClasspath': Could not resolve com.android.support.constraint:constraint-layout:1.1.2.
Open File
Show Details


Unable to resolve dependency for ':app@releaseUnitTest/compileClasspath': Could not resolve com.android.support:appcompat-v7:28.0.0-alpha3.
Open File
Show Details


Unable to resolve dependency for ':app@releaseUnitTest/compileClasspath': Could not resolve com.android.support.constraint:constraint-layout:1.1.2.
Open File
Show Details

屏幕截图:

测试项目

这个问题发生在我身上好几次,并且强制使用https或http也无法解决它


可以同时发布build.gradle顶级和模块级别的文件吗?
shizhen

您的问题有解决方案吗?
Code_Life

嗨,您如何解决错误?我看到您没有接受以下任何答案。因此,我尝试了下面提到的所有可能的解决方案,但em都没有帮助我。
Lokesh Pandey

1
@Lokesh这是一个错误,com.android.support:appcompat-v7:28.0.0-alpha3因此我将其更改为可以com.android.support:appcompat-v7:28.0.0正常工作
Zulqurnain Jutt

@ZulqurnainJutt我不确定。但是我在受限的环境中工作。因此,我只是在开放的Internet连接中运行所有内容。而且效果很好。
Lokesh Pandey

Answers:


53

您可能正在导入Application而不是Module。好了,您也可以在模块的gradle中更改它。

更改

apply plugin: 'com.android.application'

apply plugin: 'com.android.library'

您还需要从gradle中删除applicationId


为什么我需要这样做。有什么解释吗?
CodeWithVikas

1
@CodeWithVikas正如我在回答中所说,这可能是您的问题。如果不是,请忽略此答案,您无需执行此操作。
Shahbaz Hashmi

3
有趣的是,sof是如何演变为尝试的,为什么以及如何进行安装。这些提示属于我相信的评论。
kolboc

“应用插件”确定哪个gradle插件用于编译代码。我猜您可以有多个.application-projects并分别运行它们,但是除非将它们编译为库(我对Google的搜索不多),否则它们无法相互引用:developer.android.com/studio/projects/android -library 但是,对于零解释的答案如此之多,真是令人遗憾。
Heinzlmaen

@Heinzlmaen每个人都知道“应用插件”的作用,并且可以根据他们的要求拥有多个应用程序项目。但是仍然有人认为此答案很有帮助。
Shahbaz Hashmi

15

我只是想出了如何消除此gradle错误,请按照以下步骤操作。

  1. 转到“文件”。
  2. 单击“使缓存无效/重新启动”。
  3. 再次单击Invalidate Cache / Restart(在对话框窗口中)。

让gradle不断建立。

谢谢!问候,希望这会有所帮助。


2
人们必须在编辑代码行之前执行此操作。第一件事1st
Malith Ileperuma

12

我认为问题来自以下方面:与您的互联网连接不可用,因此Android Studio要求您启用“离线工作”,而您只是启用了它

要解决此问题:

  • 文件
  • 设定值
  • 构建,执行,部署
  • 摇篮
  • 取消选中离线工作

为什么取消选中离线工作可以解决此问题,因为在Gradle中有时需要更新某些依赖项(包含“ +”的依赖项),因此需要Internet连接。


7
  1. 尝试“文件”->“使缓存无效/重新启动...”
  2. 尝试清理项目根目录下的.gradle.idea目录。
  3. 尝试添加Google Maven存储库并同步项目

    buildscript {
        repositories {
            jcenter()
            google()
            maven {
               url "https://maven.google.com"
            }
        }
    
        dependencies {
            classpath 'com.android.tools.build:gradle:3.1.3'
        }
    }
    
    allprojects {
        repositories {
            google()
            jcenter()
            maven {
               url "https://maven.google.com"
            }
        }
    }
    
  4. 如果您使用的是Android Gradle插件3.1.3,则应确保gradle包装器版本为4.4。在项目的根目录下,如下找到gradle-wrapper.properties并修改它。

    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
    

仅添加google()和maven {}存储库对我
有用

5

我在启用离线模式时遇到了这个问题。我禁用了离线模式并进行了同步。

  • 通过单击打开首选项 File > Settings
  • 在左窗格中,单击 Build, Execution, Deployment > Gradle
  • 取消选中 Offline work
  • 应用更改并再次同步项目。

您能说一下,什么依赖关系没有得到解决。
Khemraj

这是我们自己构建的Android项目中的gradle模块。
IgorGanapolsky '18 October

是本地库模块吗?或者是gradle中的依赖URL。
Khemraj

本地库模块
IgorGanapolsky

我几天前也遇到过同样的问题。我不完全记得我做了什么,但是您应该尝试删除.idea,.gradle,build dir并再次同步。那就是我们可以做的。
Khemraj

5

我知道这很晚了,但我认为这可能会帮助某人解决他的问题。

就我而言,这是因为在我检查SDK管理器时,将compileSdkVersion和targetSdkVersion设置为29,这表明软件包已部分安装。完全安装了SDK版本28。我将compileSdkVersion和targetSdkVersion以及支持库更改为28。

之前: compileSdkVersion 29 targetSdkVersion 29实现'com.android.support:appcompat-v7:29.+'实现'com.android.support:design:29.+'

修改后: compileSdkVersion 28 targetSdkVersion 28实现'com.android.support:appcompat-v7:28.+'实现'com.android.support:design:28.+'

应用这些更改后,它像魅力一样工作。


1
谢谢Manish,对了,由于迁移到AndroidX,因此没有版本高于28的支持库。
欧内斯特(Ernest)

对于2020年的所有人来说,这就是您想要的答案
Chiguireitor

5

@shizhen回答不适用于我的情况。

花了一天多的时间,终于得到了一个可行的解决方案。我在办公环境中,因此通过尝试不同的方法,我的gradle文件被损坏了。所以我从以下文件中删除了所有代理和端口信息表格,一切正常。

用户-> .gradle-> gradle.properties

另外,我在Android Studio->首选项->网络的HTTP代理下启用了“自动检测代理设置”,Studio会自动检测网络配置。

特别信贷


1

我只是分享这个答案,因为我有类似的问题。

最后,由于我无意中更改了,导致了错误fileTree。就我而言,我通过更改来解决:

// implementation or compile
implementation fileTree(include: ['*.jar'])

// implementation or compile
implementation fileTree(include: ['*.jar'], dir: 'libs')

1

我已经解决了如下的Gradle缓存问题。

如果有人使用MacBook,那么下面是我用来解决此问题的步骤。

  1. 有一个隐藏的Gradle文件夹。通过使用以下命令,我们可以打开隐藏的Gradle文件夹并删除名为gradle.properties的文件。

快捷方式,(⌘ + shift + G) 然后在弹出窗口中输入此内容,然后 ~/.gradle/按Enter

要删除的文件-> gradle.properties

  1. 然后返回android studio并将您的项目与Gradle文件同步。

1
太好了,您节省了我的时间和生命。:x
Mohammad Davari

1

我未曾提及的一种可能性。如果您要导入的项目使用的是android产品版本,则您可能会出错missingDimenstionStrategy

在您的:app build.gradle(无法解决依赖关系的代码)中,确保已正确设置了所依赖产品的特定风格。这让所有的后来依赖代码(e..g implementationapi等),要知道这取决于其精确的构建

 defaultConfig {
        ...<snip unrelated>...

        // Ensure you specify the flavor you depend on!!
        // If dep has multiple flavor dimensions, you need to specify them all
        missingDimensionStrategy 'classpath', 'gms17'
    }

1

尝试将其导入自己创建的库的任何人

我一直在使用Kotlin Multiplatform库,并尝试使用jitpack发布我的库,然后将它们拉入其他项目。我是大多数新手,并且不知道我需要在gradle中将publishLibraryVariants添加到我的android配置中。我遵循了其他不需要的教程,所以我不确定让您需要它的Kotlin MPP是什么。这是代码。您可能会发布满足您需求的其他变体,但是这些变体似乎是使用基本项目构建的标准要求。android之后的()并不是绝对必要的,但是它们附带了默认脚本,因此我将其保留。对于Kotlin或Groovy DSL,代码基本上是相同的。

在发布库的gradle脚本中

kotlin {
    android() {
        publishLibraryVariants("release", "debug")
        …
    }
    …
}


0

我无法找到问题的根本原因,但是找到了解决方法。我首先将java home变量设置为此类。

  • vi ~/.bash_profile (这仅适用于macs。bash配置文件在Linux上有所不同)
  • 输入i要插入的字母,然后将JAVA_HOME变量设置为
  • export JAVA_HOME=/Applications/Android\Studio.app/Contents/jre/jdk/Contents/Home/
  • 退出vi编辑器,esc然后键入:wq
  • 重新启动电脑
  • 瞧!您的android studio项目应无任何限制地构建

0

就我而言:设置AS时,我的Windows已配置了代理。稍后,我断开代理并在AS设置中禁用代理,但是在文件.gradle \ gradle.properties中-代理-当前

只是,在文本编辑器中清除此文件中的代理设置



0

就我而言,我使用了Google Play服务...我增加了它解决的图书馆服务

implementation 'com.google.android.gms:play-services-auth:16.0.0'

库和应用模块中的Google Play服务必须相同

参考


0

正如@Ebin Joy所说,如果gradle文件损坏,那么有一个简单的解决方案。手动提供代理详细信息,如图所示。那你就好了 仅当您使用任何封闭的网络(如办公网络等)时,此解决方案才有效。

在此处输入图片说明


0

自Windows的Android Studio 3.5.2起,该问题仍然相关。

在我的特定用例中,我试图添加Gander(https://github.com/Ashok-Varma/Gander当我一直感到特别头痛时)到我的依赖项列表中。

事实证明,我尚未在cacerts文件中获得JCenter证书的批准。我正在通过公司防火墙,并且必须使用要导入的依赖项来执行此操作。因此,要这样做:

  1. 确保您的Android Studio不需要通过任何代理。

  2. 将证书导出到您具有依赖关系的位置(通常只是JCenter)

  3. 将证书添加到您的cacerts文件中:

    keytool -import -alias [your-certificate-name] -keystore 'C:\Program Files\Java\jdk[version]\jre\lib\security\cacerts' -file [absolute\path\to\your\certificate].cer

  4. 重新启动Android Studio

  5. 尝试再次同步。

答案基于此:https : //stackoverflow.com/a/26183328/4972380


0

如果您曾经使用过代理,VPN等(或者可能不确定,我不确定) .....那么下面的解决方案可能会对您有所帮助...我不知道为什么(并且有人可以告诉我为什么,我将不胜感激),但它确实可以正常工作。当您完全对这个问题感到绝望时,请尝试一下

进入您的项目,打开gradle-wrapper.propertiesgradle.properties,注释掉有关代理的以下代码:

#systemProp.http.nonProxyHosts=118.89.144.241|47.112.105.125
#systemProp.http.proxyHost=127.0.0.1
#systemProp.http.proxyPort=1081
#systemProp.https.nonProxyHosts=118.89.144.241|47.112.105.125
#systemProp.https.proxyHost=127.0.0.1
#systemProp.https.proxyPort=1081

在此处输入图片说明

然后,它可能会起作用。

PS:当我尝试使用dataBinding库时,以及在添加代码时遇到了这个问题

buildFeatures {
        dataBinding true
    }

当向导告诉我和Syns该项目时,我陷入了困境:“无法解决':app @ debug / compileClasspath'的依赖项:无法解决......”。最终,我完成了上面描述的操作,并且成功了。我的经验可能会给您提示,所以我将解决方案发布在这里,希望对您有所帮助。


0

尝试在依赖项行中添加配置类型。例如:

implementation project(path: ':some_module', **configuration: 'default'**)`

0

回答离线工作的人们很活跃。但就我而言,它位于不同的地方。要在顶部栏菜单中找到它,请选择

  1. 查看/工具窗口/渐变
  2. 如果处于活动状态,则切换离线按钮。这是一个带有两个斜线居中的小矩形

顺带一提,您可以选择顶部栏菜单中的帮助菜单,并写上“ gradle”,并建议位置。


0

以下解决方案可能对某人有所帮助。

当我在新模块中使用实现项目(':my_project_other_modules')时,我遇到了这个问题。

我与队友讨论,最后我从一个人那里得到了解决方案,我必须使用flavorDimensions和productFlavors。因为app / build.gradle使用了flavorDimensions和productFlavors。当我将它们添加到新模块中时,未发生错误。


-1

这个问题发生在我身上好几次了。通常,这4种解决方案之一可以解决我的问题,但是它们可能解决或无法解决您的问题。

1) git pull origin master

2)建立->清理项目

3)如施振刚提到的“文件”->“使缓存无效/重新启动...”

4)如果上述任何一种措施都不能解决您的问题,并且您确定自己已经保存了工作110%(我建议git stash save "comment"或不要过度劳累,请尝试:

git reset --hard origin master

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.