【问题标题】:Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve无法解析“:app@debug/compileClasspath”的依赖关系:无法解析
【发布时间】: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 我不确定。但我在受限的环境中工作。所以我只是在开放的互联网连接中运行所有内容。而且效果很好。

标签: android android-gradle-plugin build.gradle android-studio-3.0


【解决方案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 错误,请按照以下步骤操作。

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

让 gradle 构建没有任何中断。

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

【讨论】:

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

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

解决这个问题:

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

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

【讨论】:

    【解决方案4】:
    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
    • 应用更改并再次同步项目。

    【讨论】:

    • 你能告诉我,什么是依赖没有得到解决。
    • 这是我们自己构建的 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,那么下面是我用来解决此问题的步骤。

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

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

      要删除的文件 -> gradle.properties

      1. 然后返回 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 证书的批准。我正在通过公司防火墙,我必须使用我尝试导入的依赖项来执行此操作。因此,这样做:

                          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

                          【讨论】:

                            【解决方案20】:

                            如果您曾经使用过代理、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 library时遇到了这个问题,当我添加代码时

                            buildFeatures {
                                    dataBinding true
                                }
                            

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

                            【讨论】:

                              【解决方案21】:

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

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

                              【讨论】:

                                【解决方案22】:

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

                                1. 查看/工具窗口/ Gradle
                                2. 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

                                  【讨论】:

                                    猜你喜欢
                                    • 1970-01-01
                                    • 2018-08-26
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2022-08-15
                                    • 2018-04-10
                                    • 2018-06-26
                                    • 1970-01-01
                                    • 1970-01-01
                                    相关资源
                                    最近更新 更多