Gradle构建Android项目时出现“无法解决所有依赖项”错误。

79

我正在尝试使用Gradle构建我的第一个项目,我认为我的gradle文件和设置是正确的。

我只使用了一个模块和Support V4 + AppCompatBar库。

项目 - build.gradle

allprojects {
    repositories {
        mavenCentral()
    }
}

项目 - settings.gradle

include ':AssignmentTempos21'

主模块 - build.gradle

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 17
    }
}

dependencies {
    compile "com.android.support:support-v4:18.0.+"
    compile "com.android.support:appcompat-v7:18.0.+"
}

-i标志下的控制台输出:

MacBook-Air-de-Cesar-2:AssignmentTempos21 menor$ ./gradlew -i clean assemble
Starting Build
Settings evaluated using settings file '/Users/menor/workspace_android/AssignmentTempos21/settings.gradle'.
Projects loaded. Root project using build file '/Users/menor/workspace_android/AssignmentTempos21/build.gradle'.
Included projects: [root project 'AssignmentTempos21', project ':AssignmentTempos21']
Evaluating root project 'AssignmentTempos21' using build file '/Users/menor/workspace_android/AssignmentTempos21/build.gradle'.
Compiling build file '/Users/menor/workspace_android/AssignmentTempos21/build.gradle' using BuildScriptClasspathScriptTransformer.
Compiling build file '/Users/menor/workspace_android/AssignmentTempos21/build.gradle' using BuildScriptTransformer.
Evaluating project ':AssignmentTempos21' using build file '/Users/menor/workspace_android/AssignmentTempos21/AssignmentTempos21/build.gradle'.
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/support-v4/maven-metadata.xml]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/support-v4/]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/support-v4/maven-metadata.xml]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/support-v4/]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/support-v4/maven-metadata.xml]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/support-v4/]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/support-v4/maven-metadata.xml]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/support-v4/]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/appcompat-v7/maven-metadata.xml]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/appcompat-v7/]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/appcompat-v7/maven-metadata.xml]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/appcompat-v7/]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/appcompat-v7/maven-metadata.xml]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/appcompat-v7/]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/appcompat-v7/maven-metadata.xml]
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/com/android/support/appcompat-v7/]

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':AssignmentTempos21'.
> Failed to notify project evaluation listener.
   > Could not resolve all dependencies for configuration ':AssignmentTempos21:_DebugCompile'.
      > Could not find any version that matches com.android.support:support-v4:18.0.+.
        Required by:
            AssignmentTempos21:AssignmentTempos21:unspecified
      > Could not find any version that matches com.android.support:appcompat-v7:18.0.+.
        Required by:
            AssignmentTempos21:AssignmentTempos21:unspecified

* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.

BUILD FAILED

Total time: 40.787 secs

请前往此问题并为其点赞。由于许多库已从jCenter中下架,因此似乎存在许多问题。 - Patricio Sard
11个回答

95

正如Peter所说,它们不会出现在Maven Central中。

从Android SDK Manager下载“Android Support Repository”,支持库的Maven存储库将下载到您的Android SDK目录中(请参见“extras”文件夹)。

要将库部署到本地的.m2存储库中,您可以使用maven-android-sdk-deployer

2017年编辑:

现在,您可以引用谷歌在线M2存储库。

repositories {
google()
jcenter()
}

12
从“Android SDK Manager”下载“Android Support Repository”可以解决我在Android Studio 0.4.3项目中遇到的问题。关于Gradle的弃用消息仅是一个小问题,但这是另一个故事,所以我开了这个问题 - Franco Rondini
请逐步解释一下:我的意思是首先下载 maven-android-sdk-deployer,然后呢? - Hosein Aqajani
@H.Aqjn 我重新排列了答案,使其更易读(我认为),如果您正在使用Gradle,则应该可以从SDK Manager下载支持库。 - kassim

50

前往安装Android Studio的位置(例如我的是在C:\Users\username\AppData\Local\Android\android-studio\下),打开sdk\tools文件夹,然后运行android.bat。从这里开始,更新和下载任何缺少的构建工具,并确保更新Extras中的Android支持存储库和Android支持库。在SDK Manager完成后重新启动Android Studio。

看起来Android Studio完全忽略了任何已安装的Android SDK文件并保留了自己的副本。在运行更新后,使用compile com.android.support:appcompat-v7:18.0.+,编译一切都成功了。


8
这真的帮了我很多。我原本期望Android Studio使用我在电脑上手动安装的Android SDK。但是IDE使用自己的Android SDK而不是开发者定义的一个,真的很烦人。SDK应该要与IDE分离。 - samael
13
我完全不知道Android Studio有自己的SDK版本,它位于AppData下面。这太令人困惑了! - pqvst
我不得不安装Extras/Android支持库,重新启动SDK管理器,然后Android支持存储库才出现。 - Leos Literak
这对我解决了关于“com.android.support:appcompat-v7:19.+”的错误。 - Nick Westgate
嗯,我也有类似的困惑,当我注意到我的Ubuntu机器上有多个Android SDK实例时。因此,我怀疑AndroidStudio创建了自己的实例。目前我运行的是AS v.2.1.2,这个问题仍然存在。我想知道开发团队是否计划在不久的将来修复它,或者他们认为这是一个功能 :) - Sold Out

27

如果您正在无头 CI 上运行并通过命令行安装 Android SDK,请确保在 --filter 参数中包含 m2repository 包:

android update sdk --no-ui --filter platform-tools,build-tools-19.0.1,android-19,extra-android-support,extra-android-m2repository,extra-google-m2repository

更新

从Android SDK Manager rev. 22.6.4开始,这个方法已经不再有效。请尝试使用以下方法代替:

android list sdk --all

您将获得所有可用 SDK 包的列表。从上面的第一个命令(“Google Repository”和可能丢失的其他组件)中查找组件的数字值。

使用它们的数字值安装这些软件包:

android update sdk --no-ui --all --filter <num>

更新 #2(2017年9月)

今年早些时候发布的“新” Android SDK 工具中,android 命令现已被弃用,并且类似的功能已经转移到一个名为 sdkmanager 的新工具中:

列出已安装的组件:

sdkmanager --list

更新已安装的组件:

sdkmanager --update

安装新组件(例如构建工具版本 26.0.0):

sdkmanager 'build-tools;26.0.0'

感谢您提供这个好的命令行!不幸的是,现在(来自GUI中的Android SDK Manager rev. 22.6.4),我得到的响应是:“错误:忽略未知的软件包过滤器'platform-tools'”,同样适用于'android-19'和'extra-android-support'。谢谢! - sdaau
我得到了“SWT文件夹'/opt/android-sdk-linux/tools/lib/arm'不存在”的错误信息。 - Marian Klühspies
3
谢谢你的提示。我运行了命令:android list sdk --all |grep -i repos,它给出了 "98-Android Support Repository, revision 6""106-Google Repository, revision 11"。然后我运行了 android update sdk -u -a -t 98,106 安装了这两个软件包,问题终于解决了(我正在使用 adt-bundle-linux-x86-20140702.zip,不知道它是哪个 SDK 管理器版本)。 - Mateusz Szulc
1
你在这里提到安装Google Repository的必要性,拯救了许多人的生命。谢谢你。 - yati sagade
是的,我的问题也是由于缺少以下两个库: 142- Android Support Repository,版本号21 150- Google Repository,版本号22 - Bruce Lim
--all 命令对我很有帮助(在无头环境中无法构建 Google Play 服务):android update sdk --no-ui --all --filter 147,148,154,155 - Kris Krause

5

这些依赖项不存在于Maven Central仓库中(参见此处)。


2
compileSdkVersion 17
targetSdkVersion 17

将编译版本从18更改为17

compile "com.android.support:support-v4:17.0.+"
compile "com.android.support:appcompat-v7:17.0.+"

2
除了Kassim的回答之外:
Peter说,它们不会在Maven Central中。
要么使用maven-android-sdk-deployer将库部署到您的本地存储库,
要么从Android SDK Manager下载Android Support Repository(在Extras中),并且支持库的M2 repo将下载到您的Android SDK目录中。
我还必须在Android SDK Manager中更新“支持库的本地Maven存储库”。

1

为了响应@friederbluemle的建议,如果您已经安装了Android SDK工具,则还可以直接从命令行启动SDK管理器:

$ android

然后在弹出的界面中,选择需要安装的tools/repositories,例如您的情况下是support library repo。


1
  1. 安装Android SDK Manager
  2. 检查是否安装构建工具。安装API 23。
  3. 从Android SDK管理器下载“Android支持库”
  4. 移除cordova-plugin-android-support-v4插件
  5. 构建

1
我在Android Studio 2.1.1的Gradle Build选项卡中收到了这个消息。我从SDK Manager安装了很多文件,但没有帮助。
我需要点击下一个选项卡"Gradle Sync"。那里有一个链接"Install Repository and sync project",它安装了"Android Support Repository"。

1
尝试关闭防火墙,这对我有效。似乎Android Studio想要下载一些依赖项,而我们的防火墙阻止了它的下载。请注意,关闭防火墙可能会降低计算机的安全性。如果你有更多时间,可以手动允许Android Studio绕过防火墙,这样你就可以打开防火墙,同时允许Android Studio下载任何它想要的东西。

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