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

Posted

技术标签:

【中文标题】无法解析“:app@debug/compileClasspath”的依赖关系:无法解析【英文标题】:Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve 【发布时间】:2018-12-15 13:02:16 【问题描述】:

新安装的 Android studio 3.1.3 在创建新项目并首次编译时出现奇怪的依赖错误。

类似的question 无助于解决问题。

事件日志:

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 ***和模块级别的文件吗? 您的问题有什么解决方案吗? 您好,您是如何解决错误的?我看到您不接受以下任何答案。所以我尝试了下面提到的所有可能的解决方案,但没有一个对我有帮助。 @Lokesh 这是com.android.support:appcompat-v7:28.0.0-alpha3 中的一个错误,所以我将其更改为com.android.support:appcompat-v7:28.0.0 它工作正常 @ZulqurnainJutt 我不确定。但我在受限的环境中工作。所以我只是在开放的互联网连接中运行所有内容。而且效果很好。 【参考方案1】:

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

改变

apply plugin: 'com.android.application'

apply plugin: 'com.android.library'

您还需要从 gradle 中删除 applicationId

【讨论】:

为什么我需要这样做。有什么解释吗? @CodeWithVikas 正如我在回答中所说,这可能是您的问题。如果不是,则忽略此答案,您无需这样做。 有趣的是,sof 是如何演变成尝试的,为什么以及如何。我相信这些提示属于 cmets。 "apply plugin" 决定使用哪个 gradle 插件来编译你的代码。我想你可以有多个 .application-projects 并单独运行它们,但除非它们被编译为库,否则它们不能相互引用(我没有谷歌太多):developer.android.com/studio/projects/android-library 但很遗憾,答案是零解释得到这么多赞成。 @ShahbazHashmi 号【参考方案2】:

我刚刚想出了如何消除这个 gradle 错误,请按照以下步骤操作。

    转到“文件”。 点击无效缓存/重启。 再次点击 Invalidate Cache / Restart(在对话窗口中)。

让 gradle 构建没有任何中断。

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

【讨论】:

人们必须在编辑您的代码行之前执行此操作。第一件事 1st【参考方案3】:

我认为问题出在以下几点: 与您的互联网连接不可用,因此 Android Studio 要求您启用“离线工作”,而您刚刚启用它

解决这个问题:

文件 设置 构建、执行、部署 分级 取消选中离线工作

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

【讨论】:

【参考方案4】:
    尝试“文件”->“使缓存无效/重新启动...” 尝试清理项目根目录下的.gradle.idea 目录。

    尝试添加 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"
            
        
    
    

    如果您使用的是 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。 应用更改并再次同步项目。

【讨论】:

你能告诉我,什么是依赖没有得到解决。 这是我们自己构建的 Android 项目中的一个 gradle 模块。 本地库模块?或者是 gradle 中的依赖 url。 本地库模块 几天前我遇到了同样的问题。我不完全记得我做了什么,但你应该尝试删除 .idea 、 .gradle 、构建目录并再次同步。这就是我们能做的。【参考方案6】:

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

在我的情况下,这是因为 compileSdkVersion 和 targetSdkVersion 设置为 29,而当我检查我的 SDK 管理器时,它显示包已部分安装。而 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.+'

应用这些更改后,它就像一个魅力。

【讨论】:

谢谢 Manish,你说得对,因为迁移到 AndroidX,所以没有版本高于 28 的支持库。 致2020年的每一个人,这就是你想要的答案【参考方案7】:

@shizhen 的回答对我没用。

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

用户 -> .gradle -> gradle.properties

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

Special credit

【讨论】:

【参考方案8】:

我已经解决了这个 Gradle 缓存问题,如下所示。

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

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

快捷方式(⌘ + shift + G) 然后在弹出窗口~/.gradle/ 中输入这个@ 回车

要删除的文件 -> gradle.properties

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

【讨论】:

太好了,你救了我的时间和生命。:x【参考方案9】:

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

最后,错误是因为我无意中更改了fileTree。就我而言,我通过更改来修复:

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

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

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

我没有看到提到的一种可能性。如果您正在导入的项目使用 android 产品风格,您的missingDimenstionStrategy 可能有错误。

在您的:appbuild.gradle(未能解决依赖关系的一个代码)中,确保您正确设置了您所依赖的产品的特定风味。这允许您以后的所有依赖代码(例如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'
    

【讨论】:

【参考方案12】:

任何人在尝试导入自己创建的库时遇到此问题

我一直在使用 Kotlin Multiplatform 库,并尝试使用 jitpack 发布我的库,然后将它们拉入其他项目。我对大部分内容都很陌生,不知道我需要将 publishLibraryVariants 添加到我在 gradle 中的 android 配置中。我遵循了其他不需要这个的教程,所以我不确定 Kotlin MPP 是什么让你需要它。这是代码。您可能会发布满足您需求的其他变体,但这些似乎是使用基本项目构建的标准要求。 android 之后的 () 不是绝对必要的,但默认脚本随它们一起提供,所以我离开了它。 Kotlin 或 Groovy DSL 的代码基本相同。

在正在发布的库的 gradle 脚本中

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


【讨论】:

【参考方案13】:

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

我在新模块中使用 implementation project(':my_project_other_modules') 时遇到了这个问题。

我和我的队友讨论过,我终于从其中一个人那里得到了解决方案, 我必须使用 flavorDimensions 和 productFlavors。 因为 app/build.gradle 使用了 flavorDimensions 和 productFlavors。 当我在新模块中添加这些时,没有发生错误。

【讨论】:

【参考方案14】:

就我而言,代码中有错字。因此,请注意在尝试其他任何操作之前先检查一下。

【讨论】:

【参考方案15】:

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

vi ~/.bash_profile(这仅适用于 mac。bash 配置文件在 linux 上有所不同) 键入字母i 进行插入,然后设置JAVA_HOME 变量 export JAVA_HOME=/Applications/Android\Studio.app/Contents/jre/jdk/Contents/Home/esc退出vi编辑器然后输入:wq 重启电脑 瞧!您的 android studio 项目应该毫无疑虑地构建

【讨论】:

【参考方案16】:

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

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

【讨论】:

【参考方案17】:

我遇到了你的问题,我解决了。当您的目标 api 级别未完全下载时,会出现此错误。您有两种方法:转到您的 SDK 菜单并下载所有 android 9 组件,或者更好的方法是转到您的 build.gradle(Module app) 并像这样进行更改:But remember, before applying these changes, make sure you have fully downloaded api lvl 8

【讨论】:

【参考方案18】:

就我而言,我使用了谷歌播放服务...我增加了它解决的图书馆服务

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

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

Reference

【讨论】:

【参考方案19】:

从适用于 Windows 的 Android Studio 3.5.2 开始,问题仍然相关。

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

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

    确保您的 Android Studio 不需要经过任何 代理。

    导出您获得依赖项的证书(通常 只是JCenter)

    将证书添加到您的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

    重启 Android Studio

    再次尝试同步。

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

【讨论】:

【参考方案20】:

如果您曾经使用过代理、*** 等(或者可能没有,我不确定).....那么下面的解决方案可能会对您有所帮助...我不知道知道为什么(如果有人能告诉我为什么,我会很感激),但它确实有效。 当您对这个问题感到绝望时尝试一下

来到你的项目,打开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 library时遇到了这个问题,当我添加代码时

buildFeatures 
        dataBinding true
    

按照指南告诉我并同步项目进入 gradle,我收到了这样的错误:“无法解析 ':app@debug/compileClasspath' 的依赖关系:无法解析......”。最后我做了我上面描述的,我成功了。我的经验可能会给你一些提示,所以我在这里发布解决方案,希望它可能会有所帮助。

【讨论】:

【参考方案21】:

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

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

【讨论】:

【参考方案22】:

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

    查看/工具窗口/ Gradle Toogle 离线按钮(如果处于活动状态)。它是一个带有两个居中斜线的小矩形

此外,您可以单击顶部栏菜单中的帮助菜单并写“gradle”,它会建议位置。

【讨论】:

【参考方案23】:

这既不是缓存问题,也不是应用程序与库问题。这是证书问题。如果您尝试运行您的项目而不是 gradle build,您会发现下载证书很困难。要解决此问题,只需添加 google 每月更改的证书即可。

这是我的命令行,请使用您自己的路径进行相应的编辑。密钥库的密码是changeit

keytool -import -alias google_10 -keystore /Library/Java/JavaVirtualMachines/adoptopenjdk-9.jdk/Contents/Home/lib/security/cacerts -file ~/Desktop/GTS\ CA\ 1C3.cer

【讨论】:

以上是关于无法解析“:app@debug/compileClasspath”的依赖关系:无法解析的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu 无法解析域名

无法解析的外部符号 C++

C++无法解析的外部命令和外部符号

无法解析的外部符号

ACE编程,无法解析外部符号

error LNK2001: 无法解析的外部符号