修改
这个问题似乎以某种方式消失了,可能是由于新的Gradle构建系统变得更加成熟。
我有两个独立的Android项目:
第一个项目是使用'android-library'插件的Android库,它取决于 support-library-v4:r18 。来自 build.gradle 中依赖项的摘录:
compile 'com.android.support:support-v4:18.0.0'
支持库是通过 Android SDK Manager 安装的 Android支持存储库获取的,如here所述。然后通过运行:gradle uploadArchives
我验证了,确实库 .aar 可以在本地maven存储库下使用。
第二个项目是一个Android应用程序,使用Gradle的'android'插件,它引用了第一个项目生成的库的 maven依赖。以下是来自 build.gradle 的代码段:
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
compile 'com.android.support:support-v4:18.0.0'
compile 'com.example:cool-lib:1.0.0-SNAPSHOT'
}
注意:这两个项目完全分开。意思是, 它们不是同一个根项目的子项目。
当我尝试通过运行gradle assemble
我收到以下错误:
Could not find com.google.android:support-v4:r18.
Required by:
com.example:app-project:unspecified > com.example:cool-lib:1.0.0-SNAPSHOT
我检查了 cool-lib 的 .pom 文件,在我的本地maven repo文件夹下,我发现它具有以下依赖项:
<dependency>
<groupId>com.android.support</groupId>
<artifactId>support-v4</artifactId>
<version>18.0.0</version>
<scope>compile</scope>
</dependency>
出于某种原因,Gradle尝试从maven中央存储库获取 lib-project 的支持库-v4 r18 ,而不是从 Android支持存储库获取它。它失败,因为 support-library-v4 的Maven Central中的最新版本是 r7 。
是否有办法强制Gradle严格从 Android支持存储库中获取 support-library-v4 r18 以用于外部Android库哪些是从Maven Central引用的?
答案 0 :(得分:38)
您需要从SDK管理器安装Android Support Repository
。之后,Gradle将能够从${SDK_HOME}\extras\android\m2repository\
解析支持库。
答案 1 :(得分:6)
确保在主项目文件夹中有local.properties文件,sdk.dir变量指向Android SDK。 (在mac上测试)
答案 2 :(得分:2)
你需要安装Android支持存储库,正如madhead所说。但就我而言,它缺席了。您应该转到工具 - >管理加载项网站...并检查所有&#34; Google Inc.&#34;站点。然后Android支持存储库将出现在包列表中,您可以安装它。
答案 3 :(得分:2)