编辑:
这个问题似乎以某种方式自行消失了,可能是由于新的 Gradle 构建系统变得更加成熟。
我有两个独立的 Android 项目:
第一个项目是一个使用Gradle的 'android-library'插件的 Android 库,它依赖于support-library-v4:r18。build.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 库?