Android Studio未能从gradle存储库下载库

Android Studio未能从gradle存储库下载库,android,gradle,android-studio,Android,Gradle,Android Studio,我已经看到了这个问题,但它并没有帮助我。首先,我尝试在我的项目中添加google play服务,使用: dependencies{ compile 'com.google.android.gms:play-services:6.5.87' } 它向我显示了一个错误: 然后我将我的工作室更新为1.0.1,将gradle更新为1.0.0。然后我再次将项目与gradle同步。成功了!它向我展示了另一个选项,尽管上面的屏幕截图中显示了两个选项。它是“安装库”(类似的东西)。我点击它,它弹出一个对话框

我已经看到了这个问题,但它并没有帮助我。首先,我尝试在我的项目中添加google play服务,使用:

dependencies{
compile 'com.google.android.gms:play-services:6.5.87'
}
它向我显示了一个错误:

然后我将我的工作室更新为1.0.1,将gradle更新为1.0.0。然后我再次将项目与gradle同步。成功了!它向我展示了另一个选项,尽管上面的屏幕截图中显示了两个选项。它是“安装库”(类似的东西)。我点击它,它弹出一个对话框,我安装了这个库(它就像使用SDK管理器下载ind一样,而不像gradle下载)

现在,我尝试使用以下工具下载库:

compile('com.fortysevendeg.swipelistview:swipelistview:1.0-SNAPSHOT@aar') {
        transitive = true
    }
这给了我一个错误:

我的android存储库已更新:

另外,我的网络连接也很好。我多次尝试同步项目,但始终出现相同的错误。我没有在脱机模式下运行gradle:

如何解决这个问题?永久的解决办法是什么?为什么会发生这种情况?

我发现了一个问题:它描述了完全相同的错误,这个问题有一个构建脚本,您需要将它添加到构建文件中,这个构建文件中有
依赖关系
语句:

repositories {
    maven { url 'http://clinker.47deg.com/nexus/content/groups/public' }
}
当我这么做的时候,它对我来说很有用

关于为什么会发生这种情况的一般问题(以及为什么不同库的解决方案不同的更好问题):

Android Studio使用的构建系统Gradle能够从互联网上自动下载库依赖项。总的来说,这对开发人员来说是一个很大的好处,因为不必手动下载归档文件,将它们放在项目中正确的位置,将它们检查到源代码管理中,并对新版本重复此过程,现在您只需添加一行构建脚本,构建系统就可以为您处理内部事务。主要的缺点是互联网连接问题,这在不同程度上影响到不同的开发人员,还有一些问题让人更加困惑当你遇到错误时它意味着什么

Gradle如何知道从哪里下载依赖项?大多数Gradle构建脚本包含如下所示的块:

repositories {
    jcenter()
}
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
或者它可能是
mavenCentral()
而不是
jcenter()
。这告诉构建系统查看JCenter或Maven中央全局存储库(JCenter以一种过于简单的方式将其视为MavenCentral的增值镜像);它们包含了许多、许多、许多库的许多版本的档案,使用起来非常方便

您还可以指定其他存储库。此swipelistview库尚未上载到Maven Central,因此开发人员已通过URL为其创建了一个存储库:如果您将该URL添加到
存储库
块中,它将在那里查找

我担心的是,您正在访问库的
快照
版本——根据定义,这些都应该是未发布的。但是在我的测试项目中添加对库的快照版本的依赖对我来说很有效,在web浏览器中查看该URL会发现库只有一个“1.0-”(包括尾随破折号)版本,因此有一些微妙的地方我遗漏了;如果你知道更多,请编辑我的答案或评论

无论如何,对这种解释有几个警告。有些库不在Maven Central或任何互联网可访问的归档文件中(至少它们不是由Android正式发布的),而是作为Android SDK下载的一部分发布,并通过SDK管理器进行维护。Android支持库和Google库属于这一类。如果您发现了未找到的错误,则必须通过SDK管理器进行修复

既然您没有通过
repositories
块告诉构建系统,那么构建系统如何知道在SDK中查找这些内容?这种行为被硬编码到Android Gradle插件中

另一个警告是,有一个细节让很多人感到困惑,那就是你实际上有两个
存储库
块,尽管在通常的Android Studio设置中,它们通常位于不同的文件中。一个位于
buildscript
块中,它通常位于顶级build.gradle文件中,如下所示:

repositories {
    jcenter()
}
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
另一个通常也存在于顶级的build.gradle中,但您可以在模块的build.gradle文件中使用另一个块对其进行扩充。顶层的一个看起来像这样:

repositories {
    jcenter()
}
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
一级模块看起来就像这个答案中前面的一个例子。所有这些意味着什么

buildscript
块告诉Gradle在哪里可以找到构建系统插件。这些插件增强了构建系统本身的功能,但没有说明任何关于实际项目的内容。在Android项目中,Android Gradle插件属于这一类,并且与Android/Google库不同,这一个在Maven Central上运行。
buildscript
中的
repositories
块(与
dependencies
块协调,后者与项目的dependencies块不同,请继续阅读)告诉构建系统在何处查找这些插件

顶级生成文件中的
allprojects
块告诉生成系统将包含的脚本位应用于项目中的所有生成文件。在本例中,它告诉它向所有子项目添加一个指向JCenter的
repositories
块。这很方便,因此您不必将其复制/粘贴到模块中的多个构建文件中

在您的模块中,还有一个
存储库
块,它与
所有项目
一起,告诉构建系统从何处获取项目的库依赖项,正如前面讨论的那样。

我发现了这个问题:它描述了完全相同的错误,一个