EDIT:
Эта проблема как-то исчезла, возможно, из-за того, что новая система сборки Gradle стала более зрелой.
У меня есть два отдельных проекта Android:
Первый проект - это Android-библиотека с использованием плагина android-library для Gradle, который зависит от support-library-v4: r18. Фрагмент из зависимостей в build.gradle:
compile 'com.android.support:support-v4:18.0.0'
Библиотека поддержки извлекается из Репозитория поддержки Android, установленного через Android SDK Manager, как описано здесь. Затем этот проект создается и публикуется в локальном репозитории maven путем запуска: gradle uploadArchives
Я проверил, и в самом деле библиотека .aar затем доступна в локальном репозитории maven.
Второй проект - Android-приложение с плагином android для Gradle, которое ссылается на зависимость 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
Я проверил файл .pom cool-lib в моей локальной папке maven repo, и я увидел, что он имеет следующую зависимость:
<dependency>
<groupId>com.android.support</groupId>
<artifactId>support-v4</artifactId>
<version>18.0.0</version>
<scope>compile</scope>
</dependency>
По какой-то причине Gradle пытается получить библиотеку поддержки v4 r18 для lib-проекта из центрального хранилища maven вместо того, чтобы получать его из Android Support Repository. Он терпит неудачу, так как последняя версия в Maven Central поддержки-библиотеки-v4 r7.
Есть ли способ заставить Gradle строго выбирать поддержку-library-v4 r18 из Android Support Repository также для внешних библиотек Android, на которые ссылаются Maven Central?