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

时间:2018-07-06 22:55:59

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

新安装的 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

ScreenShot:

TestProject

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

24 个答案:

答案 0 :(得分:8)

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

要解决此问题:

  • 文件
  • 设置
  • 构建,执行,部署
  • Gradle
  • 取消选中离线工作

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

答案 1 :(得分:6)

您可能正在导入应用,而不是模块。好了,您也可以在模块的gradle中对其进行更改。

更改

apply plugin: 'com.android.application'

apply plugin: 'com.android.library'

您还需要从gradle中删除 applicationId

答案 2 :(得分:4)

启用离线模式时出现此问题。我禁用了离线模式并进行了同步。

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

答案 3 :(得分:3)

  1. 尝试“文件”->“使缓存无效/重新启动...”
  2. 尝试清理项目根目录下的subprocess.Popen(os.path.join(__location__, 'gcloud_command.bat')) .gradle目录。
  3. 尝试添加Google Maven存储库并同步项目

    .idea
  4. 如果使用的是Android Gradle插件3.1.3,则应确保gradle包装器版本为4.4。在项目的根目录下,找到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" } } } 并进行如下修改。

    gradle-wrapper.properties

答案 4 :(得分:3)

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

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

让gradle的构建没有任何中断。

谢谢! 希望这会有所帮助。

答案 5 :(得分:3)

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

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

更早的: 编译版本29 targetSdkVersion 29 实施'com.android.support:appcompat-v7:29.+' 实施'com.android.support:design:29。+'

修改后: 编译版本28 targetSdkVersion 28 实施'com.android.support:appcompat-v7:28.+' 实施'com.android.support:design:28。+'

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

答案 6 :(得分:2)

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

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

用户-> .gradle-> gradle.properties

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

Special credit

答案 7 :(得分:1)

任何试图导入自己创建的库的人

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

在要发布的库的gradle脚本中

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

答案 8 :(得分:1)

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

:app build.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'
    }

答案 9 :(得分:1)

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

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

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

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

要删除的文件-> gradle.properties

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

答案 10 :(得分:0)

就我而言,代码中有一个错字。因此,在尝试其他任何事情之前,请务必先检查一下。

答案 11 :(得分:0)

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

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

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

答案 12 :(得分:0)

人们正在积极回答有关离线工作的问题。但就我而言,它位于不同的地方。要在顶部栏菜单中找到它,请选择

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

在登录时,您可以选择顶部栏菜单中的帮助菜单,并写上“ gradle”,并提示位置。

答案 13 :(得分:0)

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

进入您的项目,然后打开 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

enter image description here

然后,它可能起作用。

PS:当我尝试使用dataBinding library并添加代码时遇到了这个问题

buildFeatures {
        dataBinding true
    }

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

答案 14 :(得分:0)

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

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

答案 15 :(得分: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

答案 16 :(得分:0)

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

enter image description here

答案 17 :(得分:0)

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

 if (ModelState.IsValid)
            {

                var newClinicalAsset = new ClinicalAsset();
                var NewModel = new Model(); 


                    if (clinicalAssetVM.AssetTypeID == 0)
                {

                }
                else
                {
                    newClinicalAsset.AssetTypeID = clinicalAssetVM.AssetTypeID;
                }



                if (clinicalAssetVM.ModelName != null)
                {

                    NewModel.ModelAssetAssignmentID = clinicalAssetVM.AssetAssignmentID.AssetAssignmentID;
                    NewModel.ModelName = clinicalAssetVM.ModelName.ModelName;
                    db.Models.Add(NewModel);
                    db.SaveChanges();
                }

                newClinicalAsset = new ClinicalAsset { ModelID = NewModel.ModelID, AssetTypeID = newClinicalAsset.AssetTypeID};
                db.ClinicalAssets.Add(newClinicalAsset);
                db.SaveChanges();
                return RedirectToAction("Details", "ClinicalAssets", new { ClinicalAssetID = clinicalAssetVM.ClinicalAssetID });
            }

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

Reference

答案 18 :(得分:0)

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

答案 19 :(得分:0)

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

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

答案 20 :(得分:0)

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

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

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

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

答案 21 :(得分:0)

我无法找到问题的根本原因,但是找到了解决方法。我首先将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
  • 重新启动计算机
  • Voila!您的android studio项目应毫无限制地构建

答案 22 :(得分:-1)

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

1)git pull origin master

2)构建->清理项目

3)“文件”->“使缓存无效/重新启动...”为shizhen mentioned

4)如果上述操作均不能解决您的问题并且您确定自己已经保存了工作(我建议git stash save "comment"),那么您有110%的把握还是不要介意覆盖,请尝试:

git reset --hard origin master

答案 23 :(得分:-1)

如果同时使用

'com.android.support:appcompat-v7:28.0.0-alpha3'
'com.android.support:support-v4:28.0.0-alpha3'

删除行

implementation 'com.android.support:support-v4:28.0.0-alpha3' 

从您的build.gradle文件中重新尝试。