无法解析“: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
可能有错误。
在您的:app
build.gradle
(未能解决依赖关系的一个代码)中,确保您正确设置了您所依赖的产品的特定风味。这允许您以后的所有依赖代码(例如implementation
、api
等)知道它依赖于哪个精确构建
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.properties或gradle.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”的依赖关系:无法解析的主要内容,如果未能解决你的问题,请参考以下文章