20

编辑:

这个问题似乎以某种方式自行消失了,可能是由于新的 Gradle 构建系统变得更加成熟。

我有两个独立的 Android 项目:

第一个项目是一个使用Gradle的 'android-library'插件的 Android 库,它依赖于support-library-v4:r18build.gradle依赖项的片段:

compile 'com.android.support:support-v4:18.0.0'

支持库是从通过Android SDK Manager安装的Android Support Repository获取的,如此所述。然后通过运行以下命令构建并发布该项目到 Maven 本地存储库:gradle uploadArchives

我验证了库.aar确实可以在本地 maven 存储库下使用。

第二个项目是一个使用Gradle的“android”插件的 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的支持 library-v4 r18,而不是从Android Support Repository获取它。它失败了,因为 Maven Central 中support-library-v4的最新版本是r7

有没有办法强制 Gradle 严格从Android Support Repository获取support-library-v4 r18也适用于从 Maven Central 引用的外部 Android 库?

4

4 回答 4

38

您需要Android Support Repository从 SDK 管理器安装。之后,Gradle 将能够从${SDK_HOME}\extras\android\m2repository\.

于 2013-12-28T14:17:25.040 回答
6

确保在主项目文件夹中有 local.properties 文件,并且 sdk.dir 变量指向 Android SDK。(在mac上测试)

于 2013-09-09T11:58:16.693 回答
2

参考:https ://github.com/simpligility/maven-android-sdk-deployer

准确下载支持库

于 2015-04-23T07:17:31.050 回答
2

正如 madhead 所说,您需要安装 Android Support Repository。但就我而言,它不存在。你应该去工具->管理附加站点...并检查所有“谷歌公司”。网站。然后 Android Support Repository 将出现在包列表中,您可以安装它。

于 2014-10-05T11:20:15.107 回答