无法解决依赖项':app@debug/compileClasspath':无法解析com.android.support:appcompat-v7:26.1.0

97

无法解决依赖项':app@debug/compileClasspath'的问题:无法解决com.android.support:appcompat-v7:26.1.0。

无法解决com.android.support:appcompat-v7:26.1.0。

所需版本:项目:app

离线模式下没有缓存版本的com.android.support:appcompat-v7:26.1.0。

错误日志:

无法解析配置文件“:app:debugCompileClasspath”的所有文件。 无法解析com.android.support:appcompat-v7:26.1.0。 所需的:
项目:应用程序
在离线模式下没有缓存版本的com.android.support:appcompat-v7:26.1.0可用。
在离线模式下没有缓存版本的com.android.support:appcompat-v7:26.1.0可用。
无法解析com.android.support.constraint:constraint-layout:1.1.0-beta3。 所需的:
项目:应用程序
在离线模式下没有缓存版本的com.android.support.constraint:constraint-layout:1.1.0-beta3可用。
在离线模式下没有缓存版本的com.android.support.constraint:constraint-layout:1.1.0-beta3可用。
无法解析com.android.support:design:26.1.0。 所需的:
项目:应用程序
在离线模式下没有缓存版本的com.android.support:design:26.1.0可用。
在离线模式下没有缓存版本的com.android.support:design:26.1.0可用。
无法解析com.android.support:cardview-v7:26.1.0。 所需的:
项目:应用程序
在离线模式下没有缓存版本的com.android.support:cardview-v7:26.1.0可用。
在离线模式下没有缓存版本的com.android.support:cardview-v7:26.1.0可用。
无法解析com.google.android.gms:play-services-ads:11.4.2。 所需的:
项目:应用程序
在离线模式下没有缓存版本的com.google.android.gms:play-services-ads:11.4.2可用。
在离线模式下没有缓存版本的com.google.android.gms:play-services-ads:11.4.2可用。
无法解析com.android.support:support-v4:26.1.0。 所需的:
项目:应用程序
在离线模式下没有缓存版本的com.android.support:support-v4:26.1.0可用。
在离线模式下没有缓存版本的com.android.support:support-v4:26.1.0可用。

错误日志图片:

Click here for image


如果您正在使用 VPN,请关闭它以使其正常工作。 - Treewallie
20个回答

141

前往文件->其他设置->默认设置->构建、执行、部署->构建工具->Gradle->取消选中 离线工作 选项。


2
你应该使缓存失效并重新启动。按照以下步骤操作:文件 -> 使缓存失效/重新启动,然后在弹出的对话框中选择使其失效并重新启动 - Olaoye Oluwapelumi
你需要再次同步项目。 - Syyam Noor
2
我在Android Studio中找不到这个选项。 - Arefe
1
@Arefe,现在Gradle已经移动到主窗口右侧的专用面板上,在那里可以点击一个专门的“切换离线模式”按钮。 - Edric
8
对我来说,这个选项没有被勾选,但我遇到了这个错误。 - user9832135

36

以下是一个解决方法的演示图像; 通过以下方式取消选中离线工作选项:

文件 -> 设置 -> 构建、执行、部署 -> Gradle

enter image description here

如果上述解决方法不起作用,请尝试以下步骤:

  1. 打开应用程序的build.gradle文件。

  2. 确保repositories部分包括带有"https://maven.google.com"终点的maven部分。例如:

    allprojects {
         repositories {
             jcenter()
             maven {
                 url "https://maven.google.com"
             }
         }
    }
    
  3. 将支持库添加到dependencies部分。例如,要添加v4核心实用程序库,请添加以下几行:

  4. dependencies {
        ...
        compile "com.android.support:support-core-utils:27.1.0"
    }
    

注意:使用动态依赖(例如palette-v7:23.0.+)可能会导致意外的版本更新和不兼容性回归。我们建议您明确指定库版本(例如palette-v7:27.1.0)。

清单声明更改

具体来说,您应该将清单中<uses-sdk>标记下的android:minSdkVersion元素更新为新的、较低的版本号,如下所示:

<uses-sdk
  android:minSdkVersion="14"
  android:targetSdkVersion="23" />

如果您正在使用Gradle构建文件,则构建文件中的minSdkVersion设置将覆盖清单设置。

apply plugin: 'com.android.application'

android {
   ...
      defaultConfig {
            minSdkVersion 16
            ...
        }
        ...
    }

遵循Android开发者库支持


16

我刚刚去了build.gradle并删除了这行代码:

implementation 'com.android.support:appcompat-v7:26.1.0'

之后,我重新同步了Gradle。然后,我把代码行粘贴回来,再次同步了Gradle,然后它就起作用了。

注意:在进行这些更改时,我还更新了所有需要更新的SDK工具。


8

从文件选项中使缓存失效/重新启动

仅取消离线模式对我没有起作用。


该选项似乎在Android Studio中不可用。 - Arefe

7
在 android\app\build.gradle 文件中,
替换版本详细信息。
implementation 'com.android.support:appcompat-v7:26.1.0'

使用

implementation 'com.android.support:appcompat-v7:+'

Android Studio会使用适当的版本来使它为您工作。


6

使用 无效缓存/重启 即可解决问题,并确保您的 gradle 离线同步选项未启用


6
在项目gradle中添加这个对我有用:
allprojects {
 repositories {
     jcenter()
     maven {
         url "https://maven.google.com" // specifically this worked 
     }
 }}

4
这对于居住在被谷歌封禁的国家(如伊朗)的用户来说是一个问题。因此,我们需要通过代理来删除这些限制。请按照以下步骤操作: 文件->设置->外观和行为->系统设置->HTTP代理->手动代理配置->HTTP->主机名:fodev.org->端口:8118。 然后点击“确定”按钮。接下来,转到文件->无效缓存/重新启动。 使用并享受正确无误的执行吧 ;)

在伊朗,我们使用Shecan.Iran服务;) 你用吗?我更改了我的DNS,它起作用了。 - saber tabatabaee yazdi
1
Shekan只能打开developers.android,无法打开其他网站,如medician.com和内部网站。 - Ali Yazdanifar

1

前往 文件->其他设置->新项目首选项->构建、执行、部署->构建工具->Gradle->取消选择 离线工作 选项。


2
这个“默认设置”和“新项目首选项”的区别。我相信你现在明白了。 - Collins USHI

1

我解决了这个问题。在Ubuntu系统中,我删除了.gradle文件夹并重新下载了它。

希望对您有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接