73

我想用Gradle构建我的第一个项目,我认为我的gradle文件和设置是正确的。Gradle构建Android项目“无法解决所有依赖项”错误

我只使用一个模块和支持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 

预先感谢您!

回答

92

正如彼得说,他们将不会在Maven的中央

从Android SDK管理器下载“Android的支持库”和支持库的Maven的回购将被下载到您的Android SDK目录(见'附加' 文件夹)

到库部署到你的本地仓库的.m2可以使用maven-android-sdk-deployer

2017年编辑:

你现在可以参考谷歌在线M2回购

repositories { 
google() 
jcenter() 
} 
+12

从下载 “Android的支持库”“ Android SDK Manager“明确地解决了我在Android Studio 0.4.3项目中遇到的这个问题。它仍然只是有点可惜关于Gradle的弃用消息,但这是另一个故事,所以我打开[这个问题](http://stackoverflow.com/questions/21496956/gradle-deprecation-relying-on-packaging-to-define - 扩展的主要艺术) –

+0

你可以请解释一步一步:我的意思是首先下载'maven-android-sdk-deployer',第二个是什么? –

+0

@ H.Aqjn我重新安排了一个更好的阅读答案(我认为),如果你使用Gradle,你应该没问题,只需从SDK管理器下载支持库 – kassim

5

这些依赖关系在Maven Central中不存在(see this)。

49

去哪里安装Android Studio中(对我来说这C:\Users\username\AppData\Local\Android\android-studio\下)和开放sdk\tools,然后运行android.bat。从这里,更新并下载任何缺少的构建工具,并确保在更新下更新Android支持库和Android支持库。 SDK Manager完成后重新启动Android Studio。

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

+7

这真的帮助我,我期望Android Studio要使用我手动安装在我的机器上的Android SDK。让IDE使用自己的Android SDK而不是使用开发人员定义的Android SDK真的很烦人。 SDK应该独立于IDE。 – samael

+12

我没有想到Android Studio在AppData下有它自己的SDK版本。这是超级混乱! – pqvst

+1

让我发疯,谢谢! – Maxime

26

如果在无头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管理器REV的。 22.6.4这不起作用了。试试这个:

android list sdk --all 

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

利用其数值安装包:

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

更新#2(9月2017)

有了 “新” 的Android SDK是今年早些时候发布的工具,该android命令现在已被弃用,并且类似的功能已被移至称为sdkmanager的新工具:

列出安装的组件:

sdkmanager --list 

更新已安装的组件:

sdkmanager --update 

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

sdkmanager 'build-tools;26.0.0' 
+0

感谢您的好命令行!不幸的是,现在(Android SDK Manager修订版22.6.4(来自About in GUI))我得到的回应是:'错误:忽略未知的包过滤器'platform-tools',也适用于''android-19''和'extra-android-support'。干杯! – sdaau

+0

@sdaau我刚刚更新了我的答案,请检查是否有帮助。 – friederbluemle

+0

我收到了“SWT文件夹”/ opt/android-sdk-linux/tools/lib/arm'不存在 –

1

呼应@friederbluemle,你也可以只通过命令行启动SDK管理器,如果你已经安装了Android SDK工具:

$ android

,然后在弹出的用户界面中,选择需要安装的工具/存储库 - 在您的情况下,支持库回购

1

在应用程序的build.gradle文件中编写以下语句。

com.android.support:appcompat-v7:18.0.+

就是这样

1

尝试关闭您的防火墙it works for me。看来,Android工作室想下载一些依赖关系,我们的防火墙阻止它下载它,just be aware that turning your firewall off may lower the security of your computer。如果你有更多的时间,你可以手动让你的android studio绕过你的防火墙,这样你可以打开你的防火墙,同时允许android studio下载任何它想要的东西。

2
compileSdkVersion 17 
targetSdkVersion 17 

变化从18编译版本17

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

除了卡西姆的回答是:

As Peter says, they won't be in Maven Central

Either use maven-android-sdk-deployer to deploy the libraries to your local repository

Or from Android SDK Manager download the Android Support Repository (in Extras) and an M2 repo of the support libraries will be downloaded to your Android SDK directory

我也不得不更新 “本地Maven仓库用于支持库” 中Android SDK管理器。

1

我在Android Studio 2.1.1的Gradle Build选项卡中有这条消息。我从SDK管理器安装了很多文件,但它没有帮助。

我需要点击下一个标签“Gradle Sync”。有一个链接“Install Repository and sync project”安装了“Android Support Repository”。

1
  1. 安装Android SDK经理
  2. 检查是否安装了构建工具。从Android SDK管理器安装API 23
  3. 下载 'Android的支持库'
  4. 删除科尔多瓦 - 插件,Android的支持-V4
  5. 构建
相关问题